apply LayoutMgr in app-common 24/35524/3
authorJehun Lim <jehun.lim@samsung.com>
Tue, 17 Feb 2015 06:09:58 +0000 (15:09 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Tue, 17 Feb 2015 10:56:58 +0000 (19:56 +0900)
Change-Id: I7d799f1910b51f76c9df0e0624b0e45658a1d3fc
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
18 files changed:
CMakeLists.txt
data/view/allsource_view.edc
data/widget/button.edc
data/widget/gengrid.edc
include/common/def.h
include/mgr/layout_mgr.h [deleted file]
include/mgr/source_mgr.h
include/view/allsource_view.h
include/view/nearby_layout.h
include/view/plugged_layout.h
packaging/org.tizen.source-list-tv-ref.spec
src/main.cpp
src/mgr/external.cpp
src/mgr/layout_mgr.cpp [deleted file]
src/view/allsource_view.cpp
src/view/menu_view.cpp
src/view/nearby_layout.cpp
src/view/plugged_layout.cpp

index e1f9bfe..1b90fed 100644 (file)
@@ -5,12 +5,10 @@ INCLUDE(FindPkgConfig)
 pkg_check_modules(HOMEPANEL_PKGS REQUIRED
        application-common
        capi-appfw-application
-#      capi-system-usbdevice
        dlog
        edje
        elementary
        evas
-       utilX
        eina
        aul
 )
@@ -61,10 +59,8 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include/view)
 ADD_EXECUTABLE(${PROJECT_NAME}
        src/main.cpp
        src/util/util.cpp
-       src/mgr/layout_mgr.cpp
        src/mgr/source_mgr.cpp
        src/mgr/SourceInfo.cpp
-#      src/mgr/usb.cpp
        src/mgr/external.cpp
        src/view/allsource_view.cpp
        src/view/plugged_layout.cpp
index eeefb48..53899ef 100644 (file)
@@ -333,7 +333,7 @@ group {
 }/*group*/
 
 group {
-       name: GRP_CONTENT;
+       name: GRP_PLUGGED_CONTENT;
        parts {
                part {
                        name: PART_CONTENT_CONTENT;
@@ -348,21 +348,6 @@ group {
                                        relative: 1.0 1.0;
                                }
                        }
-               }/*part*/
-       }/*parts*/
-}/*group*/
-
-group {
-       name: GRP_NO_PLUG_SRC_LABEL;
-       parts {
-               part {
-                       name: "bg";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               color: RGBA_NO_PLUG_BG;
-                       }
                }
                part {
                        name: "no_src_text_p";
@@ -374,11 +359,11 @@ group {
                                fixed: 1 1;
                                align:0.5 0.0;
                                rel1 {
-                                       to: "bg";
+                                       to: PART_CONTENT_CONTENT;
                                        relative: 0.5 0.0;
                                }
                                rel2 {
-                                       to: "bg";
+                                       to: PART_CONTENT_CONTENT;
                                        relative: 0.5 0.0;
                                }
                        }
@@ -393,7 +378,6 @@ group {
                                min: SZ_NO_PLUG_SRC_TEXT_LINE1;
                                fixed: 1 1;
                                text {
-                                       text: "No plugged source";
                                        font: "TizenSans:style=Medium";
                                        size: 35;
                                        min: 1 1;
@@ -420,7 +404,6 @@ group {
                                min: SZ_NO_PLUG_SRC_TEXT_LINE2;
                                fixed: 1 1;
                                text {
-                                       text: "Check connection status or install any cloud service.";
                                        font: "TizenSans:style=Regular";
                                        size: 24;
                                        min: 1 1;
@@ -441,10 +424,23 @@ group {
 }/*group*/
 
 group {
-       name: GRP_NO_NEAR_SRC_LABEL;
-       inherit: GRP_NO_PLUG_SRC_LABEL;
+       name: GRP_NEARBY_CONTENT;
        parts {
                part {
+                       name: PART_CONTENT_CONTENT;
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                       }
+               }
+               part {
                        name: "no_src_text_p";
                        type: SPACER;
                        scale: 1;
@@ -454,11 +450,11 @@ group {
                                fixed: 1 1;
                                align:0.5 0.0;
                                rel1 {
-                                       to: "bg";
+                                       to: PART_CONTENT_CONTENT;
                                        relative: 0.5 0.0;
                                }
                                rel2 {
-                                       to: "bg";
+                                       to: PART_CONTENT_CONTENT;
                                        relative: 0.5 0.0;
                                }
                        }
@@ -517,12 +513,19 @@ group {
                }/*part*/
                part {
                        name: PART_NO_SRC_TEXT_LINE3;
-                       type: SWALLOW;
+                       type: TEXT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
+                               color: 134 134 134 255;
                                min: SZ_NO_NEAR_SRC_TEXT_LINE3;
                                fixed: 1 1;
+                               text {
+                                       font: "TizenSans:style=Regular";
+                                       size: 24;
+                                       min: 1 1;
+                                       align: 0.5 0.5;
+                               }
                                align: 0.5 0.0;
                                rel1 {
                                        to: PART_NO_SRC_TEXT_LINE2;
@@ -572,46 +575,6 @@ group {
                                }
                        }
                }/*part*/
-       }/*parts*/
-}/*group*/
-group {
-       name: GRP_NO_NEAR_SRC_SEPARATOR;
-       parts {
-               part {
-                       name: "bg";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               visible: 0;
-                               min: 2 30;
-                               max: 2 30;
-                               fixed: 1 1;
-                       }
-               }
-               part {
-                       name: "separator";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               visible: 1;
-                               color: 255 255 255 (255*0.15);
-                               min: SZ_NO_NEAR_SRC_SEPARATOR;
-                               max: SZ_NO_NEAR_SRC_SEPARATOR;
-                               fixed: 1 1;
-                               align: 0.5 0.5;
-                               rel1 {
-                                       to: "bg";
-                                       relative: 0.5 0.5;
-
-                               }
-                               rel2 {
-                                       to: "bg";
-                                       relative: 0.5 0.5;
-                               }
-                       }
-               }/*part*/
 
        }/*parts*/
-}
+}/*group*/
index 24ed071..029bad5 100644 (file)
@@ -83,6 +83,7 @@ group {
                image: IMG_MENU_BTN_BG COMP;
                image: IMG_MENU_BTN_ICO_PLUG COMP;
        }
+       data.item: "focus_highlight" "on";
        parts {
                part {
                        name: "button_image";
@@ -302,6 +303,7 @@ group {
 
 group {
        name: "elm/button/base/"BTN_STYLE_SET_UP_NETWORK;
+       data.item: "focus_highlight" "on";
        parts {
                part {
                        name: "bg";
@@ -450,6 +452,7 @@ group {
 
 group {
        name: "elm/button/base/menu_ctx_sel";
+       data.item: "focus_highlight" "on";
        images {
                image: IMG_MENU_BTN_ICO_FUNC_NOR COMP;
                image: IMG_MENU_BTN_ICO_FUNC_FOC COMP;
index f71eabe..e4a9774 100644 (file)
@@ -59,6 +59,7 @@ group {
        name: "elm/gengrid/item/source/default";
        data.item: "contents" "item_ico";
        data.item: "texts" "item_name item_type";
+       data.item: "focus_highlight" "on";
        images {
                image: IMG_ICO_USB COMP;
        }
index fb5bb7b..d890298 100644 (file)
@@ -17,6 +17,9 @@
 #ifndef __DEF_H__
 #define __DEF_H__
 
+#define KEY_BACK "Escape"
+#define KEY_MENU "Super_L"
+
 /* for source-list edc */
 #define GRP_BG "bg"
 
@@ -29,6 +32,8 @@
 #define PART_UTILITY_LOADING "part_utility_loading"
 
 #define GRP_CONTENT "grp_allsrc_content"
+#define GRP_PLUGGED_CONTENT "grp_plugged_content"
+#define GRP_NEARBY_CONTENT "grp_nearby_content"
 #define PART_CONTENT_CONTENT "part_content_content"
 
 #define GRP_NO_PLUG_SRC_LABEL "grp_no_plug_src_label"
diff --git a/include/mgr/layout_mgr.h b/include/mgr/layout_mgr.h
deleted file mode 100644 (file)
index 09b7fbf..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __LAYOUTMGR_H__
-#define __LAYOUTMGR_H__
-
-
-#include "source_mgr.h"
-
-
-typedef void (*sig_event_cb)(Evas_Object *base, int signal);
-
-enum user_signals {
-       E_HIGHLIGHT = 0,
-       E_RETURN
-};
-
-struct layout_class {
-       Evas_Object * (*create)(Evas_Object *base,
-                       sig_event_cb ptr);
-       void (*destory)(Evas_Object *layout);
-       void (*pause)(Evas_Object *layout);
-       void (*resume)(Evas_Object *layout);
-       TUpdateUI update;
-};
-
-struct layoutmgr;
-
-struct layoutmgr *layoutmgr_init(Evas_Object *base, sig_event_cb ptr);
-void layoutmgr_fini(struct layoutmgr *lmgr);
-
-Evas_Object *layoutmgr_create_layout(struct layoutmgr *lmgr,
-               struct layout_class *lclass);
-void layoutmgr_destory_layout(struct layout_class *lclass,
-               Evas_Object *layout);
-
-void layoutmgr_pause_layout(struct layout_class *lclass, Evas_Object *layout);
-void layoutmgr_resume_layout(struct layout_class *lclass, Evas_Object *layout);
-
-void layoutmgr_update_layout(struct layout_class *lclass, Evas_Object *layout,
-               enum update_ui update_type, void *data);
-
-#endif /* __LAYOUTMGR_H__ */
index 8114dc3..ab42253 100644 (file)
@@ -32,7 +32,7 @@ enum update_ui {
 typedef void (*TUpdateUI)(void *user_data, void *data, enum update_ui update_type);
 
 
-class CSourceMgr {     
+class CSourceMgr {
 private:
        static CSourceMgr *instance;
        struct SSourceMgr *m;
index ef9a598..1fc7e97 100644 (file)
 
 #define  ALLSOURCE_VIEW  "ALLSOURCE_VIEW"
 
+typedef void (*sig_event_cb)(Evas_Object *base, int signal);
+
+enum user_signals {
+       E_HIGHLIGHT = 0,
+       E_RETURN
+};
 
 enum launch_mode {
        SRC_PLUGGED = 0,
        SRC_NEARBY,
 };
 
-
 class CAllSourceView : public CBaseView {
 private:
        struct SAllSourceView* m;
index b15bde7..0ec89f9 100644 (file)
 #ifndef __NEARBY_LAYOUT_H__
 #define __NEARBY_LAYOUT_H__
 
-struct layout_class *get_nearby_lclass(void);
+class CNearbyLayout : public CBaseLayout {
+private:
+       struct SNearbyLayout *m;
+
+protected:
+       virtual void t_OnShow(void);
+       virtual void t_OnHide(void);
+
+private:
+       static void sm_CbGridMouseMove(void *data,
+               Evas *e, Evas_Object *obj, void *ev_info);
+       static void sm_CbGridKeyDown(void *data,
+               Evas *e, Evas_Object *obj, void *ev_info);
+       static void sm_CbGridFocused(void *data,
+               Evas_Object *obj, void *ev_info);
+       static void sm_CbBtnKeyDown(void *data, Evas *e, Evas_Object *obj, void *ev_info);
+       static void sm_CbBtnFocused(void *data, Evas_Object *obj, void *ev_info);
+
+       static Eina_Bool sm_CbTimerDelItem(void *data);
+       void m_TimerDelItem(void);
+
+       void m_LaunchSettingApp(void);
+       void m_AddSetNetworkButton(void);
+       void m_AddNoSrcUtility(void);
+       void m_DelNoSrcUtility(void);
+       void m_DrawNoSrcUtility(void);
+
+       void m_DrawNoContentArea(void);
+       void m_DrawContentArea(void);
+
+       Evas_Object *m_DrawGengrid(Evas_Object *layout);
+
+public:
+       CNearbyLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+       ~CNearbyLayout() {}
+
+       bool Create(CLayoutMgr *mgr, void *data);
+       virtual void Destroy(void);
+
+       void Update(void *data, enum update_ui type);
+};
 
 #endif /* __NEARBY_LAYOUT_H__ */
index 7dcc050..99e0213 100644 (file)
 #ifndef __PLUGGED_LAYOUT_H__
 #define __PLUGGED_LAYOUT_H__
 
-struct layout_class *get_plugged_lclass(void);
+class CPluggedLayout : public CBaseLayout {
+private:
+       struct SPluggedLayout *m;
+
+protected:
+       virtual void t_OnShow(void);
+       virtual void t_OnHide(void);
+
+private:
+       static void sm_CbGridMouseMove(void *data,
+               Evas *e, Evas_Object *obj, void *ev_info);
+       static void sm_CbGridKeyDown(void *data,
+               Evas *e, Evas_Object *obj, void *ev_info);
+       static void sm_CbGridFocused(void *data,
+               Evas_Object *obj, void *ev_info);
+
+       static Eina_Bool sm_CbTimerDelItem(void *data);
+       void m_TimerDelItem(void);
+
+       Evas_Object *m_DrawGengrid(Evas_Object *layout);
+       void m_DrawNoContentArea(void);
+       void m_DrawContentArea(void);
+
+public:
+       CPluggedLayout(const char *pLayoutId) : CBaseLayout(pLayoutId), m(0) {}
+       virtual ~CPluggedLayout() {}
+
+       bool Create(CLayoutMgr *mgr, void *data);
+       virtual void Destroy(void);
+
+       void Update(void *data, enum update_ui type);
+};
 
 #endif /* __PLUGGED_LAYOUT_H__ */
index 0e65921..d232be3 100644 (file)
@@ -12,12 +12,10 @@ BuildRequires:  pkgconfig(application-common)
 BuildRequires:  gettext-tools
 BuildRequires:  edje-bin
 BuildRequires:  pkgconfig(capi-appfw-application)
-#BuildRequires:  pkgconfig(capi-system-usbdevice)
 BuildRequires:  pkgconfig(elementary)
 BuildRequires:  pkgconfig(ecore)
 BuildRequires:  pkgconfig(evas)
 BuildRequires:  pkgconfig(eina)
-BuildRequires:  pkgconfig(utilX)
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(aul)
index 98ceb69..9279563 100644 (file)
 #include <app.h>
 #include <Elementary.h>
 #include <Ecore_X.h>
-#include <utilX.h>
 #include <dlog.h>
 #include "dbg.h"
 #include "def.h"
 #include "BaseView.h"
 #include "ViewMgr.h"
 #include "BaseApp.h"
+#include "BaseLayout.h"
+#include "LayoutMgr.h"
 #include "allsource_view.h"
 #include "menu_view.h"
 
@@ -32,7 +33,7 @@ static Evas_Object *_add_win(const char *name)
 {
        Evas_Object *win;
 
-       win = elm_win_add(NULL, name, ELM_WIN_BASIC);
+       win = elm_win_util_standard_add(name, NULL);
        if (!win) {
                _ERR("failed to create window!");
                return NULL;
@@ -117,8 +118,12 @@ public:
                if (!m_win)
                        return;
 
-               evas_object_del(m_bg);
                CViewMgr::Finalize();
+
+               delete pAllSourceView;
+               delete pMenuView;
+
+               evas_object_del(m_bg);
                evas_object_del(m_win);
                m_win = NULL;
        }
index 5fdff4e..fe1c4c0 100644 (file)
@@ -54,7 +54,7 @@ public:
        }
        virtual bool CheckPlug(void)
        {
-               return true;
+               return false;
        }
        virtual const char *Name(void)
        {
diff --git a/src/mgr/layout_mgr.cpp b/src/mgr/layout_mgr.cpp
deleted file mode 100644 (file)
index 48e2345..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <Elementary.h>
-
-#include "dbg.h"
-#include "ViewMgr.h"
-#include "layout_mgr.h"
-
-struct layoutmgr {
-       Evas_Object *parent;
-       sig_event_cb ptr;
-};
-
-struct layoutmgr *layoutmgr_init(Evas_Object *base, sig_event_cb ptr)
-{
-       struct layoutmgr *lmgr;
-
-       if (!base)
-               return NULL;
-
-       lmgr = (layoutmgr*)calloc(1, sizeof(*lmgr));
-       if (!lmgr) {
-               _ERR("create layoutmgr failed.");
-               return NULL;
-       }
-
-       lmgr->parent = base;
-       lmgr->ptr = ptr;
-
-       return lmgr;
-}
-
-void layoutmgr_fini(struct layoutmgr *lmgr)
-{
-       if (!lmgr)
-               return;
-
-       free(lmgr);
-}
-
-Evas_Object *layoutmgr_create_layout(struct layoutmgr *lmgr,
-               struct layout_class *lclass)
-{
-       if (!lmgr || !lclass)
-               return NULL;
-
-       if (!lclass->create)
-               return NULL;
-
-       return lclass->create(lmgr->parent, lmgr->ptr);
-}
-
-void layoutmgr_destory_layout(struct layout_class *lclass,
-               Evas_Object *layout)
-{
-       if (!layout || !lclass)
-               return;
-
-       if (!lclass->destory)
-               return;
-
-       lclass->destory(layout);
-}
-
-void layoutmgr_pause_layout(struct layout_class *lclass,
-               Evas_Object *layout)
-{
-       if (!layout || !lclass)
-               return;
-
-       if (!lclass->pause)
-               return;
-
-       lclass->pause(layout);
-}
-
-void layoutmgr_resume_layout(struct layout_class *lclass,
-               Evas_Object *layout)
-{
-       if (!layout || !lclass)
-               return;
-
-       if (!lclass->resume)
-               return;
-
-       lclass->resume(layout);
-}
-
-void layoutmgr_update_layout(struct layout_class *lclass,
-               Evas_Object *layout,
-               enum update_ui update_type, void *data)
-{
-       if (!layout || !lclass)
-               return;
-
-       if (!lclass->update)
-               return;
-
-       lclass->update(layout, data, update_type);
-}
index 7b3378b..76bb18f 100644 (file)
 #include <Elementary.h>
 #include <app.h>
 #include <aul.h>
-#include <utilX.h>
 
 #include "AppCommon.h"
 #include "BaseView.h"
 #include "ViewMgr.h"
-#include "layout_mgr.h"
+#include "BaseLayout.h"
+#include "LayoutMgr.h"
 #include "source_mgr.h"
-#include "plugged_layout.h"
-#include "nearby_layout.h"
 #include "util.h"
 #include "def.h"
 #include "dbg.h"
 #include "allsource_view.h"
+#include "plugged_layout.h"
+#include "nearby_layout.h"
 
 #define PRIV "priv"
 #define TEXT_PLUGGED "PLUGGED"
 #define TEXT_NEARBY "NEARBY"
 
+#define LAYOUT_PLUGGED "LAYOUT_PLUGGED"
+#define LAYOUT_NEARBY "LAYOUT_NEARBY"
+
 struct SAllSourceView {
        Evas_Object *base;
        Evas_Object *plug_btn;
@@ -43,8 +46,13 @@ struct SAllSourceView {
        Evas_Object *plug_layout;
        Evas_Object *near_layout;
        CViewMgr *vmgr;
-       struct layoutmgr *lmgr;
        enum launch_mode mode;
+
+       CLayoutMgr *pLayoutMgr;
+
+       CPluggedLayout *pPluggedLayout;
+       CNearbyLayout *pNearbyLayout;
+
        SAllSourceView() {
                memset(this, 0, sizeof(SAllSourceView));
        }
@@ -125,12 +133,7 @@ static void _plug_btn_focus_cb(void *data, Evas_Object *obj, void *ev)
        priv = (SAllSourceView*)data;
        priv->focus_btn = obj;
 
-       layoutmgr_pause_layout(get_nearby_lclass(), priv->near_layout);
-       elm_object_part_content_unset(priv->base, PART_CONTENT);
-
-       elm_object_part_content_set(priv->base, PART_CONTENT,
-                       priv->plug_layout);
-       layoutmgr_resume_layout(get_plugged_lclass(), priv->plug_layout);
+       priv->pLayoutMgr->Show(LAYOUT_PLUGGED);
 }
 
 static void _near_btn_focus_cb(void *data, Evas_Object *obj, void *ev)
@@ -143,12 +146,7 @@ static void _near_btn_focus_cb(void *data, Evas_Object *obj, void *ev)
        priv = (SAllSourceView*)data;
        priv->focus_btn = obj;
 
-       layoutmgr_pause_layout(get_plugged_lclass(), priv->plug_layout);
-       elm_object_part_content_unset(priv->base, PART_CONTENT);
-
-       elm_object_part_content_set(priv->base, PART_CONTENT,
-                       priv->near_layout);
-       layoutmgr_resume_layout(get_nearby_lclass(), priv->near_layout);
+       priv->pLayoutMgr->Show(LAYOUT_NEARBY);
 }
 
 static void _menu_btn_mousemove(void *data, Evas *e, Evas_Object *obj, void *ei)
@@ -214,40 +212,6 @@ static void _get_signal_from_layout(Evas_Object *base, int signal)
                elm_object_focus_set(priv->focus_btn, EINA_TRUE);
 }
 
-static void _del_content_layout(struct SAllSourceView *priv)
-{
-       if (!priv)
-               return;
-
-       layoutmgr_destory_layout(get_plugged_lclass(), priv->plug_layout);
-       priv->plug_layout = NULL;
-
-       layoutmgr_destory_layout(get_nearby_lclass(), priv->near_layout);
-       priv->near_layout = NULL;
-}
-
-static bool _create_content_layout(struct SAllSourceView *priv)
-{
-       if (!priv)
-               return false;
-
-       priv->plug_layout = layoutmgr_create_layout(priv->lmgr,
-                       get_plugged_lclass());
-       if (!priv->plug_layout)
-               return false;
-
-       priv->near_layout = layoutmgr_create_layout(priv->lmgr,
-                       get_nearby_lclass());
-       if (!priv->near_layout) {
-               layoutmgr_destory_layout(get_plugged_lclass(),
-                               priv->plug_layout);
-               priv->plug_layout = NULL;
-               return false;
-       }
-
-       return true;
-}
-
 static void _update_src_list(void *user_data, void *data, enum update_ui type)
 {
        Evas_Object *base;
@@ -268,17 +232,14 @@ static void _update_src_list(void *user_data, void *data, enum update_ui type)
        if (type == SRC_PLUG_ADD_ONE
                        || type == SRC_PLUG_DEL_ONE
                        || type == SRC_UPDATE_ALL)
-               layoutmgr_update_layout(get_plugged_lclass(),
-                               priv->plug_layout, type, data);
+               priv->pPluggedLayout->Update(data, type);
 
        if (type == SRC_NEAR_ADD_ONE
                        || type == SRC_NEAR_DEL_ONE
                        || type == SRC_UPDATE_ALL)
-               layoutmgr_update_layout(get_nearby_lclass(),
-                               priv->near_layout, type, data);
+               priv->pNearbyLayout->Update(data, type);
 }
 
-
 Evas_Object *CAllSourceView::Base(void)
 {
        ASSERT(m);
@@ -302,18 +263,32 @@ bool CAllSourceView::Create(void *data)
                _CHECK(base = _add_layout(win));
                _CHECK(m = new SAllSourceView);
                _CHECK(CSourceMgr::Initialize(_update_src_list, base));
-               _CHECK(m->lmgr = layoutmgr_init(base, _get_signal_from_layout))
+               _CHECK(m->pLayoutMgr = new CLayoutMgr);
+               _CHECK(m->pLayoutMgr->Create(base, NULL));
+               _CHECK(m->pPluggedLayout = new CPluggedLayout(LAYOUT_PLUGGED));
+               _CHECK(m->pNearbyLayout = new CNearbyLayout(LAYOUT_NEARBY));
+               _CHECK(m->pPluggedLayout->Create(m->pLayoutMgr, (void *)_get_signal_from_layout));
+               _CHECK(m->pNearbyLayout->Create(m->pLayoutMgr, (void *)_get_signal_from_layout));
+               _CHECK(m->pLayoutMgr->AddLayout(m->pPluggedLayout));
+               _CHECK(m->pLayoutMgr->AddLayout(m->pNearbyLayout));
                _CHECK(_add_menu_area(base, m))
-               _CHECK(_create_content_layout(m))
                _WHEN_SUCCESS{
                        m->vmgr = vmgr;
                        m->base = base;
                        m->mode = (launch_mode)(size_t)data;
+                       evas_object_data_set(base, PRIV, m);
+                       CSourceMgr::GetInstance()->Refresh();
                        CBaseView::Create(NULL);
                }
                _CHECK_FAIL{}
-               _CHECK_FAIL{}
-               _CHECK_FAIL{ layoutmgr_fini(m->lmgr); }
+               _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pNearbyLayout); }
+               _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pPluggedLayout); }
+               _CHECK_FAIL{ m->pNearbyLayout->Destroy(); }
+               _CHECK_FAIL{ m->pPluggedLayout->Destroy(); }
+               _CHECK_FAIL{ delete m->pNearbyLayout; m->pNearbyLayout = NULL; }
+               _CHECK_FAIL{ delete m->pPluggedLayout; m->pPluggedLayout = NULL; }
+               _CHECK_FAIL{ m->pLayoutMgr->Destroy(); }
+               _CHECK_FAIL{ delete m->pLayoutMgr; m->pLayoutMgr = NULL; }
                _CHECK_FAIL{ CSourceMgr::Finalize(); }
                _CHECK_FAIL{ delete m; m = NULL; }
                _CHECK_FAIL{ evas_object_del(base); }
@@ -329,8 +304,9 @@ void CAllSourceView::Destroy(void)
 
        CBaseView::Destroy();
 
-       _del_content_layout(m);
-       layoutmgr_fini(m->lmgr);
+       m->pLayoutMgr->RemoveLayout(m->pPluggedLayout);
+       m->pLayoutMgr->RemoveLayout(m->pNearbyLayout);
+
        CSourceMgr::Finalize();
        delete m;
        m = NULL;
index cf46f21..9b9c7a9 100644 (file)
@@ -17,7 +17,6 @@
 #include <Elementary.h>
 #include <app.h>
 #include <aul.h>
-#include <utilX.h>
 
 #include "AppCommon.h"
 #include "BaseView.h"
index 1ff4d54..c73a40d 100644 (file)
@@ -15,7 +15,6 @@
  */
 
 #include <Elementary.h>
-#include <utilX.h>
 #include <app.h>
 #include "aul.h"
 #include "def.h"
 #include "AppCommon.h"
 #include "BaseView.h"
 #include "ViewMgr.h"
+#include "BaseLayout.h"
+#include "LayoutMgr.h"
 #include "source_mgr.h"
-#include "layout_mgr.h"
 #include "menu_view.h"
 #include "util.h"
+#include "allsource_view.h"
+#include "nearby_layout.h"
 
 #define PRIV "priv"
+#define NEARBY_DATA "nearby_data"
+
 #define SET_UP_NETWORK "Set up network"
 #define NET_WORK_SET "Network Setting"
-#define WI_FI "Wi-Fi"
-#define WI_FI_DIRECT "Wi-Fi Direct"
-#define ON "ON"
+
 #define NO_SRC_TEXT_LINE1 "No nearby source"
 #define NO_SRC_TEXT_LINE2 "Add any nearby sources, set up network configuration"
+#define NO_SRC_TEXT_LINE3 "Wi-Fi ON  |  Wi-Fi Direct ON"
+
 #define PADDING_13 13
 #define PADDING_30 30
 #define SETTING_APP "org.tizen.settings-tv-ref"
 #define SETTING_ITEM "settings-item"
 #define SETTING_NETWORK "network-settings"
 
-struct _priv {
+struct SNearbyLayout {
        Evas_Object *base;
-       Evas_Object *layout;
        Evas_Object *grid;
-       Evas_Object *text_ly;
        Evas_Object *utility_pb;
        Evas_Object *utility_btn;
-       Evas_Object *wifi_switch_label;
-       Evas_Object *wfd_switch_label;
        Elm_Object_Item *focus_it;
        Elm_Object_Item *del_it;
-       CSourceMgr *src_mgr;
+       CSourceMgr *srcmgr;
        CViewMgr *vmgr;
-       int is_pause;
-       int is_grid;
+       int list_count;
 
        sig_event_cb send_sig_back;
+
+       SNearbyLayout() {
+               memset(this, 0, sizeof(SNearbyLayout));
+       }
 };
 
-static void _grid_mouse_move(void *data,
+void CNearbyLayout::sm_CbGridMouseMove(void *data,
                Evas *e, Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
+       SNearbyLayout *m = (SNearbyLayout *)data;
+       if (!m)
+               return;
+
        Elm_Object_Item *it;
        Evas_Event_Mouse_Move *ev;
 
-       if (!data || !ev_info)
+       if (!ev_info)
                return;
 
-       priv = (struct _priv *)data;
        ev = (Evas_Event_Mouse_Move *)ev_info;
        it = elm_gengrid_at_xy_item_get(obj, ev->cur.canvas.x,
                        ev->cur.canvas.y, NULL, NULL);
@@ -84,45 +89,45 @@ static void _grid_mouse_move(void *data,
 
        elm_object_item_focus_set(it, EINA_TRUE);
 
-       if (priv->send_sig_back)
-               priv->send_sig_back(priv->base, E_HIGHLIGHT);
+       if (m->send_sig_back)
+               m->send_sig_back(m->base, E_HIGHLIGHT);
 }
 
-static void _grid_key_down(void *data, Evas *e, Evas_Object *obj, void *ev_info)
+void CNearbyLayout::sm_CbGridKeyDown(void *data, Evas *e, Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
+       SNearbyLayout *m = (SNearbyLayout *)data;
+       if (!m)
+               return;
+
        CSourceInfo *si;
        Evas_Event_Key_Down *ev;
 
-       if (!data || !ev_info)
+       if (!ev_info)
                return;
 
-       priv = (struct _priv *)data;
        ev = (Evas_Event_Key_Down *)ev_info;
-       si = priv->src_mgr->SourceInfoByData(priv->focus_it);
+       si = m->srcmgr->SourceInfoByData(m->focus_it);
        if (!ev->keyname || !si)
                return;
 
        if (!strcmp(ev->keyname, KEY_MENU))
-               priv->vmgr->PushView(MENU_VIEW, si);
+               m->vmgr->PushView(MENU_VIEW, si);
 
 }
 
-static void _grid_focused(void *data, Evas_Object *obj, void *ev_info)
+void CNearbyLayout::sm_CbGridFocused(void *data, Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
-
-       if (!data)
+       SNearbyLayout *m = (SNearbyLayout *)data;
+       if (!m)
                return;
 
-       priv = (struct _priv *)data;
-       priv->focus_it = (Elm_Object_Item*)ev_info;
+       m->focus_it = (Elm_Object_Item*)ev_info;
 
-       if (priv->send_sig_back)
-               priv->send_sig_back(priv->base, E_HIGHLIGHT);
+       if (m->send_sig_back)
+               m->send_sig_back(m->base, E_HIGHLIGHT);
 }
 
-static void _launch_setting_app(void)
+void CNearbyLayout::m_LaunchSettingApp(void)
 {
        bundle *b;
        int err;
@@ -150,8 +155,12 @@ static void _launch_setting_app(void)
        bundle_free(b);
 }
 
-static void _btn_key_down(void *data, Evas *e, Evas_Object *obj, void *ev_info)
+void CNearbyLayout::sm_CbBtnKeyDown(void *data, Evas *e, Evas_Object *obj, void *ev_info)
 {
+       CNearbyLayout *root = (CNearbyLayout *)data;
+       if (!root)
+               return;
+
        Evas_Event_Key_Down *ev;
 
        if (!ev_info)
@@ -162,449 +171,306 @@ static void _btn_key_down(void *data, Evas *e, Evas_Object *obj, void *ev_info)
                return;
 
        if (!strcmp(ev->keyname, KEY_ENTER))
-               _launch_setting_app();
-}
-
-static Evas_Object *_add_label(Evas_Object *base, const char *style)
-{
-       Evas_Object *label;
-
-       if (!base || !style)
-               return NULL;
-
-       label = elm_label_add(base);
-       if (!label)
-               return NULL;
-
-       elm_object_style_set(label, style);
-       evas_object_show(label);
-
-       return label;
-}
-
-static Evas_Object *_add_box(Evas_Object *base, int h_padding)
-{
-       Evas_Object *box;
-
-       if (!base)
-               return NULL;
-
-       box = elm_box_add(base);
-       if (!box)
-               return NULL;
-
-       elm_box_homogeneous_set(box, EINA_FALSE);
-       elm_box_horizontal_set(box, EINA_TRUE);
-       elm_box_padding_set(box, h_padding, 0);
-       evas_object_show(box);
-
-       return box;
+               root->m_LaunchSettingApp();
 }
 
-static void _btn_focused(void *data, Evas_Object *obj, void *ev_info)
+void CNearbyLayout::sm_CbBtnFocused(void *data, Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
-
-       if (!data)
+       SNearbyLayout *m = (SNearbyLayout *)data;
+       if (!m)
                return;
 
-       priv = (struct _priv *)data;
-       if (priv->send_sig_back)
-               priv->send_sig_back(priv->base, E_HIGHLIGHT);
+       if (m->send_sig_back)
+               m->send_sig_back(m->base, E_HIGHLIGHT);
 }
 
-static int _add_no_src_label(struct _priv *priv)
+void CNearbyLayout::m_AddSetNetworkButton(void)
 {
-       Evas_Object *btn, *box, *top_box;
-       Evas_Object *label, *separator, *switch_label, *direct_switch_label;
-
-       if (!priv)
-               return -1;
+       Evas_Object *btn;
 
-       priv->text_ly = util_add_layout(priv->layout, GRP_NO_NEAR_SRC_LABEL);
-       if (!priv->text_ly)
-               return -1;
-
-       btn = util_add_btn(priv->text_ly, BTN_STYLE_SET_UP_NETWORK);
-       if (!btn)
-               goto error;
+       btn = util_add_btn(Layout(), BTN_STYLE_SET_UP_NETWORK);
+       if (!btn) {
+               _ERR("Add network button failed");
+               return;
+       }
 
        elm_object_text_set(btn, _(SET_UP_NETWORK));
-       evas_object_smart_callback_add(btn, "focused", _btn_focused, priv);
+       evas_object_smart_callback_add(btn, "focused", sm_CbBtnFocused, m);
        evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN,
-                       _btn_key_down, NULL);
-       elm_object_part_content_set(priv->text_ly,
-                       PART_BUTTON, btn);
-       elm_object_part_text_set(priv->text_ly,
-                       PART_NO_SRC_TEXT_LINE1, _(NO_SRC_TEXT_LINE1));
-       elm_object_part_text_set(priv->text_ly,
-                       PART_NO_SRC_TEXT_LINE2, _(NO_SRC_TEXT_LINE2));
-
-       /*add box for the line3 text*/
-       box = _add_box(priv->text_ly, PADDING_13);
-       if (!box)
-               goto error;
-
-       elm_object_part_content_set(priv->text_ly, PART_NO_SRC_TEXT_LINE3, box);
-
-       /*add wifi label for string "Wi-Fi"*/
-       label = _add_label(box, LABEL_STYLE_WIFI);
-       if (!label)
-               goto error;
-
-       elm_object_text_set(label, _(WI_FI));
-       elm_box_pack_end(box, label);
-
-       /*add box for the second pack*/
-       top_box = _add_box(box, PADDING_30);
-       if (!top_box)
-               goto error;
-
-       elm_box_pack_end(box, top_box);
-
-       /*add wifi switch label for string "ON/OFF"*/
-       switch_label = _add_label(top_box, LABEL_STYLE_WIFI_SWITCH);
-       if (!switch_label)
-               goto error;
-
-       elm_object_text_set(switch_label, _(ON));
-       elm_box_pack_end(top_box, switch_label);
-
-       /*add separator for the line3 string*/
-       separator = util_add_layout(top_box, GRP_NO_NEAR_SRC_SEPARATOR);
-       if (!separator)
-               goto error;
-
-       evas_object_show(separator);
-       elm_box_pack_end(top_box, separator);
-
-       /*add label for string "Wi-Fi Direct"*/
-       label = _add_label(top_box, LABEL_STYLE_WIFI);
-       if (!label)
-               goto error;
-
-       elm_object_text_set(label, _(WI_FI_DIRECT));
-       elm_box_pack_end(top_box, label);
-
-       /*add label for wifi direct switch string "ON/OFF"*/
-       direct_switch_label = _add_label(box, LABEL_STYLE_WIFI_SWITCH);
-       if (!direct_switch_label)
-               goto error;
-
-       elm_object_text_set(direct_switch_label, _(ON));
-       elm_box_pack_end(box, direct_switch_label);
-
-       priv->wifi_switch_label = switch_label;
-       priv->wfd_switch_label = direct_switch_label;
-
-       return 0;
-error:
-       evas_object_del(priv->text_ly);
-       priv->text_ly = NULL;
-       return -1;
+                       sm_CbBtnKeyDown, this);
+       elm_object_part_content_set(Layout(), PART_BUTTON, btn);
 }
 
-static void _add_no_src_utility(struct _priv *priv)
+void CNearbyLayout::m_AddNoSrcUtility(void)
 {
        Evas_Object *pb, *btn;
 
-       if (!priv || priv->utility_btn)
+       if (m->utility_btn)
                return;
 
-       pb = elm_progressbar_add(priv->base);
+       pb = elm_progressbar_add(m->base);
        if (!pb)
                return;
 
        elm_object_style_set(pb, PB_STYLE_SRC_LOAD);
-       elm_object_part_content_set(priv->base, PART_UTILITY_LOADING, pb);
-       elm_progressbar_pulse(priv->utility_pb, EINA_TRUE);
-       evas_object_show(priv->utility_pb);
+       elm_object_part_content_set(m->base, PART_UTILITY_LOADING, pb);
+       elm_progressbar_pulse(m->utility_pb, EINA_TRUE);
+       evas_object_show(m->utility_pb);
 
        /*TODO:to add utility button*/
-       btn = util_add_btn(priv->layout, BTN_STYLE_NETWORK_SET);
+       btn = util_add_btn(m->base, BTN_STYLE_NETWORK_SET);
        if (!btn) {
                evas_object_del(pb);
                return;
        }
        elm_object_text_set(btn, _(NET_WORK_SET));
-       elm_object_part_content_set(priv->base, PART_UTILITY_BUTTON, btn);
+       elm_object_part_content_set(m->base, PART_UTILITY_BUTTON, btn);
        evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN,
-                       _btn_key_down, NULL);
+                       sm_CbBtnKeyDown, NULL);
 
-       priv->utility_pb = pb;
-       priv->utility_btn = btn;
+       m->utility_pb = pb;
+       m->utility_btn = btn;
 }
 
-static void _del_no_src_utility(struct _priv *priv)
+void CNearbyLayout::m_DelNoSrcUtility(void)
 {
-       if (!priv)
-               return;
-
-       if (priv->utility_btn) {
-               evas_object_del(priv->utility_btn);
-               priv->utility_btn = NULL;
+       if (m->utility_btn) {
+               evas_object_del(m->utility_btn);
+               m->utility_btn = NULL;
        }
 
-       if (priv->utility_pb) {
-               evas_object_del(priv->utility_pb);
-               priv->utility_pb = NULL;
+       if (m->utility_pb) {
+               evas_object_del(m->utility_pb);
+               m->utility_pb = NULL;
        }
 }
 
-static void _replace_content(Evas_Object *layout, const char *part,
-               Evas_Object *old, Evas_Object *new_obj)
+void CNearbyLayout::m_DrawNoSrcUtility(void)
 {
-       if (!layout || !part || !old || !new_obj)
-               return;
-
-       elm_object_part_content_unset(layout, part);
-       evas_object_hide(old);
-
-       elm_object_part_content_set(layout, part, new_obj);
-       evas_object_show(new_obj);
+       if (m->list_count > 0)
+               m_DelNoSrcUtility();
+       else
+               m_AddNoSrcUtility();
 }
 
-static void _grid_to_label(struct _priv *priv)
+void CNearbyLayout::m_DrawNoContentArea(void)
 {
-       if (!priv || priv->is_pause)
-               return;
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE1,
+                               _(NO_SRC_TEXT_LINE1));
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE2,
+                               _(NO_SRC_TEXT_LINE2));
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE3,
+                               _(NO_SRC_TEXT_LINE3));
 
-       _replace_content(priv->layout,
-                       PART_CONTENT_CONTENT, priv->grid, priv->text_ly);
-       priv->is_grid = 0;
+       elm_object_part_content_unset(Layout(), PART_CONTENT_CONTENT);
+       evas_object_hide(m->grid);
 
-       _add_no_src_utility(priv);
+       m_AddSetNetworkButton();
 
-       if (priv->send_sig_back)
-               priv->send_sig_back(priv->base, E_RETURN);
+       if (m->send_sig_back)
+               m->send_sig_back(m->base, E_RETURN);
 }
 
-static void _label_to_grid(struct _priv *priv)
+void CNearbyLayout::m_DrawContentArea(void)
 {
-       if (!priv || priv->is_pause)
-               return;
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE1, "");
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE2, "");
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE3, "");
+       elm_object_part_content_unset(Layout(), PART_BUTTON);
 
-       _replace_content(priv->layout,
-                       PART_CONTENT_CONTENT, priv->text_ly, priv->grid);
-       priv->is_grid = 1;
-
-       _del_no_src_utility(priv);
+       elm_object_part_content_set(Layout(), PART_CONTENT_CONTENT, m->grid);
+       evas_object_show(m->grid);
 }
 
-static Evas_Object *_create_layout(Evas_Object *base, sig_event_cb ptr)
+Evas_Object *CNearbyLayout::m_DrawGengrid(Evas_Object *layout)
 {
-       ASSERT(base);
+       Evas_Object *grid;
 
-       int ret;
-       struct _priv *priv;
+       grid = util_add_grid(layout, ITEM_W, ITEM_H);
+       if (!grid)
+               return NULL;
 
-       CViewMgr *vmgr = CViewMgr::GetInstance();
-       CSourceMgr *src_mgr = CSourceMgr::GetInstance();
+       evas_object_event_callback_add(m->grid, EVAS_CALLBACK_MOUSE_MOVE,
+                       sm_CbGridMouseMove, m);
+       evas_object_event_callback_add(m->grid, EVAS_CALLBACK_KEY_DOWN,
+                       sm_CbGridKeyDown, m);
+       evas_object_smart_callback_add(m->grid, "item,focused",
+                       sm_CbGridFocused, m);
 
-       ASSERT(vmgr);
-       ASSERT(src_mgr);
+       return grid;
+}
 
-       priv = (struct _priv *)calloc(1, sizeof(*priv));
-       if (!priv)
-               return NULL;
+bool CNearbyLayout::Create(CLayoutMgr *lmgr, void *data)
+{
+       ASSERT(!m);
 
-       priv->src_mgr = src_mgr;
-       priv->vmgr = vmgr;
-       priv->base = base;
-       priv->send_sig_back = ptr;
+       Evas_Object *layout;
+       CViewMgr *vmgr;
+       CSourceMgr *srcmgr;
 
-       priv->layout = util_add_layout(base, GRP_CONTENT);
-       if (!priv->layout) {
-               _ERR("Add layout failed.");
-               UTIL_FREE(priv);
-               return NULL;
+       if (!lmgr || !data)
+               return false;
+
+       m = new SNearbyLayout;
+       if (!m)
+               return false;
+
+       m->base = lmgr->Base();
+       if (!m->base) {
+               delete m;
+               m = NULL;
+               return false;
        }
 
-       priv->grid = util_add_grid(priv->layout, ITEM_W, ITEM_H);
-       if (!priv->grid) {
-               _ERR("Add gengrid failed.");
-               goto error;
+       layout = util_add_layout(m->base, GRP_NEARBY_CONTENT);
+       if (!layout) {
+               _ERR("Add layout failed");
+               delete m;
+               m = NULL;
+               return false;
        }
 
-       evas_object_event_callback_add(priv->grid, EVAS_CALLBACK_MOUSE_MOVE,
-                       _grid_mouse_move, priv);
-       evas_object_event_callback_add(priv->grid, EVAS_CALLBACK_KEY_DOWN,
-                       _grid_key_down, priv);
-       evas_object_smart_callback_add(priv->grid, "item,focused",
-                       _grid_focused, priv);
-
-       ret = _add_no_src_label(priv);
-       if (ret) {
-               _ERR("Add no src label failed.");
-               goto error;
+       m->grid = m_DrawGengrid(layout);
+       if (!m->grid) {
+               _ERR("Add gengrid failed");
+               delete m;
+               m = NULL;
+               evas_object_del(layout);
+               return false;
        }
 
-       evas_object_data_set(priv->layout, PRIV, priv);
+       vmgr = CViewMgr::GetInstance();
+       srcmgr = CSourceMgr::GetInstance();
 
-       return priv->layout;
-error:
-       evas_object_del(priv->layout);
-       UTIL_FREE(priv);
+       m->srcmgr = srcmgr;
+       m->vmgr = vmgr;
+       m->send_sig_back = (sig_event_cb)data;
 
-       return NULL;
+       evas_object_data_set(m->base, NEARBY_DATA, m);
+
+       elm_object_part_content_set(layout, PART_CONTENT_CONTENT, m->grid);
+
+       CBaseLayout::Create(layout);
+
+       return true;
 }
 
-static void _destory_layout(Evas_Object *layout)
+void CNearbyLayout::t_OnShow(void)
 {
-       struct _priv *priv;
-
-       if (!layout) {
-               _ERR("Invaild data.");
-               return;
-       }
+       ASSERT(m);
 
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
+       CBaseLayout::t_OnShow();
 
-       UTIL_FREE(priv);
+       elm_object_part_content_set(m->base, PART_CONTENT, Layout());
 
-       evas_object_del(layout);
+       m_DrawNoSrcUtility();
 }
 
-static Eina_Bool _timer_del_item_cb(void *data)
+void CNearbyLayout::t_OnHide(void)
 {
-       struct _priv *priv;
-       Elm_Object_Item *prev;
-       Elm_Object_Item *next;
+       ASSERT(m);
 
-       if (!data)
-               return EINA_FALSE;
+       CBaseLayout::t_OnHide();
 
-       priv = (struct _priv *)data;
+       elm_object_part_content_unset(m->base, PART_CONTENT);
 
-       if (!priv->del_it)
-               return EINA_FALSE;
+       m_DelNoSrcUtility();
+}
 
-       prev = elm_gengrid_item_prev_get(priv->del_it);
-       next = elm_gengrid_item_prev_get(priv->del_it);
+void CNearbyLayout::Destroy(void)
+{
+       ASSERT(m);
 
-       elm_object_item_data_set(priv->del_it, NULL);
-       elm_object_item_del(priv->del_it);
+       evas_object_del(Layout());
 
-       if (!prev && !next) {
-               _grid_to_label(priv);
-       } else if (priv->del_it == priv->focus_it) {
-               if (prev)
-                       priv->focus_it = prev;
-               else
-                       priv->focus_it = next;
+       CBaseLayout::Destroy();
 
-               elm_object_item_focus_set(priv->focus_it, EINA_TRUE);
-       }
+       delete m;
+       m = NULL;
+}
 
-       priv->del_it = NULL;
+Eina_Bool CNearbyLayout::sm_CbTimerDelItem(void *data)
+{
+       CNearbyLayout *root = (CNearbyLayout *)data;
+       if (!root)
+               return EINA_FALSE;
+
+       root->m_TimerDelItem();
 
        return EINA_FALSE;
 }
 
-static void _update_src_list(void *user_data, void *data, enum update_ui type)
+void CNearbyLayout::m_TimerDelItem(void)
 {
-       Eina_List *list, *l;
-       Ecore_Timer *timer;
-       Evas_Object *layout;
-       struct _priv *priv;
-       CSourceMgr *src_mgr;
-       CSourceInfo *si;
-       CSourceInfo *si_data = (CSourceInfo *)data;
-       int count;
-       void *obj;
-
-       if (!user_data) {
-               _ERR("Invaild data.");
-               return;
-       }
+       Elm_Object_Item *prev;
+       Elm_Object_Item *next;
 
-       layout = (Evas_Object*)user_data;
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv || !priv->grid || !priv->src_mgr || priv->is_pause) {
-               _ERR("Invaild data.");
+       if (!m->del_it)
                return;
-       }
 
-       src_mgr = priv->src_mgr;
-       /*TODO:there is only nearby connected source list*/
-       list = src_mgr->NearbyConnList();
-       count = eina_list_count(list);
+       prev = elm_gengrid_item_prev_get(m->del_it);
+       next = elm_gengrid_item_prev_get(m->del_it);
 
-       if (type == SRC_PLUG_ADD_ONE && data) {
-               util_add_item(priv->grid, (CSourceInfo *)data);
+       elm_object_item_data_set(m->del_it, NULL);
+       elm_object_item_del(m->del_it);
 
-               if (count >= 1)
-                       _label_to_grid(priv);
-       } else if (type == SRC_PLUG_DEL_ONE && data) {
-               priv->del_it = (Elm_Object_Item*)si_data->Data();
-               si_data->SetData(NULL);
+       if (!prev && !next)
+               m_DrawNoContentArea();
+       else if (m->del_it == m->focus_it) {
+               if (prev)
+                       m->focus_it = prev;
+               else
+                       m->focus_it = next;
 
-               timer = ecore_timer_add(DEL_IT_TIME, _timer_del_item_cb, priv);
-               elm_object_item_data_set(priv->del_it, timer);
-               util_dim_item(priv->del_it);
-       } else if (type == SRC_UPDATE_ALL) {
-               if (count == 0) {
-                       _grid_to_label(priv);
-               } else {
-                       _label_to_grid(priv);
-                       elm_gengrid_clear(priv->grid);
-
-                       EINA_LIST_FOREACH(list, l, obj) {
-                               si = (CSourceInfo *)obj;
-                               util_add_item(priv->grid, si);
-                       }
-               }
+               elm_object_item_focus_set(m->focus_it, EINA_TRUE);
        }
 
-       return;
+       m->del_it = NULL;
 }
 
-static void _pause_layout(Evas_Object *layout)
+void CNearbyLayout::Update(void *data, enum update_ui type)
 {
-       struct _priv *priv;
-
-       if (!layout)
-               return;
-
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv)
-               return;
-
-       priv->is_pause = 1;
-       _del_no_src_utility(priv);
-       evas_object_hide(layout);
-}
+       ASSERT(m);
 
-static void _resume_layout(Evas_Object *layout)
-{
-       struct _priv *priv;
+       Eina_List *list, *l;
+       Ecore_Timer *timer;
+       CSourceMgr *srcmgr;
+       CSourceInfo *si;
+       CSourceInfo *si_data;
+       void *obj;
 
-       if (!layout)
-               return;
+       srcmgr = m->srcmgr;
 
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv)
-               return;
+       /*TODO:there is only nearby connected source list*/
+       list = srcmgr->NearbyConnList();
+       m->list_count = eina_list_count(list);
+
+       if (type == SRC_PLUG_ADD_ONE) {
+               si_data = (CSourceInfo *)data;
+               util_add_item(m->grid, si_data);
+
+               if (m->list_count >= 1)
+                       m_DrawContentArea();
+       } else if (type == SRC_PLUG_DEL_ONE) {
+               si_data = (CSourceInfo *)data;
+               m->del_it = (Elm_Object_Item*)si_data->Data();
+               si_data->SetData(NULL);
 
-       priv->is_pause = 0;
-       _update_src_list(layout, NULL, SRC_UPDATE_ALL);
-       evas_object_show(layout);
-}
+               timer = ecore_timer_add(DEL_IT_TIME, sm_CbTimerDelItem, m);
+               elm_object_item_data_set(m->del_it, timer);
+               util_dim_item(m->del_it);
+       } else if (type == SRC_UPDATE_ALL) {
+               if (m->list_count == 0) {
+                       m_DrawNoContentArea();
+                       return;
+               } else
+                       m_DrawContentArea();
 
-static struct layout_class _lclass;/* = {
-       .create = _create_layout,
-       .destory = _destory_layout,
-       .pause = _pause_layout,
-       .resume = _resume_layout,
-       .update = _update_src_list
-};*/
+               elm_gengrid_clear(m->grid);
 
-struct layout_class *get_nearby_lclass()
-{
-       _lclass.create = _create_layout;
-       _lclass.destory = _destory_layout;
-       _lclass.pause = _pause_layout;
-       _lclass.resume = _resume_layout;
-       _lclass.update = _update_src_list;
-       return &_lclass;
+               EINA_LIST_FOREACH(list, l, obj) {
+                       si = (CSourceInfo *)obj;
+                       util_add_item(m->grid, si);
+               }
+       }
 }
index 631195c..9e0884d 100644 (file)
@@ -15,7 +15,6 @@
  */
 
 #include <Elementary.h>
-#include <utilX.h>
 #include <app.h>
 #include "def.h"
 #include "dbg.h"
 #include "AppCommon.h"
 #include "BaseView.h"
 #include "ViewMgr.h"
+#include "BaseLayout.h"
+#include "LayoutMgr.h"
 #include "external.h"
 #include "source_mgr.h"
-#include "layout_mgr.h"
 #include "menu_view.h"
 #include "util.h"
+#include "allsource_view.h"
+#include "plugged_layout.h"
 
 #define PRIV "priv"
+#define PLUGGED_DATA "plugged_data"
 
-struct _priv {
+#define TEXT_NO_SRC_TEXT_LINE1 "No plugged source"
+#define TEXT_NO_SRC_TEXT_LINE2 "Check connection status or install any cloud service."
+
+struct SPluggedLayout {
        Evas_Object *base;
-       Evas_Object *layout;
        Evas_Object *grid;
-       Evas_Object *label;
        Elm_Object_Item *focus_it;
        Elm_Object_Item *del_it;
        CSourceMgr *srcmgr;
        CViewMgr *vmgr;
-       int is_pause;
-       int is_grid;
 
        sig_event_cb send_sig_back_func;
+
+       SPluggedLayout() {
+               memset(this, 0, sizeof(SPluggedLayout));
+       }
 };
 
-static void _grid_mouse_move(void *data,
+void CPluggedLayout::sm_CbGridMouseMove(void *data,
                Evas *e, Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
+       SPluggedLayout *m = (SPluggedLayout *)data;
+       if (!m)
+               return;
+
        Elm_Object_Item *it;
        Evas_Event_Mouse_Move *ev;
 
-       if (!data || !ev_info)
+       if (!ev_info)
                return;
 
-       priv = (struct _priv *)data;
        ev = (Evas_Event_Mouse_Move *)ev_info;
        it = elm_gengrid_at_xy_item_get(obj, ev->cur.canvas.x,
                        ev->cur.canvas.y, NULL, NULL);
@@ -68,307 +76,253 @@ static void _grid_mouse_move(void *data,
 
        elm_object_item_focus_set(it, EINA_TRUE);
 
-       if (priv->send_sig_back_func)
-               priv->send_sig_back_func(priv->base, E_HIGHLIGHT);
+       if (m->send_sig_back_func)
+               m->send_sig_back_func(m->base, E_HIGHLIGHT);
 }
 
-static void _grid_key_down(void *data,
+void CPluggedLayout::sm_CbGridKeyDown(void *data,
                Evas *e, Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
+       SPluggedLayout *m = (SPluggedLayout *)data;
+       if (!m)
+               return;
+
        CSourceInfo *si;
        Evas_Event_Key_Down *ev;
 
-       if (!data || !ev_info)
+       if (!ev_info)
                return;
 
-       priv = (struct _priv *)data;
        ev = (Evas_Event_Key_Down *)ev_info;
-       si = priv->srcmgr->SourceInfoByData(priv->focus_it);
+       si = m->srcmgr->SourceInfoByData(m->focus_it);
        if (!ev->keyname || !si)
                return;
 
        if (!strcmp(ev->keyname, KEY_MENU))
-               priv->vmgr->PushView(MENU_VIEW, si);
+               m->vmgr->PushView(MENU_VIEW, si);
 }
 
-static void _grid_focused(void *data,
+void CPluggedLayout::sm_CbGridFocused(void *data,
                Evas_Object *obj, void *ev_info)
 {
-       struct _priv *priv;
-
-       if (!data)
+       SPluggedLayout *m = (SPluggedLayout *)data;
+       if (!m)
                return;
 
-       priv = (struct _priv *)data;
-       priv->focus_it = (Elm_Object_Item*)ev_info;
+       m->focus_it = (Elm_Object_Item*)ev_info;
+
+       if (m->send_sig_back_func)
+               m->send_sig_back_func(m->base, E_HIGHLIGHT);
+}
+
+Evas_Object *CPluggedLayout::m_DrawGengrid(Evas_Object *layout)
+{
+       Evas_Object *grid;
+
+       grid = util_add_grid(layout, ITEM_W, ITEM_H);
+       if (!grid)
+               return NULL;
+
+       evas_object_event_callback_add(m->grid, EVAS_CALLBACK_MOUSE_MOVE,
+                       sm_CbGridMouseMove, m);
+       evas_object_event_callback_add(m->grid, EVAS_CALLBACK_KEY_DOWN,
+                       sm_CbGridKeyDown, m);
+       evas_object_smart_callback_add(m->grid, "item,focused",
+                       sm_CbGridFocused, m);
 
-       if (priv->send_sig_back_func)
-               priv->send_sig_back_func(priv->base, E_HIGHLIGHT);
+       return grid;
 }
 
-static Evas_Object *_create_layout(Evas_Object *base, sig_event_cb ptr)
+bool CPluggedLayout::Create(CLayoutMgr *lmgr, void *data)
 {
-       ASSERT(base);
+       ASSERT(!m);
 
        Evas_Object *layout;
-       struct _priv *priv;
+       CViewMgr *vmgr;
+       CSourceMgr *srcmgr;
 
-       CViewMgr *vmgr = CViewMgr::GetInstance();
-       CSourceMgr *srcmgr = CSourceMgr::GetInstance();
+       if (!lmgr || !data)
+               return false;
 
-       ASSERT(vmgr);
-       ASSERT(srcmgr);
+       m = new SPluggedLayout;
+       if (!m)
+               return false;
 
-       priv = (struct _priv *)calloc(1, sizeof(*priv));
-       if (!priv) {
-               return NULL;
+       m->base = lmgr->Base();
+       if (!m->base) {
+               delete m;
+               m = NULL;
+               return false;
        }
 
-       layout = util_add_layout(base, GRP_CONTENT);
+       layout = util_add_layout(m->base, GRP_PLUGGED_CONTENT);
        if (!layout) {
-               _ERR("Add layout failed.");
-               UTIL_FREE(priv);
-               return NULL;
+               _ERR("Add layout failed");
+               delete m;
+               m = NULL;
+               return false;
        }
 
-       priv->grid = util_add_grid(layout, ITEM_W, ITEM_H);
-       if (!priv->grid) {
-               _ERR("Add gengrid failed.");
-               goto error;
-       }
-       evas_object_event_callback_add(priv->grid, EVAS_CALLBACK_MOUSE_MOVE,
-                       _grid_mouse_move, priv);
-       evas_object_event_callback_add(priv->grid, EVAS_CALLBACK_KEY_DOWN,
-                       _grid_key_down, priv);
-       evas_object_smart_callback_add(priv->grid, "item,focused",
-                       _grid_focused, priv);
-       priv->label = util_add_layout(layout, GRP_NO_PLUG_SRC_LABEL);
-       if (!priv->label) {
-               _ERR("Add no plug src label failed.");
-               goto error;
+       m->grid = m_DrawGengrid(layout);
+       if (!m->grid) {
+               _ERR("Add gengrid failed");
+               delete m;
+               m = NULL;
+               evas_object_del(layout);
+               return false;
        }
 
-       priv->is_pause = 1;
-       priv->srcmgr = srcmgr;
-       priv->vmgr = vmgr;
-       priv->base = base;
-       priv->layout = layout;
-       priv->send_sig_back_func = ptr;
-       evas_object_data_set(layout, PRIV, priv);
+       vmgr = CViewMgr::GetInstance();
+       srcmgr = CSourceMgr::GetInstance();
+
+       m->srcmgr = srcmgr;
+       m->vmgr = vmgr;
+       m->send_sig_back_func = (sig_event_cb)data;
 
-       evas_object_show(priv->label);
-       elm_object_part_content_set(layout, PART_CONTENT_CONTENT, priv->label);
+       evas_object_data_set(m->base, PLUGGED_DATA, m);
 
-       return layout;
-error:
-       UTIL_FREE(priv);
-       evas_object_del(layout);
+       elm_object_part_content_set(layout, PART_CONTENT_CONTENT, m->grid);
 
-       return NULL;
+       CBaseLayout::Create(layout);
+
+       return true;
 }
 
-static void _destory_layout(Evas_Object *layout)
+void CPluggedLayout::t_OnShow(void)
 {
-       struct _priv *priv;
+       ASSERT(m);
 
-       if (!layout) {
-               _ERR("Invaild data.");
-               return;
-       }
+       CBaseLayout::t_OnShow();
 
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
+       elm_object_part_content_set(m->base, PART_CONTENT, Layout());
+}
+
+void CPluggedLayout::t_OnHide(void)
+{
+       ASSERT(m);
 
-       UTIL_FREE(priv);
+       CBaseLayout::t_OnHide();
 
-       evas_object_del(layout);
+       elm_object_part_content_unset(m->base, PART_CONTENT);
 }
 
-static void _grid_to_label(Evas_Object *layout)
+void CPluggedLayout::Destroy(void)
 {
-       struct _priv *priv;
+       ASSERT(m);
 
-       if (!layout)
-               return;
+       evas_object_del(Layout());
 
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv || !priv->is_grid || !priv->grid)
-               return;
+       CBaseLayout::Destroy();
 
-       elm_object_part_content_unset(layout, PART_CONTENT_CONTENT);
-       evas_object_hide(priv->grid);
+       delete m;
+       m = NULL;
+}
 
-       elm_object_part_content_set(layout, PART_CONTENT_CONTENT, priv->label);
-       evas_object_show(priv->label);
+void CPluggedLayout::m_DrawNoContentArea(void)
+{
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE1,
+                                       _(TEXT_NO_SRC_TEXT_LINE1));
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE2,
+                                       _(TEXT_NO_SRC_TEXT_LINE2));
 
-       if (priv->send_sig_back_func)
-               priv->send_sig_back_func(priv->base, E_RETURN);
+       elm_object_part_content_unset(Layout(), PART_CONTENT_CONTENT);
+       evas_object_hide(m->grid);
 
-       priv->is_grid = 0;
+       if (m->send_sig_back_func)
+               m->send_sig_back_func(m->base, E_RETURN);
 }
 
-static void _label_to_grid(Evas_Object *layout)
+void CPluggedLayout::m_DrawContentArea(void)
 {
-       struct _priv *priv;
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE1, "");
+       elm_object_part_text_set(Layout(), PART_NO_SRC_TEXT_LINE2, "");
 
-       if (!layout)
-               return;
+       elm_object_part_content_set(Layout(), PART_CONTENT_CONTENT, m->grid);
+       evas_object_show(m->grid);
+}
 
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv || priv->is_grid || !priv->label)
-               return;
 
-       elm_object_part_content_unset(layout, PART_CONTENT_CONTENT);
-       evas_object_hide(priv->label);
+Eina_Bool CPluggedLayout::sm_CbTimerDelItem(void *data)
+{
+       CPluggedLayout *root = (CPluggedLayout *)data;
+       if (!root)
+               return EINA_FALSE;
 
-       elm_object_part_content_set(layout, PART_CONTENT_CONTENT, priv->grid);
-       evas_object_show(priv->grid);
+       root->m_TimerDelItem();
 
-       priv->is_grid = 1;
+       return EINA_FALSE;
 }
 
-static Eina_Bool _timer_del_item_cb(void *data)
+void CPluggedLayout::m_TimerDelItem(void)
 {
-       struct _priv *priv;
        Elm_Object_Item *prev;
        Elm_Object_Item *next;
 
-       if (!data)
-               return EINA_FALSE;
-
-       priv = (struct _priv *)data;
-
-       if (!priv->del_it)
-               return EINA_FALSE;
+       if (!m->del_it)
+               return;
 
-       prev = elm_gengrid_item_prev_get(priv->del_it);
-       next = elm_gengrid_item_prev_get(priv->del_it);
+       prev = elm_gengrid_item_prev_get(m->del_it);
+       next = elm_gengrid_item_prev_get(m->del_it);
 
-       elm_object_item_data_set(priv->del_it, NULL);
-       elm_object_item_del(priv->del_it);
+       elm_object_item_data_set(m->del_it, NULL);
+       elm_object_item_del(m->del_it);
 
        if (!prev && !next)
-               _grid_to_label(priv->layout);
-       else if (priv->del_it == priv->focus_it) {
+               m_DrawNoContentArea();
+       else if (m->del_it == m->focus_it) {
                if (prev)
-                       priv->focus_it = prev;
-
+                       m->focus_it = prev;
                else
-                       priv->focus_it = next;
+                       m->focus_it = next;
 
-               elm_object_item_focus_set(priv->focus_it, EINA_TRUE);
+               elm_object_item_focus_set(m->focus_it, EINA_TRUE);
        }
 
-       priv->del_it = NULL;
-
-       return EINA_FALSE;
+       m->del_it = NULL;
 }
 
-static void _update_src_list(void *user_data, void *data, enum update_ui type)
+void CPluggedLayout::Update(void *data, enum update_ui type)
 {
+       ASSERT(m);
+
        Eina_List *list, *l;
        Ecore_Timer *timer;
-       Evas_Object *layout;
-       struct _priv *priv;
        CSourceMgr *srcmgr;
        CSourceInfo *si;
-       CSourceInfo *si_data = (CSourceInfo *)data;
+       CSourceInfo *si_data;
        int count;
        void *obj;
 
-       if (!user_data) {
-               _ERR("Invaild data.");
-               return;
-       }
-
-       layout = (Evas_Object *)user_data;
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv || !priv->grid || !priv->srcmgr || priv->is_pause) {
-               _ERR("Invaild data.");
-               return;
-       }
-
-       srcmgr = priv->srcmgr;
+       srcmgr = m->srcmgr;
        list = srcmgr->PluggedList();
        count = eina_list_count(list);
 
-       if (type == SRC_PLUG_ADD_ONE && data) {
-
-               util_add_item(priv->grid, si_data);
+       if (type == SRC_PLUG_ADD_ONE) {
+               si_data = (CSourceInfo *)data;
+               util_add_item(m->grid, si_data);
 
                if (count >= 1)
-                       _label_to_grid(layout);
+                       m_DrawContentArea();
        } else if (type == SRC_PLUG_DEL_ONE && data) {
-
-               priv->del_it = (Elm_Object_Item*)si_data->Data();
+               si_data = (CSourceInfo *)data;
+               m->del_it = (Elm_Object_Item*)si_data->Data();
                si_data->SetData(NULL);
 
-               timer = ecore_timer_add(DEL_IT_TIME, _timer_del_item_cb, priv);
-               elm_object_item_data_set(priv->del_it, timer);
-               util_dim_item(priv->del_it);
+               timer = ecore_timer_add(DEL_IT_TIME, sm_CbTimerDelItem, m);
+               elm_object_item_data_set(m->del_it, timer);
+               util_dim_item(m->del_it);
        } else if (type == SRC_UPDATE_ALL) {
+               if (count == 0) {
+                       m_DrawNoContentArea();
+                       return;
+               } else
+                       m_DrawContentArea();
 
-               if (count == 0)
-                       _grid_to_label(layout);
-               else {
-                       _label_to_grid(layout);
+               elm_gengrid_clear(m->grid);
 
-                       elm_gengrid_clear(priv->grid);
-
-                       EINA_LIST_FOREACH(list, l, obj) {
-                               si = (CSourceInfo *)obj;
-                               util_add_item(priv->grid, si);
-                       }
+               EINA_LIST_FOREACH(list, l, obj) {
+                       si = (CSourceInfo *)obj;
+                       util_add_item(m->grid, si);
                }
        }
 }
-
-static void _pause_layout(Evas_Object *layout)
-{
-       struct _priv *priv;
-
-       if (!layout)
-               return;
-
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv || !priv->grid || priv->is_pause)
-               return;
-
-       priv->is_pause = 1;
-       elm_gengrid_clear(priv->grid);
-       evas_object_hide(layout);
-}
-
-static void _resume_layout(Evas_Object *layout)
-{
-       struct _priv *priv;
-
-       if (!layout)
-               return;
-
-       priv = (struct _priv *)evas_object_data_get(layout, PRIV);
-       if (!priv || !priv->is_pause)
-               return;
-
-       priv->is_pause = 0;
-       _update_src_list(layout, NULL, SRC_UPDATE_ALL);
-       evas_object_show(layout);
-}
-
-static struct layout_class _lclass; /* = {
-       .create = _create_layout,
-       .destory = _destory_layout,
-       .pause = _pause_layout,
-       .resume = _resume_layout,
-       .update = _update_src_list
-};*/
-
-struct layout_class *get_plugged_lclass()
-{
-       _lclass.create = _create_layout;
-       _lclass.destory = _destory_layout;
-       _lclass.pause = _pause_layout;
-       _lclass.resume = _resume_layout;
-       _lclass.update = _update_src_list;
-       return &_lclass;
-}