pkg_check_modules(HOMEPANEL_PKGS REQUIRED
application-common
capi-appfw-application
-# capi-system-usbdevice
dlog
edje
elementary
evas
- utilX
eina
aul
)
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
}/*group*/
group {
- name: GRP_CONTENT;
+ name: GRP_PLUGGED_CONTENT;
parts {
part {
name: PART_CONTENT_CONTENT;
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";
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;
}
}
min: SZ_NO_PLUG_SRC_TEXT_LINE1;
fixed: 1 1;
text {
- text: "No plugged source";
font: "TizenSans:style=Medium";
size: 35;
min: 1 1;
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;
}/*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;
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;
}
}
}/*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;
}
}
}/*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*/
image: IMG_MENU_BTN_BG COMP;
image: IMG_MENU_BTN_ICO_PLUG COMP;
}
+ data.item: "focus_highlight" "on";
parts {
part {
name: "button_image";
group {
name: "elm/button/base/"BTN_STYLE_SET_UP_NETWORK;
+ data.item: "focus_highlight" "on";
parts {
part {
name: "bg";
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;
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;
}
#ifndef __DEF_H__
#define __DEF_H__
+#define KEY_BACK "Escape"
+#define KEY_MENU "Super_L"
+
/* for source-list edc */
#define GRP_BG "bg"
#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"
+++ /dev/null
-/*
- * 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__ */
typedef void (*TUpdateUI)(void *user_data, void *data, enum update_ui update_type);
-class CSourceMgr {
+class CSourceMgr {
private:
static CSourceMgr *instance;
struct SSourceMgr *m;
#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;
#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__ */
#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__ */
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)
#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"
{
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;
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;
}
}
virtual bool CheckPlug(void)
{
- return true;
+ return false;
}
virtual const char *Name(void)
{
+++ /dev/null
-/*
- * 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);
-}
#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;
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));
}
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)
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)
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;
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);
_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); }
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;
#include <Elementary.h>
#include <app.h>
#include <aul.h>
-#include <utilX.h>
#include "AppCommon.h"
#include "BaseView.h"
*/
#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);
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;
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)
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);
+ }
+ }
}
*/
#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);
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;
-}