From 473a826c4fa089d1d775f0611c0d342e33d8795a Mon Sep 17 00:00:00 2001 From: Kim Youngjin Date: Mon, 30 Mar 2015 17:27:33 +0900 Subject: [PATCH] Refactoring Change-Id: Ib44549f0a0d266c0315e8de76cba9beb97cd2984 Signed-off-by: Kim Youngjin --- CMakeLists.txt | 2 +- include/{viewmgr.h => settingviewmgr.h} | 56 +++++- include/view_maincatalog.h | 28 ++- include/view_need_pwd.h | 31 ++- include/view_pwd_popup.h | 27 ++- include/view_sublist.h | 43 ++++- include/view_system_clock.h | 38 +++- include/view_uigadget.h | 31 ++- src/main.cpp | 2 +- src/{viewmgr.cpp => settingviewmgr.cpp} | 206 ++++++++++++-------- src/view_maincatalog.cpp | 330 ++++++++++++++------------------ src/view_need_pwd.cpp | 239 +++++++++++------------ src/view_pwd_popup.cpp | 178 ++++++++--------- src/view_sublist.cpp | 316 +++++++++++++++--------------- src/view_system_clock.cpp | 293 +++++++++++++--------------- src/view_uigadget.cpp | 186 +++++++++--------- 16 files changed, 1072 insertions(+), 934 deletions(-) rename include/{viewmgr.h => settingviewmgr.h} (70%) rename src/{viewmgr.cpp => settingviewmgr.cpp} (77%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b360141..c2acbc5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,7 +77,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) ADD_EXECUTABLE(${PROJECT_NAME} src/main.cpp - src/viewmgr.cpp + src/settingviewmgr.cpp src/parser.cpp src/data_wrapper.cpp src/utils.cpp diff --git a/include/viewmgr.h b/include/settingviewmgr.h similarity index 70% rename from include/viewmgr.h rename to include/settingviewmgr.h index d0120e0..3acf9d2 100644 --- a/include/viewmgr.h +++ b/include/settingviewmgr.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#ifndef __VIEWMGR_H__ -#define __VIEWMGR_H__ +#ifndef __SETTING_VIEW_MGR_H__ +#define __SETTING_VIEW_MGR_H__ #include #include "data_wrapper.h" -#include "viewmgr.h" +//#include "viewmgr.h" #define SELECTED_ITEM_ID "bottomslider_selected_item" @@ -38,8 +38,6 @@ #define VCLASS_TITLE_NEED_PASSCODE "Need Passcode" -struct setting_mgr; - struct evas_obj_data { Evas_Object *subitem_box; Evas_Object *cur_btn; @@ -56,6 +54,48 @@ struct obj_geometry_data { class CSettingMgr; + +class CSettingBaseView { +private: + char *m_title; + +public: + CSettingBaseView(const char *pViewId); + virtual ~CSettingBaseView(); + const char *ViewId(void) { return m_title; } + + virtual bool Create(struct settingview_data *view, void *prev) { return false; } + virtual void Show(void) {} + virtual void Pause(void) {} + virtual void Resume(void) {} + virtual void Refresh(void) {} + virtual void Update(void) {} + virtual void Hide(void) {} + virtual void Destroy(void) {} + virtual void LangChanged(void) {} + virtual void Frozen(void) {} + virtual void Active(void) {} + + const char *Title(void) { return m_title; } + virtual Evas_Object *Base(void); + + int hide_view; + + + /*void(*show)(Evas_Object *base); + void(*pause)(Evas_Object *base); + void(*resume)(Evas_Object *base); + void(*refresh)(Evas_Object *base); + void(*update)(Evas_Object *base); + void(*hide)(Evas_Object *base); + void(*destroy)(Evas_Object *base); + void(*lang_changed)(Evas_Object *base); + void(*frozen)(Evas_Object *base); + void(*active)(Evas_Object *base); + int hide_view;*/ +}; + +/* struct setting_class { const char *title; Evas_Object * (*create)(CSettingMgr *mgr, @@ -71,13 +111,13 @@ struct setting_class { void (*frozen)(Evas_Object *base); void (*active)(Evas_Object *base); int hide_view; -}; +};*/ class CSettingMgr { private: static CSettingMgr *instance; - struct setting_mgr *m; + struct SSettingMgr *m; protected: CSettingMgr() : m(0) {} @@ -111,4 +151,4 @@ public: }; -#endif /* __VIEWMGR_H__ */ +#endif /* __SETTING_VIEW_MGR_H__ */ diff --git a/include/view_maincatalog.h b/include/view_maincatalog.h index 675379a..22ae52b 100644 --- a/include/view_maincatalog.h +++ b/include/view_maincatalog.h @@ -17,8 +17,32 @@ #ifndef __VIEW_MAINMENU_H__ #define __VIEW_MAINMENU_H__ -#include "viewmgr.h" -struct setting_class *view_maincatalog_get_vclass(void); +#include "settingviewmgr.h" + + +class CMainCatalogView : + public CSettingBaseView { +private: + struct SMainCatalog *m; + +public: + CMainCatalogView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {} + virtual ~CMainCatalogView() {} + + Evas_Object *Base(void); + + virtual bool Create(struct settingview_data *view, void *prev); + virtual void Show(void); + virtual void Refresh(void); + virtual void Hide(void); + virtual void Destroy(void); + virtual void LangChanged(void); + virtual void Frozen(void); + virtual void Active(void); + +}; + +//struct setting_class *view_maincatalog_get_vclass(void); #endif /* __VIEW_MAINMENU_H__ */ diff --git a/include/view_need_pwd.h b/include/view_need_pwd.h index 7dafdf2..0ae50bc 100644 --- a/include/view_need_pwd.h +++ b/include/view_need_pwd.h @@ -17,8 +17,35 @@ #ifndef __VIEW_NEED_PASSCODE_H__ #define __VIEW_NEED_PASSCODE_H__ -#include "viewmgr.h" -struct setting_class *view_need_passcode_get_vclass(void); +#include "settingviewmgr.h" + + +class CNeedPasscodeView : + public CSettingBaseView { +private: + struct SNeedPasscodeView *m; + +private: + static void sm_CbCtxpopupDismissed(void *priv, Evas_Object *obj, void *ev); + void m_OnCtxpopupDismissed(Evas_Object *obj, void *ev); + + static void sm_CbKeyDown(void *priv, Evas *e, Evas_Object *obj, void *ei); + void m_OnKeyDown(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev); + + int m_AddViewEntries(void); + +public: + CNeedPasscodeView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {} + virtual ~CNeedPasscodeView() {} + + Evas_Object *Base(void); + + virtual bool Create(struct settingview_data *view, void *prev); + virtual void Show(void); + virtual void Refresh(void); + virtual void Hide(void); + virtual void Destroy(void); +}; #endif /* __VIEW_NEED_PASSCODE_H__ */ diff --git a/include/view_pwd_popup.h b/include/view_pwd_popup.h index 58cb88f..9a40adf 100644 --- a/include/view_pwd_popup.h +++ b/include/view_pwd_popup.h @@ -17,8 +17,31 @@ #ifndef __VIEW_PASSCODE_POPUP_H__ #define __VIEW_PASSCODE_POPUP_H__ -#include "viewmgr.h" -struct setting_class *view_passcode_popup_get_vclass(void); +#include "settingviewmgr.h" + + +//struct setting_class *view_passcode_popup_get_vclass(void); +class CPasscodePopupView : + public CSettingBaseView { +private: + struct SPasscodePopupView *m; + +private: + static void sm_CbCtxpopupDismissed(void *priv, Evas_Object *obj, void *ev); + void m_OnCtxpopupDismissed(Evas_Object *obj, void *ev); + +public: + CPasscodePopupView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {} + virtual ~CPasscodePopupView() {} + + Evas_Object *Base(void); + + virtual bool Create(struct settingview_data *view, void *prev); + virtual void Show(void); + virtual void Hide(void); + virtual void Destroy(void); +}; + #endif /* __VIEW_PASSCODE_POPUP_H__ */ diff --git a/include/view_sublist.h b/include/view_sublist.h index 930faaa..9733191 100644 --- a/include/view_sublist.h +++ b/include/view_sublist.h @@ -17,8 +17,47 @@ #ifndef __VIEW_SUBLIST_H__ #define __VIEW_SUBLIST_H__ -#include "viewmgr.h" -struct setting_class *view_sublist_get_vclass(void); +#include "settingviewmgr.h" + + +class CSublistView : + public CSettingBaseView { +private: + struct SSublistView *m; + +private: + static void sm_CbSubitemBtnClicked(void *data, Evas_Object *obj, void *ev); + void m_OnSubitemBtnClicked(Evas_Object *obj, void *ev); + + static void sm_CbSubitemKeyPressed(void *data, Evas *e, Evas_Object *obj, void *ei); + void m_OnSubitemKeyPressed(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev); + + static void sm_CbSubitemFocusOut(void *data, Evas_Object *obj, void *ev); + void m_OnSubitemFocusOut(Evas_Object *obj, void *ev); + + static void sm_CbSubitemFocusIn(void *data, Evas_Object *obj, void *ev); + void m_OnSubitemFocusIn(Evas_Object *obj, void *ev); + + static void sm_CbCtxpopupDismissed(void *data, Evas_Object *obj, void *ev); + void m_OnCtxpopupDismissed(Evas_Object *obj, void *ev); + + int m_DrawSublist(void); + void m_ExitView(void); + void m_SetSelectedValue(Evas_Object *obj); + int m_DrawListItems(Eina_List *list); + +public: + CSublistView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {} + virtual ~CSublistView() {} + + Evas_Object *Base(void); + + virtual bool Create(struct settingview_data *view, void *prev); + virtual void Show(void); + virtual void Hide(void); + virtual void Destroy(void); +}; + #endif /* __VIEW_SUBLIST_H__ */ diff --git a/include/view_system_clock.h b/include/view_system_clock.h index 2e9eb3f..2881ff5 100644 --- a/include/view_system_clock.h +++ b/include/view_system_clock.h @@ -17,8 +17,42 @@ #ifndef _VIEW_SYSTEM_CLOCK_H__ #define _VIEW_SYSTEM_CLOCK_H__ -#include "viewmgr.h" -struct setting_class *view_system_clock_get_vclass(void); +#include "settingviewmgr.h" + + +class CSystemClockView : + public CSettingBaseView { +private: + struct SSystemClockView *m; + +private: + static void sm_CbSubitemClicked(void *priv, Evas_Object *obj, void *ev); + void m_OnSubitemClicked(Evas_Object *obj, void *ev); + + static void sm_CbSubitemKeypress(void *priv, Evas *e, Evas_Object *obj, void *ei); + void m_OnSubitemKeypress(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ei); + + static void sm_CbCtxpopupDismissed(void *priv, Evas_Object *obj, void *ev); + void m_OnCtxpopupDismissed(Evas_Object *obj, void *ev); + + void m_ExitView(void); + + int m_DrawSysclkSublist(void); + int m_AddSysclkSublistItem(Eina_List *list, const char *selval); + +public: + CSystemClockView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {} + virtual ~CSystemClockView() {} + + Evas_Object *Base(void); + + virtual bool Create(struct settingview_data *view, void *prev); + virtual void Show(void); + virtual void Refresh(void); + virtual void Hide(void); + virtual void Destroy(void); +}; + #endif /* _VIEW_SYSTEM_CLOCK_H__ */ diff --git a/include/view_uigadget.h b/include/view_uigadget.h index d35ee8b..88359e0 100644 --- a/include/view_uigadget.h +++ b/include/view_uigadget.h @@ -17,8 +17,35 @@ #ifndef __VIEW_UIGADGET_H__ #define __VIEW_UIGADGET_H__ -#include "viewmgr.h" -struct setting_class *view_uigadget_get_vclass(void); +#include +#include "settingviewmgr.h" + + +class CUiGadgetView : + public CSettingBaseView { +private: + struct SUiGadgetView *m; + +private: + static void sm_CbUgLayout(ui_gadget_h ug, enum ug_mode mode, void *priv); + static void sm_CbUgResult(ui_gadget_h ug, service_h result, void *priv); + static void sm_CbUgDestroy(ui_gadget_h ug, void *priv); + void m_OnUgDestroy(ui_gadget_h ug); + + bool m_Load(void); + void m_BackToMainview(void); + +public: + CUiGadgetView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {} + virtual ~CUiGadgetView() {} + + Evas_Object *Base(void); + + virtual bool Create(struct settingview_data *view, void *prev); + virtual void Show(void); + virtual void Hide(void); + virtual void Destroy(void); +}; #endif /* __VIEW_UIGADGET_H__ */ diff --git a/src/main.cpp b/src/main.cpp index e043aad..c9d424a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,7 +19,7 @@ #include #include "dbg.h" #include "def.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #include "utils.h" #include "json_marco.h" #include "settings_provider.h" diff --git a/src/viewmgr.cpp b/src/settingviewmgr.cpp similarity index 77% rename from src/viewmgr.cpp rename to src/settingviewmgr.cpp index bc98edd..4a85a31 100644 --- a/src/viewmgr.cpp +++ b/src/settingviewmgr.cpp @@ -16,9 +16,10 @@ #include #include -#include "viewmgr.h" -#include "data_wrapper.h" #include "dbg.h" + +#include "settingviewmgr.h" +#include "data_wrapper.h" #include "timeout_handler.h" #include "view_maincatalog.h" #include "view_uigadget.h" @@ -26,12 +27,12 @@ #include "view_pwd_popup.h" #include "view_system_clock.h" #include "view_need_pwd.h" -#include "viewmgr.h" +//#include "settingviewmgr.h" #define MAINCATALOG "maincatalog" #define PATH_FACTOR 3 -struct setting_mgr { +struct SSettingMgr { Evas_Object *win; int depth; @@ -46,16 +47,37 @@ struct setting_mgr { struct _settinginfo { Evas_Object *base; - struct setting_class *sclass; + CSettingBaseView *sclass; struct settingview_data *sview; }; struct settingui_func_map { const char *style; - struct setting_class* (*get_vclass)(void); + CSettingBaseView *view; + //struct setting_class* (*get_vclass)(void); }; -static struct settingui_func_map g_func_map[] = { + +CSettingBaseView::CSettingBaseView(const char *pViewId) +{ + m_title = new char[strlen(pViewId) + 1]; + strcpy(m_title, pViewId); +} + + +CSettingBaseView::~CSettingBaseView() +{ + delete[] m_title; +} + + +Evas_Object *CSettingBaseView::Base(void) +{ + return NULL; +} + + +static struct settingui_func_map g_func_map[5];/* = { { .style = STYLE_UIGADGET, .get_vclass = view_uigadget_get_vclass @@ -75,18 +97,18 @@ static struct settingui_func_map g_func_map[] = { { .style = STYLE_NEED_PASSCODE, .get_vclass = view_need_passcode_get_vclass - } -}; + }*/ +//}; /** * This function is invoked to build setting view data. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param name[in] The item name to be created view. * @return The settingview_data data pointer, NULL on error. */ static struct settingview_data *_build_setting_view( - struct setting_mgr *mgr, const char *name) + struct SSettingMgr *mgr, const char *name) { struct settingview_data *data; int r; @@ -111,17 +133,20 @@ static struct settingview_data *_build_setting_view( return data; } + + +CMainCatalogView g_maincatalog(VCLASS_TITLE_MAIN_VIEW); /** * This function is invoked to get setting_class data pointer, this data stand for a kind of view. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param view[in] The settingview_data data pointer. * @return The setting_class data pointer, NULL on error. */ -static struct setting_class *_get_view_class(struct setting_mgr *mgr, +static CSettingBaseView *_get_view_class(SSettingMgr *mgr, struct settingview_data *view) { - struct setting_class *vclass; + CSettingBaseView *vclass; struct settingitem *parent; Eina_List *list; const char *style; @@ -144,13 +169,13 @@ static struct setting_class *_get_view_class(struct setting_mgr *mgr, if (list && !style) { if (mgr->depth == 1) - vclass = view_maincatalog_get_vclass(); + vclass = &g_maincatalog;// view_maincatalog_get_vclass(); } else { size = sizeof(g_func_map) / sizeof(*g_func_map); for (i = 0; i < size; i++) { if (!strncmp(style, g_func_map[i].style, strlen(style)) - && g_func_map[i].get_vclass) { - vclass = g_func_map[i].get_vclass(); + && g_func_map[i].view) { + vclass = g_func_map[i].view;// get_vclass(); break; } } @@ -162,10 +187,10 @@ static struct setting_class *_get_view_class(struct setting_mgr *mgr, /** * This function is invoked to hide all views stored in view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ -void _hide_view_in_list(struct setting_mgr *mgr) +void _hide_view_in_list(struct SSettingMgr *mgr) { Eina_List *l; struct _settinginfo *sinfo; @@ -178,18 +203,19 @@ void _hide_view_in_list(struct setting_mgr *mgr) EINA_LIST_FOREACH(mgr->view_list, l, obj) { sinfo = (struct _settinginfo *) obj; - if (sinfo->sclass->hide) - sinfo->sclass->hide(sinfo->base); + sinfo->sclass->Hide(); + //if (sinfo->sclass->hide) + // sinfo->sclass->hide(sinfo->base); } } /** * This function is invoked to show all views stored in view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ -void _show_view_in_list(struct setting_mgr *mgr) +void _show_view_in_list(struct SSettingMgr *mgr) { Eina_List *l; struct _settinginfo *sinfo; @@ -202,18 +228,19 @@ void _show_view_in_list(struct setting_mgr *mgr) EINA_LIST_FOREACH(mgr->view_list, l, obj) { sinfo = (struct _settinginfo *) obj; - if (sinfo->sclass->show) - sinfo->sclass->show(sinfo->base); + sinfo->sclass->Show(); + //if (sinfo->sclass->show) + // sinfo->sclass->show(sinfo->base); } } /** * This function is invoked to destroy all views stored in view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ -void _destroy_views_in_list(struct setting_mgr *mgr) +void _destroy_views_in_list(struct SSettingMgr *mgr) { Eina_List *l; struct _settinginfo *sinfo; @@ -226,18 +253,19 @@ void _destroy_views_in_list(struct setting_mgr *mgr) EINA_LIST_FOREACH(mgr->view_list, l, obj) { sinfo = (struct _settinginfo *) obj; - if (sinfo->sclass->destroy) - sinfo->sclass->destroy(sinfo->base); + sinfo->sclass->Destroy(); + //if (sinfo->sclass->destroy) + // sinfo->sclass->destroy(sinfo->base); } } /** * This function is invoked to freeze all views's event stored in view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ -void _frozen_view_in_list(struct setting_mgr *mgr) +void _frozen_view_in_list(struct SSettingMgr *mgr) { Eina_List *l; struct _settinginfo *sinfo; @@ -250,18 +278,19 @@ void _frozen_view_in_list(struct setting_mgr *mgr) EINA_LIST_REVERSE_FOREACH(mgr->view_list, l, obj) { sinfo = (struct _settinginfo *)obj; - if (sinfo->sclass->frozen) - sinfo->sclass->frozen(sinfo->base); + sinfo->sclass->Frozen(); + //if (sinfo->sclass->frozen) + // sinfo->sclass->frozen(sinfo->base); } } /** * This function is invoked to activate all views's event stored in view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ -void _active_view_in_list(struct setting_mgr *mgr) +void _active_view_in_list(struct SSettingMgr *mgr) { Eina_List *l; struct _settinginfo *sinfo; @@ -274,8 +303,9 @@ void _active_view_in_list(struct setting_mgr *mgr) EINA_LIST_REVERSE_FOREACH(mgr->view_list, l, obj) { sinfo = (struct _settinginfo *)obj; - if (sinfo->sclass->active) - sinfo->sclass->active(sinfo->base); + sinfo->sclass->Active(); + //if (sinfo->sclass->active) + // sinfo->sclass->active(sinfo->base); } } @@ -287,7 +317,7 @@ CSettingMgr *CSettingMgr::instance = NULL; * This function is invoked to initialize setting manager. * * @param win [in] The window's evas object. -* @return The setting_mgr data pointer. +* @return The SSettingMgr data pointer. */ bool CSettingMgr::Initialize(Evas_Object *win) { @@ -297,7 +327,7 @@ bool CSettingMgr::Initialize(Evas_Object *win) if (!instance) { return false; } - instance->m = new setting_mgr; + instance->m = new SSettingMgr; if (!instance->m) { delete instance; return false; @@ -328,6 +358,29 @@ bool CSettingMgr::Initialize(Evas_Object *win) return false; } + CUiGadgetView g_uigadget(VCLASS_TITLE_UG); + CSublistView g_sublist(VCLASS_TITLE_SUBLIST); + CPasscodePopupView g_passcodePopup(VCLASS_TITLE_CHANGE_PASSCODE); + CSystemClockView g_systemclock(VCLASS_TITLE_SYSTEM_CLOCK); + CNeedPasscodeView g_needpasscode(VCLASS_TITLE_NEED_PASSCODE); + + g_func_map[0].style = STYLE_UIGADGET; + g_func_map[0].view = &g_uigadget; + + g_func_map[1].style = STYLE_CTXPOPUP; + g_func_map[1].view = &g_sublist; + + g_func_map[2].style = STYLE_PASSCODE_POPUP; + g_func_map[2].view = &g_passcodePopup; + + g_func_map[3].style = STYLE_CLOCK_CTXPOPUP; + g_func_map[3].view = &g_systemclock; + + g_func_map[4].style = STYLE_NEED_PASSCODE; + g_func_map[4].view = &g_needpasscode; + + + instance->m->win = win; instance->m->depth = 0; @@ -341,9 +394,9 @@ bool CSettingMgr::Initialize(Evas_Object *win) /** * This function is invoked to destroy all views stored in view list and release -* setting_mgr data structure. +* SSettingMgr data structure. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ void CSettingMgr::Finalize(void) @@ -387,7 +440,7 @@ CSettingMgr *CSettingMgr::GetInstance(void) * Firstly, it will build view data, then get specific view class to create view. * Otherwise, it will freeze or hide background view and store _settinginfo data into view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param name [in] The item name to be pushed view. * @param data [in] The function specific data passed by caller. * @return 0 if success, -1 if fail. @@ -397,9 +450,8 @@ bool CSettingMgr::ViewPush(const char *name, void *data) ASSERT(m); ASSERT(name); - Evas_Object *base; struct _settinginfo *sinfo; - struct setting_class *sclass; + CSettingBaseView *sclass; struct settingview_data *view; m->depth++; @@ -420,8 +472,7 @@ bool CSettingMgr::ViewPush(const char *name, void *data) goto error; } - base = sclass->create(this, view, data); - if (!base) { + if (!sclass->Create(view, data)) { _ERR("failed to create base layout."); goto error; } @@ -431,10 +482,9 @@ bool CSettingMgr::ViewPush(const char *name, void *data) if (sclass->hide_view) _hide_view_in_list(m); - if (sclass->show) - sclass->show(base); + sclass->Show(); - sinfo->base = base; + sinfo->base = sclass->Base(); sinfo->sclass = sclass; sinfo->sview = view; @@ -456,7 +506,7 @@ error: * Firstly, get top view's _settinginfo data from view list, then call destroy interface of * view class, finally it will refresh second view, activate and show all views behind top view. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ void CSettingMgr::ViewPop(void) @@ -464,7 +514,7 @@ void CSettingMgr::ViewPop(void) ASSERT(m); struct _settinginfo *sinfo, *prev; - struct setting_class *sclass; + CSettingBaseView *sclass; int hide; char *item; const char *title; @@ -478,15 +528,14 @@ void CSettingMgr::ViewPop(void) sclass = sinfo->sclass; hide = sclass->hide_view; - title = sclass->title; + title = sclass->Title(); item = NULL; if (!strncmp(title, VCLASS_TITLE_BOTTOM_SLIDER, strlen(title))) item = (char *)evas_object_data_del(sinfo->base, SELECTED_ITEM_ID); - if (sclass->destroy && sinfo->base) - sclass->destroy(sinfo->base); + sclass->Destroy(); m->view_list = eina_list_remove_list(m->view_list, m->view_list); free(sinfo); @@ -503,11 +552,8 @@ void CSettingMgr::ViewPop(void) if (item && !strncmp(title, VCLASS_TITLE_BOTTOM_SLIDER, strlen(title))) evas_object_data_set(prev->base, SELECTED_ITEM_ID, item); - if (sclass->refresh) - sclass->refresh(prev->base); - - if (sclass->update) - sclass->update(prev->base); + sclass->Refresh(); + sclass->Update(); _active_view_in_list(m); @@ -518,7 +564,7 @@ void CSettingMgr::ViewPop(void) /** * This function is invoked to get window's evas object. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return The window's evas object, NULL on error. */ Evas_Object *CSettingMgr::Window(void) @@ -531,7 +577,7 @@ Evas_Object *CSettingMgr::Window(void) /** * This function is invoked to get view data with specific name. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param name [in] The view name to be got. * @return The settingview_data data pointer, NULL on error. */ @@ -545,7 +591,7 @@ settingview_data *CSettingMgr::GetView(const char *name) /** * This function is invoked to get setting manager data. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return The settingmgr_data data pointer, NULL on error. */ settingmgr_data *CSettingMgr::GetData(void) @@ -558,7 +604,7 @@ settingmgr_data *CSettingMgr::GetData(void) /** * This function is invoked to get view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return The Eina_List data pointer, NULL on error. */ Eina_List *CSettingMgr::GetViewList(void) @@ -575,7 +621,7 @@ Eina_List *CSettingMgr::GetViewList(void) * When launch setting by command-line, this function will be invoked. In this launching * way, setting will be launched and move focus to specific item. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param name [in] The item name. * @return 0 if success, -1 if fail. */ @@ -637,7 +683,7 @@ bool CSettingMgr::LaunchItem(const char *name) * Item path is a value described all node value from root node to item * in setting tree of json files. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return The Eina_Array data pointer, NULL on error. */ Eina_Array *CSettingMgr::GetItemPath(void) @@ -650,7 +696,7 @@ Eina_Array *CSettingMgr::GetItemPath(void) /** * This function is invoked to refresh all view stored in view list. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ void CSettingMgr::ViewRefresh(void) @@ -658,7 +704,7 @@ void CSettingMgr::ViewRefresh(void) ASSERT(m); struct _settinginfo *info; - struct setting_class *vclass; + CSettingBaseView *vclass; if (!m->view_list) return; @@ -669,17 +715,14 @@ void CSettingMgr::ViewRefresh(void) vclass = info->sclass; - if (vclass->refresh) - vclass->refresh(info->base); - - if (vclass->update) - vclass->update(info->base); + vclass->Refresh(); + vclass->Update(); } /** * This function is invoked to set refresh flag. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param val [in] The value to be set. * @return void. */ @@ -693,7 +736,7 @@ void CSettingMgr::SetRefreshFlag(unsigned int val) /** * This function is invoked to get refresh flag. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return The refresh flag value, -1 if fail. */ unsigned int CSettingMgr::GetRefreshFlag(void) @@ -706,7 +749,7 @@ unsigned int CSettingMgr::GetRefreshFlag(void) /** * This function is invoked to set relaunch flag. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @param val [in] The value to be set. * @return void. */ @@ -720,7 +763,7 @@ void CSettingMgr::SetRelaunchFlag(unsigned int val) /** * This function is invoked to get relaunch flag. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return The refresh flag value, -1 if fail. */ unsigned int CSettingMgr::GetRelaunchFlag(void) @@ -733,7 +776,7 @@ unsigned int CSettingMgr::GetRelaunchFlag(void) /** * This function wrapped timeout_handler interface to freeze timer. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ void CSettingMgr::FreezeTimeout(void) @@ -747,7 +790,7 @@ void CSettingMgr::FreezeTimeout(void) /** * This function wrapped timeout_handler interface to thaw timer. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ void CSettingMgr::ThawTimeout(void) @@ -761,7 +804,7 @@ void CSettingMgr::ThawTimeout(void) /** * This function is invoked to get timeout freeze state. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return EINA_TRUE if current state is frozen * EINA_FALSE if current state is normal or occurred error. */ @@ -775,7 +818,7 @@ Eina_Bool CSettingMgr::GetTimeoutFreezeState(void) /** * This function is invoked to refresh all views when system language changed. * -* @param mgr [in] The setting_mgr data pointer. +* @param mgr [in] The SSettingMgr data pointer. * @return void. */ void CSettingMgr::LangChanged(void) @@ -798,7 +841,6 @@ void CSettingMgr::LangChanged(void) return; } - if (sinfo->sclass->lang_changed) - sinfo->sclass->lang_changed(sinfo->base); + sinfo->sclass->LangChanged(); } } diff --git a/src/view_maincatalog.cpp b/src/view_maincatalog.cpp index 277740c..61331df 100644 --- a/src/view_maincatalog.cpp +++ b/src/view_maincatalog.cpp @@ -19,12 +19,12 @@ #include "dbg.h" #include "def.h" #include "stdbool.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #include "utils.h" #include "view_maincatalog.h" #include "data_wrapper.h" #include "settings_provider.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #define DATA_ID "main_setting_data" #define SUBITEM_DATA_ID "subitem_data_id" @@ -49,7 +49,7 @@ enum focused_state { FOCUS_SUB_ITEM }; -struct _view_data { +struct SMainCatalog { Evas_Object *win; Evas_Object *base; Eina_Array *sub_item_btn; @@ -78,7 +78,7 @@ struct _view_data { * * @return: void. */ -static void _move_from_subitem_to_main_item(struct _view_data *data, +static void _move_from_subitem_to_main_item(SMainCatalog *data, Evas_Object *btn) { if (!data || !btn) @@ -104,7 +104,7 @@ static void _subitem_key_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *ei) { Evas_Event_Key_Down *ev; - struct _view_data *priv; + SMainCatalog *priv; Evas_Object *pb; Evas_Object *next; @@ -115,7 +115,7 @@ static void _subitem_key_pressed_cb(void *data, Evas *e, if (!ev->keyname) return; - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; if (!strcmp(ev->keyname, KEY_LEFT) || !strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) { pb = (Evas_Object *) evas_object_data_get(obj, PROGRESS_BAR_DATA); @@ -199,7 +199,7 @@ static void _get_geometry_data(Evas_Object *obj, * * @return: 0 - success, -1 - fail. */ -static int _push_ug_view(struct _view_data *data, +static int _push_ug_view(SMainCatalog *data, struct settingitem *item, Evas_Object *obj) { const char *id; @@ -237,7 +237,7 @@ static int _push_ug_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_sublist_view(struct _view_data *data, +static int _push_sublist_view(SMainCatalog *data, struct settingitem *item, Evas_Object *obj) { const char *id; @@ -275,7 +275,7 @@ static int _push_sublist_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_bottom_sublist_view(struct _view_data *data, +static int _push_bottom_sublist_view(SMainCatalog *data, struct settingitem *item) { const char *id; @@ -308,7 +308,7 @@ static int _push_bottom_sublist_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_bottom_slider_view(struct _view_data *data, +static int _push_bottom_slider_view(SMainCatalog *data, struct settingitem *item, Evas_Object *obj) { const char *id; @@ -351,7 +351,7 @@ static int _push_bottom_slider_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_passcode_popup_view(struct _view_data *data, +static int _push_passcode_popup_view(SMainCatalog *data, struct settingitem *item) { const char *id; @@ -383,7 +383,7 @@ static int _push_passcode_popup_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_device_manager_view(struct _view_data *data, +static int _push_device_manager_view(SMainCatalog *data, struct settingitem *item) { const char *id; @@ -419,7 +419,7 @@ static int _push_device_manager_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_reset_popup_view(struct _view_data *data, +static int _push_reset_popup_view(SMainCatalog *data, struct settingitem *item) { const char *id; @@ -451,7 +451,7 @@ static int _push_reset_popup_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_upgrade_popup_view(struct _view_data *data, +static int _push_upgrade_popup_view(SMainCatalog *data, struct settingitem *item) { const char *id; @@ -484,7 +484,7 @@ static int _push_upgrade_popup_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_clock_sublist_view(struct _view_data *data, +static int _push_clock_sublist_view(SMainCatalog *data, struct settingitem *item, Evas_Object *obj) { const char *id; @@ -529,7 +529,7 @@ static int _push_clock_sublist_view(struct _view_data *data, * * @return: 0 - success, -1 - fail. */ -static int _push_need_passcode_view(struct _view_data *data, +static int _push_need_passcode_view(SMainCatalog *data, struct settingitem *item, Evas_Object *obj) { const char *id; @@ -569,7 +569,7 @@ static int _push_need_passcode_view(struct _view_data *data, */ static void _submenu_item_clicked(void *data, Evas_Object *obj) { - struct _view_data *priv; + SMainCatalog *priv; const char *style; struct settingitem *item; @@ -578,7 +578,7 @@ static void _submenu_item_clicked(void *data, Evas_Object *obj) return; } - priv = (struct _view_data *) data; + priv = (SMainCatalog *) data; if (priv->focus_status != FOCUS_SUB_ITEM) return; @@ -656,7 +656,7 @@ static void _submenu_item_clicked(void *data, Evas_Object *obj) static void _subitem_btn_clicked_cb(void *data, Evas_Object *obj, void *ev) { - struct _view_data *priv; + SMainCatalog *priv; Evas_Object *icon; if (!data || !obj) { @@ -664,7 +664,7 @@ static void _subitem_btn_clicked_cb(void *data, return; } - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; _submenu_item_clicked(priv, obj); @@ -938,7 +938,7 @@ static void _draw_subitem_with_style(Evas_Object *base, Evas_Object *obj, * * @return: void. */ -static void _release_subitems(struct _view_data *data) +static void _release_subitems(SMainCatalog *data) { Evas_Object *btn; void* obj; @@ -973,7 +973,7 @@ static void _release_subitems(struct _view_data *data) * * @return: 0 - success, -1 - fail. */ -static int _refresh_subitems(struct _view_data *data) +static int _refresh_subitems(SMainCatalog *data) { Evas_Object *btn; void* obj; @@ -1027,13 +1027,13 @@ static void _subitem_btn_mouse_out_cb(void *data, Evas *e, static void _subitem_btn_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *ei) { - struct _view_data *priv; + SMainCatalog *priv; Evas_Object *icon, *pb; if (!obj || !data) return; - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; elm_object_focus_set(obj, EINA_TRUE); @@ -1071,7 +1071,7 @@ static void _subitem_btn_mouse_in_cb(void *data, Evas *e, * * @return: 0 - success, -1 - fail. */ -static int _draw_subitems(struct _view_data *data, const char *name) +static int _draw_subitems(SMainCatalog *data, const char *name) { Evas_Object *box, *btn, *tmp; struct settingview_data *view; @@ -1209,7 +1209,7 @@ static int _draw_subitems(struct _view_data *data, const char *name) * * @return: void. */ -static void _move_from_main_item_to_subitem(struct _view_data *data, +static void _move_from_main_item_to_subitem(SMainCatalog *data, Evas_Object *mainbtn) { Evas_Object *btn, *pb, *icon; @@ -1266,7 +1266,7 @@ static void _main_setting_key_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *ei) { Evas_Event_Key_Down *ev; - struct _view_data *priv; + SMainCatalog *priv; Evas_Object *next, *icon; const char *name; @@ -1277,7 +1277,7 @@ static void _main_setting_key_pressed_cb(void *data, Evas *e, if (!ev->keyname) return; - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; if (!strcmp(ev->keyname, KEY_DOWN)) { icon = elm_object_part_content_get(obj, @@ -1367,7 +1367,7 @@ static void _main_setting_key_pressed_cb(void *data, Evas *e, static void _mainitem_btn_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *ei) { - struct _view_data *priv; + SMainCatalog *priv; const char *name; Evas_Object *icon; @@ -1376,7 +1376,7 @@ static void _mainitem_btn_mouse_in_cb(void *data, Evas *e, return; } - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; if (priv->focus_status == FOCUS_SUB_ITEM) _move_from_subitem_to_main_item(priv, @@ -1429,14 +1429,14 @@ static void _mainitem_btn_mouse_out_cb(void *data, Evas *e, static void _mainitem_btn_clicked_cb(void *data, Evas_Object *obj, void *ev) { - struct _view_data *priv; + SMainCatalog *priv; if (!data || !obj) { _ERR("Invalid argument"); return; } - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; _move_from_main_item_to_subitem(priv, obj); } @@ -1448,7 +1448,7 @@ static void _mainitem_btn_clicked_cb(void *data, * * @return: 0 - success, -1 - fail. */ -static int _add_icon_btns(struct _view_data *data, Eina_List *list) +static int _add_icon_btns(SMainCatalog *data, Eina_List *list) { Evas_Object *btn, *icon; const char *id, *name; @@ -1520,7 +1520,7 @@ static int _add_icon_btns(struct _view_data *data, Eina_List *list) * * @return: 0 - success, -1 - fail. */ -static int _draw_main_items(struct _view_data *data) +static int _draw_main_items(SMainCatalog *data) { Evas_Object *box, *btn, *tmp, *icon; Eina_Array *btns, *icons; @@ -1644,12 +1644,12 @@ static void _view_anim_finish(void *data, Evas_Object *obj, const char *emission, const char *source) { _DBG("START ========================================================="); - struct _view_data *priv; + SMainCatalog *priv; if (!data) return; - priv = (struct _view_data *)data; + priv = (SMainCatalog *)data; _draw_main_items(priv); _DBG("END ========================================================="); @@ -1663,7 +1663,7 @@ static void _view_anim_finish(void *data, Evas_Object *obj, * * @return: void. */ -void _move_focus_on_subitem(struct _view_data *data) +void _move_focus_on_subitem(SMainCatalog *data) { const char *path, *id; unsigned int i; @@ -1747,6 +1747,15 @@ static void _change_buttons_name(Eina_List *list, } } + +Evas_Object* CMainCatalogView::Base(void) +{ + ASSERT(m); + + return m->base; +} + + /** * Create all UI components of settings view. * @@ -1756,65 +1765,61 @@ static void _change_buttons_name(Eina_List *list, * * @return: the base layout of settings or null if error occurred. */ -static Evas_Object *_create(CSettingMgr *mgr, - struct settingview_data *view, void *prev) +bool CMainCatalogView::Create(struct settingview_data *view, void *prev) { + ASSERT(!m); + ASSERT(view); + _DBG("START =================================================================="); Evas_Object *base, *win; - struct _view_data *data; - - if (!mgr || !view) { - _ERR("Invalid argument"); - return NULL; - } + CSettingMgr *mgr = CSettingMgr::GetInstance(); win = mgr->Window(); - if (!win) { - _ERR("Fail to get win"); - return NULL; - } + ASSERT(win); - data = (struct _view_data *) calloc(1, sizeof(*data)); - if (!data) - return NULL; + m = (SMainCatalog *) calloc(1, sizeof(*m)); + if (!m) + return false; base = elm_layout_add(win); if (!base) { - free(data); - return NULL; + delete m; + m = NULL; + return false; } if (!elm_layout_file_set(base, EDJ_FILE, MAIN_VIEW_PAGE)) goto error; - data->mgr = mgr; - data->win = win; - data->base = base; - data->main_setting_view = view; - data->subsetting_view = NULL; - data->item_path = mgr->GetItemPath(); + m->mgr = mgr; + m->win = win; + m->base = base; + m->main_setting_view = view; + m->subsetting_view = NULL; + m->item_path = mgr->GetItemPath(); - evas_object_data_set(base, DATA_ID, data); + evas_object_data_set(base, DATA_ID, m); elm_object_signal_callback_add(base, MAIN_VIEW_ANIM_FINISH, - MAIN_VIEW_SOURCE, _view_anim_finish, data); + MAIN_VIEW_SOURCE, _view_anim_finish, m); - if (!data->item_path) - elm_object_signal_emit(data->base, MAIN_VIEW_LOAD, ""); + if (!m->item_path) + elm_object_signal_emit(m->base, MAIN_VIEW_LOAD, ""); else - _view_anim_finish(data, NULL, NULL, NULL); + _view_anim_finish(m, NULL, NULL, NULL); - return base; _DBG("END =================================================================="); + return true; error: - evas_object_del(base); - free(data); _DBG("END-ERROR =================================================================="); - - return NULL; + evas_object_del(base); + delete m; + m = NULL; + return false; } + /** * Show the view of settings. * @@ -1822,9 +1827,10 @@ error: * * @return: void. */ -static void _show(Evas_Object *base) +void CMainCatalogView::Show(void) { - struct _view_data *data; + ASSERT(m); + unsigned int cnt, i; const char *name, *path; Evas_Object *btn, *icon; @@ -1832,25 +1838,14 @@ static void _show(Evas_Object *base) Eina_Array *btns; Eina_Array_Iterator a; - if (!base) { - _ERR("Invalid argument"); - return; - } - - data = (struct _view_data *) evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("evas object data get failed. id: %s", DATA_ID); - return; - } - path = NULL; - if (data->item_path) { - btns = data->main_item_btn; + if (m->item_path) { + btns = m->main_item_btn; - cnt = eina_array_count(data->item_path); + cnt = eina_array_count(m->item_path); if (cnt > 1) { - path = (const char *) eina_array_data_get(data->item_path, cnt - 2); + path = (const char *) eina_array_data_get(m->item_path, cnt - 2); if (!path) return; } @@ -1862,10 +1857,10 @@ static void _show(Evas_Object *base) return; if (!strncmp(name, path, ARRAY_SIZE)) { - _draw_subitems(data, name); + _draw_subitems(m, name); icon = (Evas_Object *)eina_array_data_get( - data->main_icon_base, i); + m->main_icon_base, i); if (icon) elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, @@ -1873,15 +1868,15 @@ static void _show(Evas_Object *base) elm_object_focus_set(btn, EINA_TRUE); - data->focus_status = FOCUS_MAIN_ITEM; - data->focused_main_item_btn = btn; + m->focus_status = FOCUS_MAIN_ITEM; + m->focused_main_item_btn = btn; - _move_focus_on_subitem(data); + _move_focus_on_subitem(m); } } } - evas_object_show(base); + evas_object_show(m->base); } /** @@ -1891,14 +1886,11 @@ static void _show(Evas_Object *base) * * @return: void. */ -static void _hide(Evas_Object *base) +void CMainCatalogView::Hide(void) { - if (!base) { - _ERR("Invalid argument"); - return; - } + ASSERT(m); - evas_object_hide(base); + evas_object_hide(m->base); } /** @@ -1908,9 +1900,10 @@ static void _hide(Evas_Object *base) * * @return: void. */ -static void _refresh(Evas_Object *base) +void CMainCatalogView::Refresh(void) { - struct _view_data *data; + ASSERT(m); + char *sld; const char *id; int i; @@ -1919,16 +1912,9 @@ static void _refresh(Evas_Object *base) Evas_Object *btn, *pb, *icon; void* obj; - if (!base) - return; - - data = (struct _view_data *) evas_object_data_get(base, DATA_ID); - if (!data) - return; - - sld = (char *) evas_object_data_del(base, SELECTED_ITEM_ID); + sld = (char *) evas_object_data_del(m->base, SELECTED_ITEM_ID); if (sld) { - EINA_ARRAY_ITER_NEXT(data->sub_item_btn, i, obj, a) { + EINA_ARRAY_ITER_NEXT(m->sub_item_btn, i, obj, a) { btn = (Evas_Object *) obj; item = (struct settingitem *) evas_object_data_get(btn, SUBITEM_DATA_ID); id = settingitem_get_id(item); @@ -1936,37 +1922,37 @@ static void _refresh(Evas_Object *base) continue; if (item && !strncmp(sld, id, strlen(sld))) { - data->focused_sub_item_btn = btn; + m->focused_sub_item_btn = btn; break; } } } - if (data->focus_status == FOCUS_SUB_ITEM) { - elm_object_focus_set(data->focused_sub_item_btn, EINA_TRUE); + if (m->focus_status == FOCUS_SUB_ITEM) { + elm_object_focus_set(m->focused_sub_item_btn, EINA_TRUE); - elm_object_signal_emit(data->focused_main_item_btn, + elm_object_signal_emit(m->focused_main_item_btn, MAINICONBTN_FOCUSED_ON_SUBITEM, MAINICONBTN_MAIN_ITEM_SOURCE); - icon = elm_object_part_content_get(data->focused_main_item_btn, + icon = elm_object_part_content_get(m->focused_main_item_btn, MAINICONBTN_ICON_SWALLOW); if (icon) elm_object_signal_emit(icon, MAIN_BTN_HIGHLIGHT, MAIN_BTN); - if (_refresh_subitems(data) == -1) + if (_refresh_subitems(m) == -1) _ERR("Refresh subitems failed"); - pb = (Evas_Object *) evas_object_data_get(data->focused_sub_item_btn, + pb = (Evas_Object *) evas_object_data_get(m->focused_sub_item_btn, PROGRESS_BAR_DATA); if (pb) elm_object_signal_emit(pb, SIG_UNCTRL_PB_FOCUSED, SRC_PB_PROG); } - if (data->mgr->GetTimeoutFreezeState() == EINA_TRUE) - data->mgr->ThawTimeout(); + if (m->mgr->GetTimeoutFreezeState() == EINA_TRUE) + m->mgr->ThawTimeout(); } /** @@ -1976,56 +1962,51 @@ static void _refresh(Evas_Object *base) * * @return: void. */ -static void _destroy(Evas_Object *base) +void CMainCatalogView::Destroy(void) { - struct _view_data *data; + ASSERT(m); + Eina_Array_Iterator a; Evas_Object *tmp; void* obj; unsigned int i; - if (!base) { - _ERR("Parameter error!"); - return; - } - - data = (struct _view_data *) evas_object_data_get(base, DATA_ID); - - if (data->sub_item_btn) { - EINA_ARRAY_ITER_NEXT(data->sub_item_btn, i, obj, a) + if (m->sub_item_btn) { + EINA_ARRAY_ITER_NEXT(m->sub_item_btn, i, obj, a) { tmp = (Evas_Object *) obj; evas_object_del(tmp); } - eina_array_free(data->sub_item_btn); + eina_array_free(m->sub_item_btn); } - if (data->main_item_btn) { - EINA_ARRAY_ITER_NEXT(data->main_item_btn, i, obj, a) + if (m->main_item_btn) { + EINA_ARRAY_ITER_NEXT(m->main_item_btn, i, obj, a) { tmp = (Evas_Object *) obj; evas_object_del(tmp); } - eina_array_free(data->main_item_btn); + eina_array_free(m->main_item_btn); } - if (data->main_icon_base) { - EINA_ARRAY_ITER_NEXT(data->main_icon_base, i, obj, a) + if (m->main_icon_base) { + EINA_ARRAY_ITER_NEXT(m->main_icon_base, i, obj, a) { tmp = (Evas_Object *) obj; evas_object_del(tmp); } - eina_array_free(data->main_icon_base); + eina_array_free(m->main_icon_base); } - if (data->main_setting_view) - viewdata_release(data->main_setting_view); + if (m->main_setting_view) + viewdata_release(m->main_setting_view); - if (data->subsetting_view) - viewdata_release(data->subsetting_view); + if (m->subsetting_view) + viewdata_release(m->subsetting_view); - free(data); - evas_object_del(base); + evas_object_del(m->base); + delete m; + m = NULL; } /** @@ -2035,34 +2016,26 @@ static void _destroy(Evas_Object *base) * * @return: void. */ -static void _lang_changed(Evas_Object *base) +void CMainCatalogView::LangChanged(void) { - struct _view_data *data; + ASSERT(m); + Eina_List *l; int cnt; - if (!base) { - _ERR("Invalid argument"); - return; - } - - data = (struct _view_data *) evas_object_data_get(base, DATA_ID); - if (!data) - return; - cnt = 0; - l = viewdata_get_childitems_list(data->main_setting_view); + l = viewdata_get_childitems_list(m->main_setting_view); if (l) cnt = eina_list_count(l); - _change_buttons_name(l, data->main_item_btn, cnt); + _change_buttons_name(l, m->main_item_btn, cnt); cnt = 0; - l = viewdata_get_childitems_list(data->subsetting_view); + l = viewdata_get_childitems_list(m->subsetting_view); if (l) cnt = eina_list_count(l); - _change_buttons_name(l, data->sub_item_btn, cnt); + _change_buttons_name(l, m->sub_item_btn, cnt); } /** @@ -2072,23 +2045,12 @@ static void _lang_changed(Evas_Object *base) * * @return: void. */ -static void _frozen(Evas_Object *base) +void CMainCatalogView::Frozen(void) { - struct _view_data *data; - - if (!base) { - _ERR("Invalid argument"); - return; - } - - data = (struct _view_data *)evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Fail to get mainview data"); - return; - } + ASSERT(m); - evas_object_freeze_events_set(data->mainitem_box, EINA_TRUE); - evas_object_freeze_events_set(data->subitem_box, EINA_TRUE); + evas_object_freeze_events_set(m->mainitem_box, EINA_TRUE); + evas_object_freeze_events_set(m->subitem_box, EINA_TRUE); } /** @@ -2098,25 +2060,16 @@ static void _frozen(Evas_Object *base) * * @return: void. */ -static void _active(Evas_Object *base) +void CMainCatalogView::Active(void) { - struct _view_data *data; + ASSERT(m); - if (!base) { - _ERR("Invalid argument"); - return; - } - - data = (struct _view_data *)evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Fail to get mainview data"); - return; - } - - evas_object_freeze_events_set(data->mainitem_box, EINA_FALSE); - evas_object_freeze_events_set(data->subitem_box, EINA_FALSE); + evas_object_freeze_events_set(m->mainitem_box, EINA_FALSE); + evas_object_freeze_events_set(m->subitem_box, EINA_FALSE); } + +#if 0 static struct setting_class _vclass = { VCLASS_TITLE_MAIN_VIEW, _create, @@ -2144,3 +2097,4 @@ struct setting_class *view_maincatalog_get_vclass(void) { return &_vclass; } +#endif \ No newline at end of file diff --git a/src/view_need_pwd.cpp b/src/view_need_pwd.cpp index d314894..0716ff4 100644 --- a/src/view_need_pwd.cpp +++ b/src/view_need_pwd.cpp @@ -50,7 +50,7 @@ enum { PWD_ENTRY_MAX }; -struct _chnllock_data { +struct SNeedPasscodeView { Evas_Object *win; Evas_Object *bg; Evas_Object *base; @@ -67,8 +67,8 @@ struct _chnllock_data { struct obj_geometry_data gd; }; -static void _free_priv_data(struct _chnllock_data *data); -static void _hide(Evas_Object *base); +static void _free_priv_data(SNeedPasscodeView *data); +//static void _hide(Evas_Object *base); /** * Free user data. @@ -77,7 +77,7 @@ static void _hide(Evas_Object *base); * * @return: void. */ -static void _free_priv_data(struct _chnllock_data *data) +static void _free_priv_data(SNeedPasscodeView *data) { if (!data) return; @@ -94,7 +94,6 @@ static void _free_priv_data(struct _chnllock_data *data) if (data->array) eina_array_free(data->array); - free(data); } /** @@ -166,12 +165,12 @@ static Evas_Object *_add_view_base(Evas_Object *ctxpopup) static void _cancel_btn_clicked_cb(void *priv, Evas_Object *obj, void *ev) { - struct _chnllock_data *data; + SNeedPasscodeView *data; if (!priv || !obj) return; - data = (struct _chnllock_data *) priv; + data = (SNeedPasscodeView *) priv; data->mgr->ViewPop(); } @@ -183,7 +182,7 @@ static void _cancel_btn_clicked_cb(void *priv, Evas_Object *obj, * * @return: the created cancel button or null if error occurred. */ -static Evas_Object *_add_view_cancel_btn(struct _chnllock_data *data) +static Evas_Object *_add_view_cancel_btn(SNeedPasscodeView *data) { Evas_Object *btn; @@ -211,7 +210,7 @@ static Evas_Object *_add_view_cancel_btn(struct _chnllock_data *data) * * @return: 0 - wrong passcode, 1 - right passcode. */ -static int _check_passcode(struct _chnllock_data *data) +static int _check_passcode(SNeedPasscodeView *data) { char *passcode; @@ -238,7 +237,7 @@ static int _check_passcode(struct _chnllock_data *data) * * @return: void. */ -static void _push_next_view(struct _chnllock_data *data) +static void _push_next_view(SNeedPasscodeView *data) { struct settingitem *item; Eina_List *list; @@ -272,27 +271,30 @@ static void _push_next_view(struct _chnllock_data *data) * * @return: void. */ -static void _key_down_cb(void *priv, Evas *e, Evas_Object *obj, - void *ei) +void CNeedPasscodeView::sm_CbKeyDown(void *priv, Evas *e, Evas_Object *obj, void *ei) +{ + CNeedPasscodeView *root = (CNeedPasscodeView*)priv; + if (root) + root->m_OnKeyDown(e, obj, (Evas_Event_Key_Down*)ei); +} + + +void CNeedPasscodeView::m_OnKeyDown(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { - Evas_Event_Key_Down *event; Eina_Array *array; Evas_Object *entry, *next_entry; - struct _chnllock_data *data; const char *keyname; char *text; int btn_num, i; - if (!priv || !ei || !obj) + if (!obj) return; - data = (struct _chnllock_data *)priv; - array = data->array; + array = m->array; if (!array) return; - event = (Evas_Event_Key_Down *) ei; - keyname = event->keyname; + keyname = ev->keyname; if (!keyname) return; @@ -308,9 +310,9 @@ static void _key_down_cb(void *priv, Evas *e, Evas_Object *obj, return; if (!strncmp(keyname, KEY_BACK, strlen(keyname)) || !strncmp(keyname, KEY_BACK_REMOTE, strlen(keyname))) { - data->mgr->ViewPop(); + m->mgr->ViewPop(); } else if (!strncmp(keyname, KEY_DOWN, strlen(keyname))) { - elm_object_focus_set(data->cancel_btn, EINA_TRUE); + elm_object_focus_set(m->cancel_btn, EINA_TRUE); } else if (!strncmp(keyname, KEY_0, strlen(keyname)) || !strncmp(keyname, KEY_1, strlen(keyname)) || !strncmp(keyname, KEY_2, strlen(keyname)) || @@ -322,7 +324,7 @@ static void _key_down_cb(void *priv, Evas *e, Evas_Object *obj, !strncmp(keyname, KEY_8, strlen(keyname)) || !strncmp(keyname, KEY_9, strlen(keyname))) { elm_entry_entry_set(obj, PWD_SYMBOL); - data->passcode[btn_num] = keyname[0]; + m->passcode[btn_num] = keyname[0]; if (btn_num < PWD_ENTRY_3) { elm_object_focus_next(obj, ELM_FOCUS_NEXT); @@ -331,16 +333,16 @@ static void _key_down_cb(void *priv, Evas *e, Evas_Object *obj, if (!next_entry) return; - elm_object_focus_next_object_set(data->cancel_btn, + elm_object_focus_next_object_set(m->cancel_btn, next_entry, ELM_FOCUS_UP); } else { - if (_check_passcode(data)) { - _hide(data->base); - _push_next_view(data); + if (_check_passcode(m)) { + Hide(); + _push_next_view(m); } else { text = utils_get_translation_str( MSGID_WRONG_PWD); - elm_object_part_text_set(data->base, + elm_object_part_text_set(m->base, PART_UPTEXT, text); entry = (Evas_Object *) eina_array_data_get(array, PWD_ENTRY_0); @@ -442,19 +444,14 @@ static Evas_Object *_add_entry(Evas_Object *parent) * * @return: 0 - Success, -1 - Fail. */ -static int _add_view_entries(struct _chnllock_data *data) +int CNeedPasscodeView::m_AddViewEntries(void) { Eina_Array *array; Evas_Object *box; Evas_Object *entry, *base; int idx; - if (!data || !data->base) { - _ERR("invalid arguments."); - return -1; - } - - box = utils_add_box(data->base); + box = utils_add_box(m->base); if (!box) return -1; @@ -468,7 +465,7 @@ static int _add_view_entries(struct _chnllock_data *data) } for (idx = PWD_ENTRY_0; idx < PWD_ENTRY_MAX; idx++) { - base = utils_add_base(data->base); + base = utils_add_base(m->base); if (!base) { _ERR("utils add base failed."); evas_object_del(box); @@ -491,7 +488,7 @@ static int _add_view_entries(struct _chnllock_data *data) elm_box_pack_end(box, base); evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN, - _key_down_cb, data); + sm_CbKeyDown, this); } elm_object_focus_allow_set((Evas_Object*) eina_array_data_get(array, PWD_ENTRY_0), @@ -499,12 +496,12 @@ static int _add_view_entries(struct _chnllock_data *data) elm_object_focus_set((Evas_Object *)eina_array_data_get(array, PWD_ENTRY_0), EINA_TRUE); - elm_object_part_content_set(data->base, SWALLOW_CONTENT_AREA, box); + elm_object_part_content_set(m->base, SWALLOW_CONTENT_AREA, box); - _set_entry_directions(array, data->cancel_btn); + _set_entry_directions(array, m->cancel_btn); - data->array = array; - data->box = box; + m->array = array; + m->box = box; return 0; } @@ -518,23 +515,34 @@ static int _add_view_entries(struct _chnllock_data *data) * * @return: void. */ -static void _ctxpopup_dismissed(void *priv, Evas_Object *obj, - void *ev) +void CNeedPasscodeView::sm_CbCtxpopupDismissed(void *priv, Evas_Object *obj, void *ev) { - struct _chnllock_data *data; + CNeedPasscodeView *root = (CNeedPasscodeView*)priv; + if (root) + root->m_OnCtxpopupDismissed(obj, ev); +} - if (!priv || !obj) - return; - data = (struct _chnllock_data *) priv; - if (!data->base || !data->mgr) +void CNeedPasscodeView::m_OnCtxpopupDismissed(Evas_Object *obj, void *ev) +{ + if (!obj) return; - _hide(data->base); + Hide(); - data->mgr->ViewPop(); + m->mgr->ViewPop(); } + + +Evas_Object* CNeedPasscodeView::Base(void) +{ + ASSERT(m); + + return m->base; +} + + /** * Create all the UI components of channel lock view. * @@ -545,37 +553,33 @@ static void _ctxpopup_dismissed(void *priv, Evas_Object *obj, * @return: the base layout of channel lock view or null * if error occurred. */ -static Evas_Object *_create(CSettingMgr *mgr, - struct settingview_data *view, void *prev) +bool CNeedPasscodeView::Create(struct settingview_data *view, void *prev) { + ASSERT(!m); + ASSERT(view); + ASSERT(prev); + + CSettingMgr *mgr = CSettingMgr::GetInstance(); + Evas_Object *win, *base, *bg; Evas_Object *ctxpopup; Evas_Object *cancel_btn; - struct _chnllock_data *data; int ret, width, height, xpos, ypos; struct obj_geometry_data *tmp; - if (!mgr || !view || !prev) { - _ERR("invalid argument."); - return NULL; - } - win = mgr->Window(); - if (!win) { - _ERR("settings manager get window failed."); - return NULL; - } + ASSERT(win); - data = (struct _chnllock_data *) calloc(1, sizeof(*data)); - if (!data) { + m = new SNeedPasscodeView; + if (!m) { _ERR("calloc memory for _priv_data failed."); - return NULL; + return false; } tmp = (struct obj_geometry_data *) prev; - data->win = win; - data->gd = *tmp; + m->win = win; + m->gd = *tmp; bg = _add_view_bg(win); if (!bg) { @@ -583,7 +587,7 @@ static Evas_Object *_create(CSettingMgr *mgr, goto error; } - data->bg = bg; + m->bg = bg; ctxpopup = utils_add_ctxpopup(win, (char *)CHANGE_PWD_CTXPOPUP_STYLE); if (!ctxpopup) { @@ -591,15 +595,15 @@ static Evas_Object *_create(CSettingMgr *mgr, goto error; } - data->ctxpopup = ctxpopup; + m->ctxpopup = ctxpopup; - base = _add_view_base(data->ctxpopup); + base = _add_view_base(m->ctxpopup); if (!base) { _ERR("add view base failed."); goto error; } - data->base = base; + m->base = base; elm_object_content_set(ctxpopup, base); @@ -608,34 +612,36 @@ static Evas_Object *_create(CSettingMgr *mgr, xpos = (width - CTXPOPUP_WIDTH) / 2; ypos = (height - CTXPOPUP_HEIGHT) / 2; - evas_object_move(data->ctxpopup, xpos * ELM_SCALE, + evas_object_move(m->ctxpopup, xpos * ELM_SCALE, ypos * ELM_SCALE); - evas_object_smart_callback_add(data->ctxpopup, - SIG_DISMISSED, _ctxpopup_dismissed, data); + evas_object_smart_callback_add(m->ctxpopup, + SIG_DISMISSED, sm_CbCtxpopupDismissed, this); - cancel_btn = _add_view_cancel_btn(data); + cancel_btn = _add_view_cancel_btn(m); if (!cancel_btn) { _ERR("add cancel button faield."); goto error; } - data->cancel_btn = cancel_btn; + m->cancel_btn = cancel_btn; - ret = _add_view_entries(data); + ret = m_AddViewEntries(); if (ret != 0) goto error; - data->mgr = mgr; - data->view = view; + m->mgr = mgr; + m->view = view; - evas_object_data_set(base, CHNLLOCK_DATA_ID, data); + evas_object_data_set(base, CHNLLOCK_DATA_ID, m); - return base; + return true; error: - _free_priv_data(data); - return NULL; + _free_priv_data(m); + delete m; + m = NULL; + return false; } /** @@ -645,22 +651,13 @@ error: * * @return: void. */ -static void _show(Evas_Object *base) +void CNeedPasscodeView::Show(void) { - struct _chnllock_data *data; + ASSERT(m); - if (!base) - return; - - data = (struct _chnllock_data *) evas_object_data_get(base, CHNLLOCK_DATA_ID); - if (!data) { - _ERR("get data from base failed. ID: %s.", CHNLLOCK_DATA_ID); - return; - } - - evas_object_show(data->ctxpopup); - evas_object_show(data->bg); - evas_object_show(data->base); + evas_object_show(m->ctxpopup); + evas_object_show(m->bg); + evas_object_show(m->base); } /** @@ -670,20 +667,13 @@ static void _show(Evas_Object *base) * * @return: void. */ -static void _destroy(Evas_Object *base) +void CNeedPasscodeView::Destroy(void) { - struct _chnllock_data *data; - - if (!base) - return; - - data = (struct _chnllock_data *) evas_object_data_get(base, CHNLLOCK_DATA_ID); - if (!data) { - _ERR("get data from base failed. ID: %s.", CHNLLOCK_DATA_ID); - return; - } + ASSERT(m); - _free_priv_data(data); + _free_priv_data(m); + delete m; + m = NULL; } /** @@ -693,20 +683,13 @@ static void _destroy(Evas_Object *base) * * @return: void. */ -static void _hide(Evas_Object *base) +void CNeedPasscodeView::Hide(void) { - struct _chnllock_data *data; - - if (!base) - return; + ASSERT(m); - data = (struct _chnllock_data *) evas_object_data_get(base, CHNLLOCK_DATA_ID); - if (!data) - return; - - evas_object_hide(data->base); - evas_object_hide(data->ctxpopup); - evas_object_hide(data->bg); + evas_object_hide(m->base); + evas_object_hide(m->ctxpopup); + evas_object_hide(m->bg); } /** @@ -716,20 +699,15 @@ static void _hide(Evas_Object *base) * * @return: void. */ -static void _refresh(Evas_Object *base) +void CNeedPasscodeView::Refresh(void) { - struct _chnllock_data *data; + ASSERT(m); - if (!base) - return; - - data = (struct _chnllock_data *) evas_object_data_get(base, CHNLLOCK_DATA_ID); - if (!data) - return; - - data->mgr->ViewPop(); + m->mgr->ViewPop(); } + +#if 0 /** * view class of channel lock view. */ @@ -760,3 +738,4 @@ struct setting_class *view_need_passcode_get_vclass(void) { return &_vclass; } +#endif \ No newline at end of file diff --git a/src/view_pwd_popup.cpp b/src/view_pwd_popup.cpp index 592614b..20a6e74 100644 --- a/src/view_pwd_popup.cpp +++ b/src/view_pwd_popup.cpp @@ -19,7 +19,7 @@ #include "view_pwd_popup.h" #include "utils.h" #include "settings_provider.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #define PWD_DATA_ID "change_passcode_data" #define CTXPOPUP_WIDTH 688 @@ -51,7 +51,7 @@ enum { ENTRY_MAX }; -struct _pwd_data { +struct SPasscodePopupView { Evas_Object *win; Evas_Object *bg; Evas_Object *base; @@ -73,7 +73,7 @@ struct _pwd_data { struct settingview_data *view; }; -static void _hide(Evas_Object *base); +//static void _hide(Evas_Object *base); /** * Free user data. @@ -82,7 +82,7 @@ static void _hide(Evas_Object *base); * * @return: void. */ -static void _free_pwd_data(struct _pwd_data *data) +static void _free_pwd_data(SPasscodePopupView *data) { if (!data) return; @@ -98,8 +98,6 @@ static void _free_pwd_data(struct _pwd_data *data) if (data->array) eina_array_free(data->array); - - free(data); } /** @@ -170,12 +168,12 @@ static Evas_Object *_add_pwd_base(Evas_Object *ctxpopup) */ static void _cancelbtn_clicked_cb(void *priv, Evas_Object *obj, void *ev) { - struct _pwd_data *data; + SPasscodePopupView *data; if (!priv || !obj) return; - data = (struct _pwd_data *) priv; + data = (SPasscodePopupView *) priv; data->mgr->ViewPop(); } @@ -187,7 +185,7 @@ static void _cancelbtn_clicked_cb(void *priv, Evas_Object *obj, void *ev) * * @return: the created cancel button or null if error occurred. */ -static Evas_Object *_add_pwd_cancel_btn(struct _pwd_data *data) +static Evas_Object *_add_pwd_cancel_btn(SPasscodePopupView *data) { Evas_Object *btn; @@ -289,7 +287,7 @@ static char *_get_pwd(struct settingview_data *vdata) * * @return: 0 - wrong passcode, 1 - right passcode. */ -static int _check_pwd(struct _pwd_data *data) +static int _check_pwd(SPasscodePopupView *data) { char *pwd; @@ -343,7 +341,7 @@ static void _clear_pwd(char *pwd) * * @return: void. */ -static void _reset_pwd(struct _pwd_data *data) +static void _reset_pwd(SPasscodePopupView *data) { Evas_Object *btn, *first; Eina_Array *array; @@ -377,7 +375,7 @@ static void _reset_pwd(struct _pwd_data *data) * * @return: 0 - Success, -1 - Fail. */ -static int _set_pwd(struct _pwd_data *data) +static int _set_pwd(SPasscodePopupView *data) { int ret; struct settingitem *item; @@ -407,7 +405,7 @@ static int _set_pwd(struct _pwd_data *data) * * @return: 0 - Success, -1 - Fail. */ -static int _check_reentered_pwd(struct _pwd_data *data) +static int _check_reentered_pwd(SPasscodePopupView *data) { if (!data) return 0; @@ -428,7 +426,7 @@ static int _check_reentered_pwd(struct _pwd_data *data) * * @return: void. */ -static void _update_pwd_ui(struct _pwd_data *data, +static void _update_pwd_ui(SPasscodePopupView *data, const char *part, const char *msgid) { char *text; @@ -458,14 +456,14 @@ static void _entry_keypress_cb(void *priv, Evas *e, Evas_Event_Key_Down *event; Eina_Array *array; Evas_Object *next_entry; - struct _pwd_data *data; + SPasscodePopupView *data; const char *keyname; int entry_idx, i; if (!priv || !ei || !obj) return; - data = (struct _pwd_data *) priv; + data = (SPasscodePopupView *) priv; array = data->array; if (!array) return; @@ -603,7 +601,7 @@ static Evas_Object *_add_entry(Evas_Object *parent) * * @return: 0 - Success, -1 - Fail. */ -static int _add_pwd_entry(struct _pwd_data *data) +static int _add_pwd_entry(SPasscodePopupView *data) { Eina_Array *array; Evas_Object *box; @@ -683,24 +681,37 @@ static int _add_pwd_entry(struct _pwd_data *data) * * @return: void. */ -static void _ctxpopup_dismissed(void *priv, Evas_Object *obj, - void *ev) +void CPasscodePopupView::sm_CbCtxpopupDismissed(void *priv, Evas_Object *obj, void *ev) { - struct _pwd_data *data; + CPasscodePopupView *root = (CPasscodePopupView*)priv; + if (root) + root->m_OnCtxpopupDismissed(obj, ev); +} - if (!priv || !obj) - return; - data = (struct _pwd_data *) priv; +void CPasscodePopupView::m_OnCtxpopupDismissed(Evas_Object *obj, void *ev) +{ + if (!obj) + return; - if (!data->base || !data->mgr) + if (!m->base || !m->mgr) return; - _hide(data->base); + Hide(); - data->mgr->ViewPop(); + m->mgr->ViewPop(); } + + +Evas_Object* CPasscodePopupView::Base(void) +{ + ASSERT(m); + + return m->base; +} + + /** * Create all the UI components of change passcode view. * @@ -711,40 +722,34 @@ static void _ctxpopup_dismissed(void *priv, Evas_Object *obj, * @return: the base layout of change passcode view or null * if error occurred. */ -static Evas_Object *_create(CSettingMgr *mgr, - struct settingview_data *view, void *prev) +bool CPasscodePopupView::Create(struct settingview_data *view, void *prev) { + ASSERT(!m); + ASSERT(view); + + CSettingMgr *mgr = CSettingMgr::GetInstance(); ASSERT(mgr); Evas_Object *base, *bg; Evas_Object *win; Evas_Object *cancel_btn; Evas_Object *ctxpopup; - struct _pwd_data *data; int ret; int width, height; int xpos, ypos; - if (!view) { - _ERR("invalid argument."); - return NULL; - } - win = mgr->Window(); - if (!win) { - _ERR("settingmgr get window failed."); - return NULL; - } + ASSERT(win); - data = (struct _pwd_data *)calloc(1, sizeof(*data)); - if (!data) { + m = new SPasscodePopupView; + if (!m) { _ERR("calloc _change_passcode_data failed."); - return NULL; + return false; } - data->win = win; + m->win = win; - _clear_pwd(data->pwd); + _clear_pwd(m->pwd); bg = _add_pwd_bg(win); if (!bg) { @@ -758,15 +763,15 @@ static Evas_Object *_create(CSettingMgr *mgr, goto error; } - data->ctxpopup = ctxpopup; + m->ctxpopup = ctxpopup; - base = _add_pwd_base(data->ctxpopup); + base = _add_pwd_base(m->ctxpopup); if (!base) { _ERR("add change passcode base layout failed."); goto error; } - data->base = base; + m->base = base; elm_object_content_set(ctxpopup, base); @@ -775,36 +780,38 @@ static Evas_Object *_create(CSettingMgr *mgr, xpos = (width - CTXPOPUP_WIDTH) / 2; ypos = (height - CTXPOPUP_HEIGHT) / 2; - evas_object_move(data->ctxpopup, xpos * ELM_SCALE, ypos * ELM_SCALE); + evas_object_move(m->ctxpopup, xpos * ELM_SCALE, ypos * ELM_SCALE); - cancel_btn = _add_pwd_cancel_btn(data); + cancel_btn = _add_pwd_cancel_btn(m); if (!cancel_btn) { _ERR("add change passcode cancel button failed."); goto error; } - data->cancel_btn = cancel_btn; + m->cancel_btn = cancel_btn; - ret = _add_pwd_entry(data); + ret = _add_pwd_entry(m); if (ret != 0) { _ERR("add change passcode input buttons failed."); goto error; } - data->mgr = mgr; - data->bg = bg; - data->view = view; + m->mgr = mgr; + m->bg = bg; + m->view = view; - evas_object_smart_callback_add(data->ctxpopup, - SIG_DISMISSED, _ctxpopup_dismissed, data); + evas_object_smart_callback_add(m->ctxpopup, + SIG_DISMISSED, sm_CbCtxpopupDismissed, this); - evas_object_data_set(base, PWD_DATA_ID, data); + evas_object_data_set(base, PWD_DATA_ID, m); - return base; + return true; error: - _free_pwd_data(data); - return NULL; + _free_pwd_data(m); + delete m; + m = NULL; + return false; } /** @@ -814,20 +821,11 @@ error: * * @return: void. */ -static void _show(Evas_Object *base) +void CPasscodePopupView::Show(void) { - struct _pwd_data *data; - - if (!base) - return; + ASSERT(m); - data = (struct _pwd_data *)evas_object_data_get(base, PWD_DATA_ID); - if (!data) { - _ERR("get data from base failed. ID: %s.", PWD_DATA_ID); - return; - } - - evas_object_show(data->ctxpopup); + evas_object_show(m->ctxpopup); } /** @@ -837,20 +835,13 @@ static void _show(Evas_Object *base) * * @return: void. */ -static void _destroy(Evas_Object *base) +void CPasscodePopupView::Destroy(void) { - struct _pwd_data *data; - - if (!base) - return; + ASSERT(m); - data = (struct _pwd_data *)evas_object_data_get(base, PWD_DATA_ID); - if (!data) { - _ERR("get data from base failed. ID: %s.", PWD_DATA_ID); - return; - } - - _free_pwd_data(data); + _free_pwd_data(m); + delete m; + m = NULL; } /** @@ -860,24 +851,16 @@ static void _destroy(Evas_Object *base) * * @return: void. */ -static void _hide(Evas_Object *base) +void CPasscodePopupView::Hide(void) { - struct _pwd_data *data; - - if (!base) - return; + ASSERT(m); - data = (struct _pwd_data *)evas_object_data_get(base, PWD_DATA_ID); - if (!data) { - _ERR("get data from base failed. ID: %s.", - PWD_DATA_ID); - return; - } - - evas_object_hide(data->bg); - evas_object_hide(data->ctxpopup); + evas_object_hide(m->bg); + evas_object_hide(m->ctxpopup); } + +#if 0 /** * view class of change passcode view. */ @@ -908,3 +891,4 @@ struct setting_class *view_passcode_popup_get_vclass(void) { return &_vclass; } +#endif \ No newline at end of file diff --git a/src/view_sublist.cpp b/src/view_sublist.cpp index 9f538ab..5c3c6be 100644 --- a/src/view_sublist.cpp +++ b/src/view_sublist.cpp @@ -17,12 +17,12 @@ #include "dbg.h" #include "def.h" #include "stdbool.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #include "utils.h" #include "data_wrapper.h" #include "settings_provider.h" #include "view_sublist.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #define DATA_ID "SUBLISTDATA" #define MAX_ITEMS 8 @@ -41,7 +41,7 @@ #define SIG_ITEM_CLICKED "clicked" #define SIG_CTXPOPUP_DISMISSED "dismissed" -struct _sublist_data { +struct SSublistView { Evas_Object *win; Evas_Object *base; Evas_Object *ctxpopup; @@ -56,8 +56,8 @@ struct _sublist_data { CSettingMgr *mgr; }; -static void _destroy(Evas_Object *base); -static void _hide(Evas_Object *base); +//static void _destroy(Evas_Object *base); +//static void _hide(Evas_Object *base); /** * This function is invoked to exit and pop current view. @@ -65,13 +65,11 @@ static void _hide(Evas_Object *base); * @param data [in] The _sublist_data data pointer. * @return void. */ -static void _exit_view(struct _sublist_data *data) +void CSublistView::m_ExitView(void) { - if (!data) - return; - - _hide(data->base); - data->mgr->ViewPop(); + Hide(); + + m->mgr->ViewPop(); } /** @@ -107,7 +105,7 @@ static Eina_List *_get_list_data(struct settingview_data *data, int *cnt) * @param data [in] The _sublist_data data pointer. * @return The selected string value, NULL on error. */ -static char *_get_selected_value(struct _sublist_data *data) +static char *_get_selected_value(SSublistView *data) { struct settingitem *item; @@ -132,19 +130,18 @@ static char *_get_selected_value(struct _sublist_data *data) * @param obj [in] The evas object user selected. * @return void. */ -static void _set_selected_value(struct _sublist_data *data, - Evas_Object *obj) +void CSublistView::m_SetSelectedValue(Evas_Object *obj) { struct settingitem *item; char *val; int r; - if (!data || !data->sublist_view || !obj) { + if (!m->sublist_view || !obj) { _ERR("Invalid argument"); return; } - item = viewdata_get_parentitem(data->sublist_view); + item = viewdata_get_parentitem(m->sublist_view); if (!item) { _ERR("Get item failed"); return; @@ -168,14 +165,14 @@ static void _set_selected_value(struct _sublist_data *data, */ static void _scroller_bottom_cb(void *data, Evas_Object *obj, void *event) { - struct _sublist_data *priv; + SSublistView *priv; if (!data) { _ERR("Invalid argument"); return; } - priv = (struct _sublist_data *) data; + priv = (SSublistView *) data; elm_object_signal_emit(priv->ctxpopup, SUBLIST_SHOW_UP_ARROW, ""); } @@ -190,14 +187,14 @@ static void _scroller_bottom_cb(void *data, Evas_Object *obj, void *event) */ static void _scroller_top_cb(void *data, Evas_Object *obj, void *event) { - struct _sublist_data *priv; + SSublistView *priv; if (!data) { _ERR("Invalid argument"); return; } - priv = (struct _sublist_data *) data; + priv = (SSublistView *) data; elm_object_signal_emit(priv->ctxpopup, SUBLIST_SHOW_DOWN_ARROW, ""); } @@ -212,14 +209,14 @@ static void _scroller_top_cb(void *data, Evas_Object *obj, void *event) */ static void _scroll_event_cb(void *data, Evas_Object *obj, void *event) { - struct _sublist_data *priv; + SSublistView *priv; if (!data) { _ERR("Invalid argument"); return; } - priv = (struct _sublist_data *) data; + priv = (SSublistView *) data; elm_object_signal_emit(priv->ctxpopup, SUBLIST_SHOW_BOTH_ARROW, ""); } @@ -232,25 +229,30 @@ static void _scroll_event_cb(void *data, Evas_Object *obj, void *event) * @param ev [in] The event infomation. * @return void. */ -static void _subitem_focus_in_cb(void *data, Evas_Object *obj, void *ev) +void CSublistView::sm_CbSubitemFocusIn(void *data, Evas_Object *obj, void *ev) +{ + CSublistView *root = (CSublistView*)data; + if (root) + root->m_OnSubitemFocusIn(obj, ev); +} + + +void CSublistView::m_OnSubitemFocusIn(Evas_Object *obj, void *ev) { - struct _sublist_data *priv; char *val, *sel; - if (!obj || !data) { + if (!obj) { _ERR("Invalid arguments\n"); return; } - priv = (struct _sublist_data *) data; - val = (char *) evas_object_data_get(obj, ITEMID); if (!val) { _ERR("Get value from btn failed\n"); return; } - sel = _get_selected_value(priv); + sel = _get_selected_value(m); if (!sel) { _ERR("_get_selected_value failed\n"); return; @@ -274,25 +276,30 @@ static void _subitem_focus_in_cb(void *data, Evas_Object *obj, void *ev) * @param ev [in] The event infomation. * @return void. */ -static void _subitem_focus_out_cb(void *data, Evas_Object *obj, void *ev) +void CSublistView::sm_CbSubitemFocusOut(void *data, Evas_Object *obj, void *ev) +{ + CSublistView *root = (CSublistView*)data; + if (root) + root->m_OnSubitemFocusOut(obj, ev); +} + + +void CSublistView::m_OnSubitemFocusOut(Evas_Object *obj, void *ev) { - struct _sublist_data *priv; char *val, *sel; - if (!obj || !data) { + if (!obj) { _ERR("Invalid arguments\n"); return; } - priv = (struct _sublist_data *)data; - val = (char *) evas_object_data_get(obj, ITEMID); if (!val) { _ERR("Get value from btn failed\n"); return; } - sel = _get_selected_value(priv); + sel = _get_selected_value(m); if (!sel) { _ERR("_get_selected_value failed\n"); return; @@ -316,18 +323,22 @@ static void _subitem_focus_out_cb(void *data, Evas_Object *obj, void *ev) * @param ev [in] The event infomation. * @return void. */ -static void _subitem_btn_clicked_cb(void *data, Evas_Object *obj, void *ev) +void CSublistView::sm_CbSubitemBtnClicked(void *data, Evas_Object *obj, void *ev) { - struct _sublist_data *priv; + CSublistView *root = (CSublistView*)data; + if (root) + root->m_OnSubitemBtnClicked(obj, ev); +} - if (!data || !obj) - return; - priv = (struct _sublist_data *)data; +void CSublistView::m_OnSubitemBtnClicked(Evas_Object *obj, void *ev) +{ + if (!obj) + return; - _set_selected_value(priv, obj); + m_SetSelectedValue(obj); - _exit_view(priv); + m_ExitView(); } /** @@ -339,16 +350,17 @@ static void _subitem_btn_clicked_cb(void *data, Evas_Object *obj, void *ev) * @param ev [in] The event infomation. * @return void. */ -static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *ev) +void CSublistView::sm_CbCtxpopupDismissed(void *data, Evas_Object *obj, void *ev) { - struct _sublist_data *priv; - - if (!data) - return; + CSublistView *root = (CSublistView*)data; + if (root) + root->m_OnCtxpopupDismissed(obj, ev); +} - priv = (struct _sublist_data *)data; - _exit_view(priv); +void CSublistView::m_OnCtxpopupDismissed(Evas_Object *obj, void *ev) +{ + m_ExitView(); } /** @@ -361,20 +373,18 @@ static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *ev) * @param ei [in] The event infomation. * @return void. */ -static void _subitem_key_pressed_cb(void *data, Evas *e, - Evas_Object *obj, void *ei) +void CSublistView::sm_CbSubitemKeyPressed(void *data, Evas *e, Evas_Object *obj, void *ei) { - Evas_Event_Key_Down *ev; - struct _sublist_data *priv; - - if (!data || !ei) - return; + CSublistView *root = (CSublistView*)data; + if (root) + root->m_OnSubitemKeyPressed(e, obj, (Evas_Event_Key_Down*)ei); +} - ev = (Evas_Event_Key_Down *) ei; - priv = (struct _sublist_data *)data; +void CSublistView::m_OnSubitemKeyPressed(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) +{ if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) - _exit_view(priv); + m_ExitView(); } /** @@ -383,7 +393,7 @@ static void _subitem_key_pressed_cb(void *data, Evas *e, * @param data [in] The _sublist_data data pointer. * @return 0 if success, -1 if fail. */ -static int _draw_ctxpopup_layout(struct _sublist_data *data) +static int _draw_ctxpopup_layout(SSublistView *data) { Evas_Object *box, *ctxpopup, *scroller; @@ -447,7 +457,7 @@ static int _draw_ctxpopup_layout(struct _sublist_data *data) * @param list [in] The eina list data pointer. * @return 0 if success, -1 if fail. */ -static int _draw_list_items(struct _sublist_data *data, Eina_List *list) +int CSublistView::m_DrawListItems(Eina_List *list) { struct listitem *ldata; void* obj; @@ -459,12 +469,12 @@ static int _draw_list_items(struct _sublist_data *data, Eina_List *list) const char *name, *val; int check, i, j; - if (!data || !list || !data->popup_box) { + if (!list || !m->popup_box) { _ERR("Invalid argument"); return -1; } - sel = _get_selected_value(data); + sel = _get_selected_value(m); if (!sel) { _ERR("Get selected value failed"); return -1; @@ -485,7 +495,7 @@ static int _draw_list_items(struct _sublist_data *data, Eina_List *list) ldata = (struct listitem *) obj; name = listitem_get_display_name(ldata); - btn = utils_add_btn(data->popup_box, (char *) CTXPOPUPBTN_STYLE, + btn = utils_add_btn(m->popup_box, (char *) CTXPOPUPBTN_STYLE, name, EINA_TRUE); if (!btn) { _ERR("Add button failed\n"); @@ -510,15 +520,15 @@ static int _draw_list_items(struct _sublist_data *data, Eina_List *list) evas_object_data_set(btn, ITEMID, val); evas_object_smart_callback_add(btn, SIG_ITEM_FOCUSED, - _subitem_focus_in_cb, data); + sm_CbSubitemFocusIn, this); evas_object_smart_callback_add(btn, SIG_ITEM_UNFOCUSED, - _subitem_focus_out_cb, data); + sm_CbSubitemFocusOut, this); evas_object_smart_callback_add(btn, SIG_ITEM_CLICKED, - _subitem_btn_clicked_cb, data); + sm_CbSubitemBtnClicked, this); evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN, - _subitem_key_pressed_cb, data); + sm_CbSubitemKeyPressed, this); - elm_box_pack_end(data->popup_box, btn); + elm_box_pack_end(m->popup_box, btn); eina_array_push(btns, btn); if (i == 0) @@ -527,8 +537,8 @@ static int _draw_list_items(struct _sublist_data *data, Eina_List *list) i++; } - data->sub_btn_array = btns; - data->selected_index = check; + m->sub_btn_array = btns; + m->selected_index = check; provider_release_list_value(sel); @@ -541,7 +551,7 @@ static int _draw_list_items(struct _sublist_data *data, Eina_List *list) * @param data [in] The _sublist_data data pointer. * @return 0 if success, -1 if fail. */ -static int _draw_sublist(struct _sublist_data *data) +int CSublistView::m_DrawSublist(void) { struct settingview_data *view; Eina_List *list; @@ -549,12 +559,12 @@ static int _draw_sublist(struct _sublist_data *data) int cnt, x, y, height, screen_h; struct obj_geometry_data *param; - if (!data || !data->sublist_view || !data->geometry_data) { + if (!m->sublist_view || !m->geometry_data) { _ERR("Invalid argument\n"); return -1; } - view = data->sublist_view; + view = m->sublist_view; cnt = 0; list = _get_list_data(view, &cnt); @@ -563,21 +573,21 @@ static int _draw_sublist(struct _sublist_data *data) return -1; } - data->sub_items_count = cnt; + m->sub_items_count = cnt; - if (_draw_ctxpopup_layout(data) == -1) { + if (_draw_ctxpopup_layout(m) == -1) { _ERR("Fail to draw ctxpopup layout"); return -1; } - if (_draw_list_items(data, list) == -1) { + if (m_DrawListItems(list) == -1) { _ERR("Fail to draw list items"); return -1; } screen_h = WIN_HEIGHT; - param = data->geometry_data; + param = m->geometry_data; w = param->width; if (w <= 0) { @@ -590,8 +600,8 @@ static int _draw_sublist(struct _sublist_data *data) x = param->x + param->width * ratio; y = param->y; - if (data->sub_items_count < MAX_ITEMS) - height = data->sub_items_count * ITEM_HEIGHT; + if (m->sub_items_count < MAX_ITEMS) + height = m->sub_items_count * ITEM_HEIGHT; else height = MAX_ITEMS * ITEM_HEIGHT + ITEM_OFFSET; @@ -602,13 +612,23 @@ static int _draw_sublist(struct _sublist_data *data) } _DBG("x : %d , y : %d, ELM_SCALE = %f, height = %d", x , y , ELM_SCALE, height); - evas_object_move(data->ctxpopup, x * ELM_SCALE, (y * ELM_SCALE) + height); + evas_object_move(m->ctxpopup, x * ELM_SCALE, (y * ELM_SCALE) + height); - utils_set_focus_directions(data->sub_btn_array, data->sub_items_count); + utils_set_focus_directions(m->sub_btn_array, m->sub_items_count); return 0; } + + +Evas_Object* CSublistView::Base(void) +{ + ASSERT(m); + + return m->base; +} + + /** * This function is invoked to create view layout. * @@ -617,33 +637,29 @@ static int _draw_sublist(struct _sublist_data *data) * @param prev [in] The parameter data which passed by prev view or NULL. * @return View layout evas object, NULL on error. */ -static Evas_Object *_create(CSettingMgr *mgr, - struct settingview_data *view, void *prev) +bool CSublistView::Create(struct settingview_data *view, void *prev) { - Evas_Object *base, *ctxpopup, *win; - struct _sublist_data *data; + ASSERT(!m); + ASSERT(view); + ASSERT(prev); - if (!mgr || !view || !prev) { - _ERR("Invalid argument!\n"); - return NULL; - } + Evas_Object *base, *ctxpopup, *win; + CSettingMgr *mgr = CSettingMgr::GetInstance(); win = mgr->Window(); - if (!win) { - _ERR("Fail to get win"); - return NULL; - } + ASSERT(win); - data = (struct _sublist_data *) calloc(1, sizeof(*data)); - if (!data) { + m = new SSublistView; + if (!m) { _ERR("Unable to allocate memory\n"); - return NULL; + return false; } base = elm_layout_add(win); if (!base) { - free(data); - return NULL; + delete m; + m = NULL; + return false; } elm_layout_file_set(base, EDJ_FILE, SUBLIST_VIEW_PAGE); @@ -652,36 +668,37 @@ static Evas_Object *_create(CSettingMgr *mgr, if (!ctxpopup) { _ERR("Fail to add ctxpopup"); evas_object_del(base); - free(data); - return NULL; + delete m; + m = NULL; + return false; } evas_object_smart_callback_add(ctxpopup, SIG_CTXPOPUP_DISMISSED, - _ctxpopup_dismissed_cb, data); + sm_CbCtxpopupDismissed, m); - data->geometry_data = (struct obj_geometry_data *) prev; + m->geometry_data = (struct obj_geometry_data *) prev; - data->mgr = mgr; - data->win = win; - data->base = base; - data->ctxpopup = ctxpopup; - data->sublist_view = view; + m->mgr = mgr; + m->win = win; + m->base = base; + m->ctxpopup = ctxpopup; + m->sublist_view = view; - evas_object_data_set(base, DATA_ID, data); + evas_object_data_set(base, DATA_ID, m); - if (_draw_sublist(data) == -1) { + if (m_DrawSublist() == -1) { _ERR("Error in drawing items function\n"); evas_object_del(base); evas_object_del(ctxpopup); - if (data->sub_btn_array) - eina_array_free(data->sub_btn_array); + if (m->sub_btn_array) + eina_array_free(m->sub_btn_array); - free(data); - return NULL; + delete m; + m = NULL; + return false; } - return base; - + return true; } /** @@ -690,23 +707,12 @@ static Evas_Object *_create(CSettingMgr *mgr, * @param base [in] The view layout evas object. * @return void. */ -static void _show(Evas_Object *base) +void CSublistView::Show(void) { - struct _sublist_data *data; - - if (!base) { - _ERR("Invalid argument\n"); - return; - } - - data = (struct _sublist_data *) evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Get sublist data failed\n"); - return; - } + ASSERT(m); - evas_object_show(data->ctxpopup); - evas_object_show(base); + evas_object_show(m->ctxpopup); + evas_object_show(m->base); } /** @@ -715,31 +721,21 @@ static void _show(Evas_Object *base) * @param base [in] The view layout evas object. * @return void. */ -static void _destroy(Evas_Object *base) +void CSublistView::Destroy(void) { - struct _sublist_data *data; - - if (!base) - return; - - data = (struct _sublist_data *) evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Invalid arguments"); - evas_object_del(data->ctxpopup); - evas_object_del(base); - return; - } + ASSERT(m); - if (data->sub_btn_array) - eina_array_free(data->sub_btn_array); + if (m->sub_btn_array) + eina_array_free(m->sub_btn_array); - evas_object_del(data->ctxpopup); - evas_object_del(base); + evas_object_del(m->ctxpopup); + evas_object_del(m->base); - if (data->sublist_view) - viewdata_release(data->sublist_view); + if (m->sublist_view) + viewdata_release(m->sublist_view); - free(data); + delete m; + m = NULL; } /** @@ -748,23 +744,16 @@ static void _destroy(Evas_Object *base) * @param base [in] The view layout evas object. * @return void. */ -static void _hide(Evas_Object *base) +void CSublistView::Hide(void) { - struct _sublist_data *data; + ASSERT(m); - if (!base) - return; - - data = (struct _sublist_data *) evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Invalid arguments"); - return; - } - - evas_object_hide(base); - evas_object_hide(data->ctxpopup); + evas_object_hide(m->base); + evas_object_hide(m->ctxpopup); } +#if 0 + static struct setting_class _vclass = { VCLASS_TITLE_SUBLIST, _create, @@ -790,3 +779,4 @@ struct setting_class *view_sublist_get_vclass(void) { return &_vclass; } +#endif \ No newline at end of file diff --git a/src/view_system_clock.cpp b/src/view_system_clock.cpp index e396d26..cf57833 100644 --- a/src/view_system_clock.cpp +++ b/src/view_system_clock.cpp @@ -17,7 +17,7 @@ #include "dbg.h" #include "def.h" #include "stdbool.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #include "utils.h" #include "data_wrapper.h" #include "settings_provider.h" @@ -40,7 +40,7 @@ #define SIG_UNFOCUSED "unfocused" #define SIG_CLICKED "clicked" -struct _sysclk_data { +struct SSystemClockView { Evas_Object *win; Evas_Object *base; Evas_Object *ctxpopup; @@ -56,8 +56,6 @@ struct _sysclk_data { struct obj_geometry_data *ogd; }; -static void _destroy(Evas_Object *base); -static void _hide(Evas_Object *base); /** * Exit system clock sublist view. @@ -66,14 +64,13 @@ static void _hide(Evas_Object *base); * * @return: void. */ -static void _exit_view(struct _sysclk_data *data) +void CSystemClockView::m_ExitView(void) { - if (!data || !data->base) - return; + ASSERT(m); - _hide(data->base); + Hide(); - data->mgr->ViewPop(); + m->mgr->ViewPop(); } /** @@ -111,7 +108,7 @@ static Eina_List *_get_item_list(struct settingview_data *vdata, int *count) * * @return: the selected value or null if error occurred. */ -static char *_get_selected_value(struct _sysclk_data *data) +static char *_get_selected_value(SSystemClockView *data) { struct settingitem *item; @@ -137,7 +134,7 @@ static char *_get_selected_value(struct _sysclk_data *data) * * @return: void. */ -static void _set_selected_value(struct _sysclk_data *data, Evas_Object *obj) +static void _set_selected_value(SSystemClockView *data, Evas_Object *obj) { struct settingitem *item; char *selval; @@ -173,7 +170,7 @@ static void _set_selected_value(struct _sysclk_data *data, Evas_Object *obj) */ static void _subitem_focusin_cb(void *priv, Evas_Object *obj, void *ev) { - struct _sysclk_data *data; + SSystemClockView *data; char *value; char *selval; @@ -182,7 +179,7 @@ static void _subitem_focusin_cb(void *priv, Evas_Object *obj, void *ev) return; } - data = (struct _sysclk_data *) priv; + data = (SSystemClockView *) priv; value = (char *) evas_object_data_get(obj, ITEMID); if (!value) { @@ -218,7 +215,7 @@ static void _subitem_focusin_cb(void *priv, Evas_Object *obj, void *ev) */ static void _subitem_focusout_cb(void *priv, Evas_Object *obj, void *ev) { - struct _sysclk_data *data; + SSystemClockView *data; char *value; char *selval; @@ -227,7 +224,7 @@ static void _subitem_focusout_cb(void *priv, Evas_Object *obj, void *ev) return; } - data = (struct _sysclk_data *) priv; + data = (SSystemClockView *) priv; value = (char *) evas_object_data_get(obj, ITEMID); if (!value) { @@ -260,21 +257,26 @@ static void _subitem_focusout_cb(void *priv, Evas_Object *obj, void *ev) * * @return: void. */ -static void _subitem_clicked_cb(void *priv, Evas_Object *obj, void *ev) +void CSystemClockView::sm_CbSubitemClicked(void *priv, Evas_Object *obj, void *ev) +{ + CSystemClockView *root = (CSystemClockView*)priv; + if (root) + root->m_OnSubitemClicked(obj, ev); +} + + +void CSystemClockView::m_OnSubitemClicked(Evas_Object *obj, void *ev) { - struct _sysclk_data *data; struct settingitem *item; Eina_List *list; char *value; const char *id; const char *name; - if (!priv || !obj) + if (!obj) return; - data = (struct _sysclk_data *) priv; - - _set_selected_value(data, obj); + _set_selected_value(m, obj); value = (char *) evas_object_data_get(obj, ITEMID); if (!value) { @@ -283,9 +285,9 @@ static void _subitem_clicked_cb(void *priv, Evas_Object *obj, void *ev) } if (!strncmp(value, MANUAL, BUF_SIZE)) { - _hide(data->base); + Hide(); - list = viewdata_get_childitems_list(data->vdata); + list = viewdata_get_childitems_list(m->vdata); if (!list) { _ERR("list of clock is null."); return; @@ -309,11 +311,11 @@ static void _subitem_clicked_cb(void *priv, Evas_Object *obj, void *ev) return; } - data->ugd.display_name = name; + m->ugd.display_name = name; - data->mgr->ViewPush(id, (void *)&data->ugd); + m->mgr->ViewPush(id, (void *)&m->ugd); } else { - _exit_view(data); + m_ExitView(); } } @@ -327,23 +329,24 @@ static void _subitem_clicked_cb(void *priv, Evas_Object *obj, void *ev) * * @return: void. */ -static void _subitem_keypress_cb(void *priv, Evas *e, - Evas_Object *obj, void *ei) +void CSystemClockView::sm_CbSubitemKeypress(void *priv, Evas *e, Evas_Object *obj, void *ei) { - Evas_Event_Key_Down *ev; - struct _sysclk_data *data; + CSystemClockView *root = (CSystemClockView*)priv; + if (root) + root->m_OnSubitemKeypress(e, obj, (Evas_Event_Key_Down*)ei); +} - if (!priv || !ei) - return; - data = (struct _sysclk_data *) priv; - ev = (Evas_Event_Key_Down *) ei; +void CSystemClockView::m_OnSubitemKeypress(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) +{ + if (!ev) + return; if (!ev->keyname) return; if (!strncmp(ev->keyname, KEY_BACK, BUF_SIZE) || !strncmp(ev->keyname, KEY_BACK_REMOTE, BUF_SIZE)) - _exit_view(data); + m_ExitView(); } /** @@ -355,8 +358,7 @@ static void _subitem_keypress_cb(void *priv, Evas *e, * * @return: 0 - Success, -1 - Fail. */ -static int _add_sysclk_sublist_item(struct _sysclk_data *data, - Eina_List *list, const char *selval) +int CSystemClockView::m_AddSysclkSublistItem(Eina_List *list, const char *selval) { Evas_Object *box, *cp, *btn, *del_btn; Eina_Array *array; @@ -367,12 +369,12 @@ static int _add_sysclk_sublist_item(struct _sysclk_data *data, const char *disp, *value; int idx, i, j; - if (!data || !list || !data->ctxpopup || !selval) { + if (!list || !m->ctxpopup || !selval) { _ERR("invalid arguments."); return -1; } - cp = data->ctxpopup; + cp = m->ctxpopup; box = utils_add_box(cp); if (!box) { @@ -420,13 +422,13 @@ static int _add_sysclk_sublist_item(struct _sysclk_data *data, evas_object_data_set(btn, ITEMID, value); evas_object_smart_callback_add(btn, SIG_FOCUSED, - _subitem_focusin_cb, data); + _subitem_focusin_cb, m); evas_object_smart_callback_add(btn, SIG_UNFOCUSED, - _subitem_focusout_cb, data); + _subitem_focusout_cb, m); evas_object_smart_callback_add(btn, SIG_CLICKED, - _subitem_clicked_cb, data); + sm_CbSubitemClicked, this); evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN, - _subitem_keypress_cb, data); + sm_CbSubitemKeypress, this); elm_box_pack_end(box, btn); eina_array_push(array, btn); @@ -437,9 +439,9 @@ static int _add_sysclk_sublist_item(struct _sysclk_data *data, i++; } - data->box = box; - data->array = array; - data->sel_idx = idx; + m->box = box; + m->array = array; + m->sel_idx = idx; return 0; @@ -463,7 +465,7 @@ error: * * @return: 0 - Success, -1 - Fail. */ -static int _draw_sysclk_sublist(struct _sysclk_data *data) +int CSystemClockView::m_DrawSysclkSublist(void) { Evas_Object *ctxpopup; char *selval; @@ -473,14 +475,14 @@ static int _draw_sysclk_sublist(struct _sysclk_data *data) int xpos, ypos, height, count, r; double ratio; - if (!data || !data->ctxpopup || !data->ogd || !data->vdata) { + if (!m->ctxpopup || !m->ogd || !m->vdata) { _ERR("Invalid argument\n"); return -1; } - ctxpopup = data->ctxpopup; - vdata = data->vdata; - ogd = data->ogd; + ctxpopup = m->ctxpopup; + vdata = m->vdata; + ogd = m->ogd; count = 0; itlist = _get_item_list(vdata, &count); @@ -489,9 +491,9 @@ static int _draw_sysclk_sublist(struct _sysclk_data *data) return -1; } - data->count = count; + m->count = count; - selval = _get_selected_value(data); + selval = _get_selected_value(m); if (!selval) { _ERR("Get selected value failed"); return -1; @@ -502,7 +504,7 @@ static int _draw_sysclk_sublist(struct _sysclk_data *data) goto error; } - r = _add_sysclk_sublist_item(data, itlist, selval); + r = m_AddSysclkSublistItem(itlist, selval); if (r != 0) { _ERR("add system clock sublist items failed."); goto error; @@ -517,14 +519,14 @@ static int _draw_sysclk_sublist(struct _sysclk_data *data) xpos = ogd->x + ogd->width * ratio; ypos = ogd->y; - height = data->count * ITEM_HEIGHT; + height = m->count * ITEM_HEIGHT; if (ypos > WIN_HEIGHT) ypos = ypos - height; evas_object_move(ctxpopup, xpos * ELM_SCALE, ypos * ELM_SCALE); - utils_set_focus_directions(data->array, data->count); + utils_set_focus_directions(m->array, m->count); provider_release_list_value(selval); @@ -544,21 +546,36 @@ error: * * @return: void. */ -static void _ctxpopup_dismissed(void *priv, Evas_Object *obj, - void *ev) +void CSystemClockView::sm_CbCtxpopupDismissed(void *priv, Evas_Object *obj, void *ev) { - struct _sysclk_data *data; + CSystemClockView *root = (CSystemClockView*)priv; + + if (root) + root->m_OnCtxpopupDismissed(obj, ev); +} + - if (!priv || !obj) +void CSystemClockView::m_OnCtxpopupDismissed(Evas_Object *obj, void *ev) +{ + if (!obj) return; - data = (struct _sysclk_data *) priv; + Hide(); - _hide(data->base); + m->mgr->ViewPop(); +} - data->mgr->ViewPop(); + + +Evas_Object* CSystemClockView::Base(void) +{ + ASSERT(m); + + return m->base; } + + /** * Create all the UI components of system clock sublist view. * @@ -569,43 +586,38 @@ static void _ctxpopup_dismissed(void *priv, Evas_Object *obj, * @return: the base layout of system clock view or null * if error occurred. */ -static Evas_Object *_create(CSettingMgr *mgr, - struct settingview_data *view, void *prev) +bool CSystemClockView::Create(struct settingview_data *view, void *prev) { + ASSERT(!m); + ASSERT(view); + ASSERT(prev); + Evas_Object *base; Evas_Object *ctxpopup; Evas_Object *win; - struct _sysclk_data *data; struct evas_obj_data *ugd; struct obj_geometry_data *ogd; - - if (!mgr || !view || !prev) { - _ERR("Invalid argument!\n"); - return NULL; - } + CSettingMgr *mgr = CSettingMgr::GetInstance(); ugd = (struct evas_obj_data *) prev; ogd = (struct obj_geometry_data *) evas_object_data_get(ugd->cur_btn, DATA_ID); win = mgr->Window(); + ASSERT(win); - if (!win) { - _ERR("settingmgr get window failed."); - return NULL; - } - - data = (struct _sysclk_data *) calloc(1, sizeof(*data)); - if (!data) { + m = new SSystemClockView; + if (!m) { _ERR("Unable to allocate memory."); - return NULL; + return false; } - data->ugd = *ugd; + m->ugd = *ugd; base = elm_layout_add(win); if (!base) { - free(data); - return NULL; + delete m; + m = NULL; + return false; } elm_layout_file_set(base, EDJ_FILE, SUBLIST_VIEW_PAGE); @@ -614,31 +626,33 @@ static Evas_Object *_create(CSettingMgr *mgr, if (!ctxpopup) { _ERR("Fail to add ctxpopup"); evas_object_del(base); - free(data); - return NULL; + delete m; + m = NULL; + return false; } evas_object_smart_callback_add(ctxpopup, SIG_DISMISSED, - _ctxpopup_dismissed, data); + sm_CbCtxpopupDismissed, this); - data->mgr = mgr; - data->win = win; - data->base = base; - data->ctxpopup = ctxpopup; - data->vdata = view; - data->ogd = ogd; + m->mgr = mgr; + m->win = win; + m->base = base; + m->ctxpopup = ctxpopup; + m->vdata = view; + m->ogd = ogd; - evas_object_data_set(base, DATA_ID, data); + evas_object_data_set(base, DATA_ID, m); - if (_draw_sysclk_sublist(data) == -1) { + if (m_DrawSysclkSublist() == -1) { _ERR("Error in drawing items function\n"); evas_object_del(base); evas_object_del(ctxpopup); - free(data); - return NULL; + delete m; + m = NULL; + return false; } - return base; + return true; } /** @@ -648,23 +662,12 @@ static Evas_Object *_create(CSettingMgr *mgr, * * @return: void. */ -static void _show(Evas_Object *base) +void CSystemClockView::Show(void) { - struct _sysclk_data *data; - - if (!base) { - _ERR("Invalid argument\n"); - return; - } + ASSERT(m); - data = (struct _sysclk_data *) evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Get sublist data failed\n"); - return; - } - - evas_object_show(data->ctxpopup); - evas_object_show(base); + evas_object_show(m->ctxpopup); + evas_object_show(m->base); } /** @@ -674,33 +677,23 @@ static void _show(Evas_Object *base) * * @return: void. */ -static void _destroy(Evas_Object *base) +void CSystemClockView::Destroy(void) { - struct _sysclk_data *data; - - if (!base) - return; - - data = (struct _sysclk_data *)evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Invalid arguments"); - evas_object_del(data->ctxpopup); - evas_object_del(base); - return; - } + ASSERT(m); - if (data->array) { - eina_array_free(data->array); - data->array = NULL; + if (m->array) { + eina_array_free(m->array); + m->array = NULL; } - evas_object_del(data->ctxpopup); - evas_object_del(base); + evas_object_del(m->ctxpopup); + evas_object_del(m->base); - if (data->vdata) - viewdata_release(data->vdata); + if (m->vdata) + viewdata_release(m->vdata); - free(data); + delete m; + m = NULL; } /** @@ -710,21 +703,12 @@ static void _destroy(Evas_Object *base) * * @return: void. */ -static void _hide(Evas_Object *base) +void CSystemClockView::Hide(void) { - struct _sysclk_data *data; - - if (!base) - return; - - data = (struct _sysclk_data *)evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Invalid arguments"); - return; - } + ASSERT(m); - evas_object_hide(base); - evas_object_hide(data->ctxpopup); + evas_object_hide(m->base); + evas_object_hide(m->ctxpopup); } /** @@ -734,23 +718,15 @@ static void _hide(Evas_Object *base) * * @return: void. */ -static void _refresh(Evas_Object *base) +void CSystemClockView::Refresh(void) { - struct _sysclk_data *data; + ASSERT(m); - if (!base) { - _ERR("the base of system clock is null."); - return; - } + m_ExitView(); +} - data = (struct _sysclk_data *)evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("data get failed. DATA_ID: %s", DATA_ID); - return; - } - _exit_view(data); -} +#if 0 /** * view class of system clock view. @@ -783,3 +759,4 @@ struct setting_class *view_system_clock_get_vclass(void) return &_vclass; } +#endif \ No newline at end of file diff --git a/src/view_uigadget.cpp b/src/view_uigadget.cpp index 715d7f0..0eb479e 100644 --- a/src/view_uigadget.cpp +++ b/src/view_uigadget.cpp @@ -18,11 +18,11 @@ #include "view_uigadget.h" #include "dbg.h" #include "def.h" -#include "viewmgr.h" +#include "settingviewmgr.h" #define DATA_ID "ugdata" -struct _data { +struct SUiGadgetView { Evas_Object *win; Evas_Object *base; Evas_Object *subbtn; @@ -42,12 +42,11 @@ struct _data { * @param base [in] The view layout evas object. * @return void. */ -static void _hide(Evas_Object *base) +void CUiGadgetView::Hide(void) { - if (!base) - return; + ASSERT(m); - evas_object_hide(base); + evas_object_hide(m->base); } /** @@ -56,13 +55,11 @@ static void _hide(Evas_Object *base) * @param data [in] The function specific data which hold _data pointer. * @return void. */ -static void _back_to_mainview(struct _data *data) +void CUiGadgetView::m_BackToMainview(void) { - if (!data) - return; + Hide(); - _hide(data->base); - data->mgr->ViewPop(); + m->mgr->ViewPop(); } /** @@ -74,7 +71,7 @@ static void _back_to_mainview(struct _data *data) * @param priv [in] The function specific data passed by UG caller. * @return void. */ -static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) +void CUiGadgetView::sm_CbUgLayout(ui_gadget_h ug, enum ug_mode mode, void *priv) { } @@ -87,7 +84,7 @@ static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) * @param priv [in] The function specific data passed by UG caller. * @return void. */ -static void _ug_result_cb(ui_gadget_h ug, service_h result, void *priv) +void CUiGadgetView::sm_CbUgResult(ui_gadget_h ug, service_h result, void *priv) { } @@ -129,25 +126,29 @@ static void _show_item_btns(Evas_Object *box) * @param priv [in] The function specific data passed by UG caller. * @return void. */ -static void _ug_destroy_cb(ui_gadget_h ug, void *priv) +void CUiGadgetView::sm_CbUgDestroy(ui_gadget_h ug, void *priv) { - struct _data *data; + CUiGadgetView *root = (CUiGadgetView*)priv; + if (root) + root->m_OnUgDestroy(ug); +} - if (!ug || !priv) { + +void CUiGadgetView::m_OnUgDestroy(ui_gadget_h ug) +{ + if (!ug) { _ERR("Invalid parameters in ug destroy callback."); return; } - data = (struct _data *) priv; - - _show_item_btns(data->subitem_box); + _show_item_btns(m->subitem_box); - elm_object_focus_set(data->subbtn, EINA_TRUE); - elm_object_part_text_set(data->base, UG_TITLE_TEXT, ""); + elm_object_focus_set(m->subbtn, EINA_TRUE); + elm_object_part_text_set(m->base, UG_TITLE_TEXT, ""); ug_destroy(ug); - data->ug_is_existed = EINA_FALSE; - _back_to_mainview(data); + m->ug_is_existed = EINA_FALSE; + m_BackToMainview(); } /** @@ -156,42 +157,37 @@ static void _ug_destroy_cb(ui_gadget_h ug, void *priv) * @param data [in] The function specific data which hold _data pointer. * @return 0 if success, -1 if fail. */ -static int _load_uigadget(struct _data *data) +bool CUiGadgetView::m_Load(void) { ui_gadget_h ug; const char *name; struct settingitem *parent; struct ug_cbs cbs = { - .layout_cb = _ug_layout_cb, - .result_cb = _ug_result_cb, - .destroy_cb = _ug_destroy_cb, + .layout_cb = sm_CbUgLayout, + .result_cb = sm_CbUgResult, + .destroy_cb = sm_CbUgDestroy, .end_cb = NULL }; - if (!data) { - _ERR("private data is null."); - return -1; - } - - cbs.priv = data; + cbs.priv = this; - parent = viewdata_get_parentitem(data->view); + parent = viewdata_get_parentitem(m->view); name = settingitem_get_settingui_name(parent); - elm_object_part_text_set(data->base, - UG_TITLE_TEXT, data->display_name); + elm_object_part_text_set(m->base, + UG_TITLE_TEXT, m->display_name); ug = ug_create(NULL, name, UG_MODE_FRAMEVIEW, NULL, &cbs); if (!ug) { _ERR("ug create failed."); - return -1; + return false; } else { - data->ug_is_existed = EINA_TRUE; - data->ug_handler = ug; - data->mgr->FreezeTimeout(); + m->ug_is_existed = EINA_TRUE; + m->ug_handler = ug; + m->mgr->FreezeTimeout(); } - return 0; + return true; } /** @@ -226,6 +222,17 @@ static void _hide_item_btns(Evas_Object *box) eina_list_free(list); } + + +Evas_Object *CUiGadgetView::Base(void) +{ + ASSERT(m); + + return m->base; +} + + + /** * This function is invoked to create UG launcher view layout. * @@ -234,18 +241,17 @@ static void _hide_item_btns(Evas_Object *box) * @param prev [in] The parameter data which passed by prev view or NULL. * @return View layout evas object, NULL on error. */ -static Evas_Object *_create(CSettingMgr *mgr, - struct settingview_data *view, void *prev) +bool CUiGadgetView::Create(struct settingview_data *view, void *prev) { + ASSERT(!m); + ASSERT(view); + ASSERT(prev); + Evas_Object *win, *base; - struct _data *data; + SUiGadgetView *m; struct evas_obj_data *param; - int r; - if (!mgr || !prev || !view) { - _ERR("mgr is null."); - return NULL; - } + CSettingMgr *mgr = CSettingMgr::GetInstance(); param = (struct evas_obj_data *) prev; @@ -257,41 +263,43 @@ static Evas_Object *_create(CSettingMgr *mgr, return NULL; } - data = (struct _data *) calloc(1, sizeof(struct _data)); - if (!data) { - _ERR("calloc struct _data failed."); - return NULL; + m = new SUiGadgetView; + if (!m) { + _ERR("calloc SUiGadgetView failed."); + return false; } base = elm_layout_add(win); if (!base) { _ERR("add base layout failed."); - free(data); - return NULL; + delete m; + m = NULL; + return false; } elm_layout_file_set(base, EDJ_FILE, UG_GROUP); - data->win = win; - data->base = base; - data->mgr = mgr; - data->view = view; - data->subitem_box = param->subitem_box; - data->display_name = param->display_name; - data->subbtn = param->cur_btn; - data->ug_is_existed = EINA_FALSE; + m->win = win; + m->base = base; + m->mgr = mgr; + m->view = view; + m->subitem_box = param->subitem_box; + m->display_name = param->display_name; + m->subbtn = param->cur_btn; + m->ug_is_existed = EINA_FALSE; - evas_object_data_set(base, DATA_ID, data); + evas_object_data_set(base, DATA_ID, m); - r = _load_uigadget(data); - if (r == -1) { + if (!m_Load()) { _ERR("load ui gadget failed."); - free(data); evas_object_del(base); - return NULL; + delete m; + m = NULL; + + return false; } - return base; + return true; } /** @@ -300,14 +308,11 @@ static Evas_Object *_create(CSettingMgr *mgr, * @param base [in] The view layout evas object. * @return void. */ -static void _show(Evas_Object *base) +void CUiGadgetView::Show(void) { - if (!base) { - _ERR("Invalid argument!"); - return; - } + ASSERT(m); - evas_object_show(base); + evas_object_show(m->base); } /** @@ -316,31 +321,23 @@ static void _show(Evas_Object *base) * @param base [in] The view layout evas object. * @return void. */ -static void _destroy(Evas_Object *base) +void CUiGadgetView::Destroy(void) { - struct _data *data; + ASSERT(m); - if (!base) { - _ERR("Invalid argument!"); - return; - } - - data = (struct _data *) evas_object_data_get(base, DATA_ID); - if (!data) { - _ERR("Fail to get uglauncher data"); - return; - } + if (m->ug_is_existed == EINA_TRUE) + ug_destroy(m->ug_handler); - if (data->ug_is_existed == EINA_TRUE) - ug_destroy(data->ug_handler); + if (m->view) + viewdata_release(m->view); - if (data->view) - viewdata_release(data->view); - - evas_object_del(base); - free(data); + evas_object_del(m->base); + delete m; + m = NULL; } +#if 0 + static struct setting_class _vclass = { VCLASS_TITLE_UG, _create, @@ -366,3 +363,4 @@ struct setting_class *view_uigadget_get_vclass(void) { return &_vclass; } +#endif \ No newline at end of file -- 2.7.4