Refactoring / code clean 28/38128/2
authorJuWan Kim <juwan.kim@samsung.com>
Mon, 13 Apr 2015 11:58:53 +0000 (20:58 +0900)
committerJuWan Kim <juwan.kim@samsung.com>
Mon, 13 Apr 2015 12:02:12 +0000 (21:02 +0900)
Change-Id: I075c61762513fb01a7573ed0c44abdbf6a4994f2
Signed-off-by: JuWan Kim <juwan.kim@samsung.com>
include/view_maincatalog.h
src/settingviewmgr.cpp
src/view_maincatalog.cpp
src/view_pwd_popup.cpp

index 11f6661..95a3894 100644 (file)
 
 
 #include "settingviewmgr.h"
+#include "InputHandler.h"
 
 
 class CMainCatalogView :
-       public CSettingBaseView {
+       public CSettingBaseView,
+       public CListenerMgr,
+       public IMouseClickedListener,
+       public IKeyUpListener,
+       public IKeyDownListener
+{
 private:
        struct SMainCatalog *m;
 
        static void sm_CbViewAniFinish(void *data, Evas_Object *obj, const char *emission, const char *source);
        void m_OnViewAniFinish(Evas_Object *obj, const char *emission, const char *source);
 
+       static void sm_CbMainItemBtnMouseIN(void *data, Evas *e, Evas_Object *obj, void *ei);
+       void m_OnMainItemMouseIN(Evas *e, Evas_Object *obj, void *ei);
+
+       void m_SubItemClicked(Evas_Object *obj);
+       bool m_DrawSubItems(const char *name);
+       void m_MoveFromMainitemToSubitem(Evas_Object *mainbtn);
+       void m_MoveFromSubitemToMainitem(Evas_Object *btn);
+       bool m_AddIconBtns(Eina_List *list);
        void m_DrawMainItems(void);
 
 public:
-       CMainCatalogView(const char *pViewId) : CSettingBaseView(pViewId), m(0) {}
+       CMainCatalogView(const char *pViewId) : 
+               CSettingBaseView(pViewId), 
+               IMouseClickedListener(this),
+               IKeyUpListener(this),
+               IKeyDownListener(this),
+               m(0) {}
        virtual ~CMainCatalogView() {}
 
        Evas_Object *Base(void);
@@ -45,6 +64,10 @@ public:
        virtual void LangChanged(void);
        virtual void Frozen(void);
        virtual void Active(void);
+
+       virtual void OnMouseClicked(int id, Evas_Object *obj);
+       virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev);
+       virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
 };
 
 
index 674f3bf..66c8379 100644 (file)
@@ -18,7 +18,8 @@
 #include <Eina.h>
 #include "dbg.h"
 
-#include "AppCommon.h"
+#include <AppCommon.h>
+#include <InputHandler.h>
 #include "settingviewmgr.h"
 #include "data_wrapper.h"
 #include "timeout_handler.h"
@@ -135,8 +136,7 @@ static struct settingview_data *_build_setting_view(
 }
 
 
-
-CMainCatalogView g_maincatalog(VCLASS_TITLE_MAIN_VIEW);
+CMainCatalogView *g_maincatalog;
 /**
 *  This function is invoked to get setting_class data pointer, this data stand for a kind of view.
 *
@@ -169,8 +169,10 @@ static CSettingBaseView *_get_view_class(SSettingMgr *mgr,
        vclass = NULL;
 
        if (list && !style) {
-               if (mgr->depth == 1)
-                       vclass = &g_maincatalog;// view_maincatalog_get_vclass();
+               if (mgr->depth == 1){
+                       g_maincatalog = new CMainCatalogView(VCLASS_TITLE_MAIN_VIEW);
+                       vclass = (CSettingBaseView *) g_maincatalog;// view_maincatalog_get_vclass();
+               }
        } else {
                size = sizeof(g_func_map) / sizeof(*g_func_map);
                for (i = 0; i < size; i++) {
index d7f15b7..a3e2220 100644 (file)
@@ -22,6 +22,7 @@
 #include "stdbool.h"
 #include "settingviewmgr.h"
 #include "utils.h"
+#include <InputHandler.h>
 #include "view_maincatalog.h"
 #include "data_wrapper.h"
 #include "settings_provider.h"
 #define ENABLED "enabled"
 #define SIG_CLICKED "clicked"
 
+enum KeyID {
+       MAIN_ITEM_BTNS,
+       SUB_ITEM_BTNS
+};
+
 enum focused_state {
        FOCUS_MAIN_ITEM = 1,
        FOCUS_SUB_ITEM
@@ -79,98 +85,16 @@ struct SMainCatalog {
 *
 * @return: void.
 */
-static void _move_from_subitem_to_main_item(SMainCatalog *data,
-               Evas_Object *btn)
+void CMainCatalogView::m_MoveFromSubitemToMainitem(Evas_Object *btn)
 {
-       if (!data || !btn)
-               return;
+       if(!btn) return;
+       m->focus_status = FOCUS_MAIN_ITEM;
+       m->focused_sub_item_btn = btn;
 
-       data->focus_status = FOCUS_MAIN_ITEM;
-       data->focused_sub_item_btn = btn;
-
-       elm_object_focus_set(data->focused_main_item_btn, EINA_TRUE);
+       elm_object_focus_set(m->focused_main_item_btn, EINA_TRUE);
 }
 
-/**
-* Evas_Object_Event_Cb type callback for handling key press event.
-*
-* @param[in]: data : the user data.
-* @param[in]: e : the evas canvas.
-* @param[in]: obj : the corresponding object which the key press event occurred.
-* @param[in]: ei : event info.
-*
-* @return: void.
-*/
-static void _subitem_key_pressed_cb(void *data, Evas *e,
-               Evas_Object *obj, void *ei)
-{
-       Evas_Event_Key_Down *ev;
-       SMainCatalog *priv;
-       Evas_Object *pb;
-       Evas_Object *next;
-
-       if (!data || !ei || !obj)
-               return;
-
-       ev = (Evas_Event_Key_Down *) ei;
-       if (!ev->keyname)
-               return;
-
-       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);
-               if (pb)
-                       elm_object_signal_emit(pb,
-                                       SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
-
-               _move_from_subitem_to_main_item(priv, obj);
-       } else if (!strncmp(ev->keyname, KEY_DOWN, strlen(ev->keyname))) {
-               pb = (Evas_Object *)evas_object_data_get(obj, PROGRESS_BAR_DATA);
-               if (pb)
-                       elm_object_signal_emit(pb,
-                                       SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
-
-               next = elm_object_focus_next_object_get(obj,
-                               ELM_FOCUS_DOWN);
-               if (!next) {
-                       _ERR("focus next object get failed.");
-                       return;
-               }
-
-               pb = (Evas_Object *)evas_object_data_get(next, PROGRESS_BAR_DATA);
-               if (pb)
-                       elm_object_signal_emit(pb,
-                                       SIG_UNCTRL_PB_FOCUSED, SRC_PB_PROG);
-       } else if (!strncmp(ev->keyname, KEY_UP, strlen(ev->keyname))) {
-               pb = (Evas_Object *)evas_object_data_get(obj, PROGRESS_BAR_DATA);
-               if (pb)
-                       elm_object_signal_emit(pb,
-                                       SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
-
-               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_UP);
-               if (!next) {
-                       _ERR("focus next object get failed.");
-                       return;
-               }
-
-               pb = (Evas_Object *)evas_object_data_get(next, PROGRESS_BAR_DATA);
-               if (pb)
-                       elm_object_signal_emit(pb,
-                                       SIG_UNCTRL_PB_FOCUSED, SRC_PB_PROG);
-       } else if (!strncmp(ev->keyname, KEY_EXIT, strlen(ev->keyname))) {
-               app_efl_exit();
-       }
-}
 
-/**
-* Get geometry data of object such as width, height.
-*
-* @param[in]: obj : the object which you want to get geometry data from.
-* @param[out]: param : the geometry data.
-*
-* @return: void.
-*/
 static void _get_geometry_data(Evas_Object *obj,
                struct obj_geometry_data *param)
 {
@@ -191,501 +115,127 @@ static void _get_geometry_data(Evas_Object *obj,
        param->height = h;
 }
 
-/**
-* Entry of showing UI gadget views.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data.
-* param[in]: obj : object whose next view is UI gadget.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_ug_view(SMainCatalog *data,
-               struct settingitem *item, Evas_Object *obj)
-{
-       const char *id;
-       struct evas_obj_data param;
-
-       if (!data || !item || !obj) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       param.subitem_box = data->subitem_box;
-       param.display_name = settingitem_get_display_name(item);
-       param.cur_btn = obj;
-
-       if (!data->mgr->ViewPush(id, (void *)&param)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       return 0;
-}
-
-/**
-* Entry of showing sublist views.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data.
-* param[in]: obj : object whose next view is sublist.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_sublist_view(SMainCatalog *data,
-               struct settingitem *item, Evas_Object *obj)
-{
-       const char *id;
-       struct obj_geometry_data ogd;
-
-       if (!data || !item || !obj) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       _get_geometry_data(obj, &ogd);
-
-       if (!data->mgr->ViewPush(id, (void *)&ogd)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       elm_object_signal_emit(obj, SUBITEMBTN_BUTTON_CLICKED,
-                       SUBITEMBTN_BUTTON_SOURCE);
-
-       return 0;
-}
-
-/**
-* Entry of showing bottom sublist views.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_bottom_sublist_view(SMainCatalog *data,
-               struct settingitem *item)
-{
-       const char *id;
-
-       if (!data || !item) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       if (!data->mgr->ViewPush(id, NULL)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       return 0;
-}
-
-/**
-* Entry of showing bottom slider views.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data.
-* param[in]: obj : object whose next view bottom slider.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_bottom_slider_view(SMainCatalog *data,
-               struct settingitem *item, Evas_Object *obj)
-{
-       const char *id;
-       Eina_List *list;
-       Evas_Object *pb;
-
-       if (!data || !item || !obj) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       pb = (Evas_Object *)evas_object_data_get(obj, PROGRESS_BAR_DATA);
-       if (pb)
-               elm_object_signal_emit(pb,
-                               SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
-
-       list = settingitem_get_slider_group_list(
-                       viewdata_get_parentitem(data->subsetting_view),
-                       data->mgr->GetData(), id);
-
-       if (!data->mgr->ViewPush(id, list)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       return 0;
-}
-
-/**
-* Entry of showing passcode popup views.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_passcode_popup_view(SMainCatalog *data,
-               struct settingitem *item)
-{
-       const char *id;
-
-       if (!data || !item) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       if (!data->mgr->ViewPush(id, NULL)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       return 0;
-}
-
-/**
-* Entry of showing device manager view.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data read from json file.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_device_manager_view(SMainCatalog *data,
-               struct settingitem *item)
-{
-       const char *id;
-       struct evas_obj_data param;
-
-       if (!data || !item) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       param.display_name = settingitem_get_display_name(item);
-       param.subitem_box = data->subitem_box;
-
-       if (!data->mgr->ViewPush(id, &param)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       return 0;
-}
-
-/**
-* Entry of showing reset popup view.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data read from json file.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_reset_popup_view(SMainCatalog *data,
-               struct settingitem *item)
-{
-       const char *id;
-
-       if (!data || !item) {
-               _ERR("Invalid argument");
-               return -1;
-       }
 
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
-
-       if (!data->mgr->ViewPush(id, NULL)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
-
-       return 0;
-}
-
-/**
-* Entry of showing software upgrade popup view.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data read from json file.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_upgrade_popup_view(SMainCatalog *data,
-               struct settingitem *item)
+void CMainCatalogView::m_SubItemClicked(Evas_Object *obj)
 {
-       const char *id;
+       const char *style;
+       struct settingitem *item;
 
-       if (!data || !item) {
-               _ERR("Invalid argument");
-               return -1;
-       }
+       if (m->focus_status != FOCUS_SUB_ITEM)
+               return;
 
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
+       item =(struct settingitem *)  evas_object_data_get(obj, SUBITEM_DATA_ID);
+       if (!item) {
+               _ERR("Get sub item failed");
+               return;
        }
 
-       if (!data->mgr->ViewPush(id, NULL)) {
-               _ERR("Fail to push view");
-               return -1;
+       style = settingitem_get_settingui_style(item);
+       if (!style) {
+               _ERR("setting-ui style is null.");
+               return;
        }
 
-       return 0;
-}
-
-/**
-* Entry of showing clock sublist view.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data read from json file.
-* param[in]: obj : object whose next view is clock sublist view.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_clock_sublist_view(SMainCatalog *data,
-               struct settingitem *item, Evas_Object *obj)
-{
        const char *id;
-       struct evas_obj_data param;
-       struct obj_geometry_data ogd;
-
-       if (!data || !item || !obj) {
-               _ERR("Invalid argument");
-               return -1;
-       }
-
        id = settingitem_get_id(item);
        if (!id) {
                _ERR("Fail to get item id");
-               return -1;
+               return ;
        }
 
-       _get_geometry_data(obj, &ogd);
+       if (!strncmp(style, STYLE_UIGADGET, strlen(style))) {
 
-       param.display_name = settingitem_get_display_name(item);
-       param.subitem_box = data->subitem_box;
-       param.cur_btn = obj;
+               struct evas_obj_data param;
+               param.subitem_box = m->subitem_box;
+               param.display_name = settingitem_get_display_name(item);
+               param.cur_btn = obj;
 
-       evas_object_data_set(obj, SYSTEM_CLOCK_DATA, (void *)&ogd);
+               if (!m->mgr->ViewPush(id, (void *)&param))
+                       _ERR("Fail to push ug view");
 
-       if (!data->mgr->ViewPush(id, &param)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
+       } else if (!strncmp(style, STYLE_CTXPOPUP, strlen(style))) {
 
-       elm_object_signal_emit(obj,
-                       SUBITEMBTN_BUTTON_CLICKED, SUBITEMBTN_BUTTON_SOURCE);
+               struct obj_geometry_data ogd;
+               _get_geometry_data(obj, &ogd);
 
-       return 0;
-}
-/**
-* Entry of showing channel lock view.
-*
-* param[in]: data : the user data.
-* param[in]: item : item data read from json file.
-* param[in]: obj : the channel lock object.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _push_need_passcode_view(SMainCatalog *data,
-               struct settingitem *item, Evas_Object *obj)
-{
-       const char *id;
-       struct obj_geometry_data ogd;
-
-       if (!data || !item || !obj) {
-               _ERR("Invalid argument");
-               return -1;
-       }
+               if (!m->mgr->ViewPush(id, (void *)&ogd))
+                       _ERR("Fail to push sublist");
+               else
+                       elm_object_signal_emit(obj, SUBITEMBTN_BUTTON_CLICKED, SUBITEMBTN_BUTTON_SOURCE);
 
-       id = settingitem_get_id(item);
-       if (!id) {
-               _ERR("Fail to get item id");
-               return -1;
-       }
+       } else if (!strncmp(style, STYLE_BOTTOM_CTXPOPUP, strlen(style))) {
 
-       _get_geometry_data(obj, &ogd);
+               if (!m->mgr->ViewPush(id, NULL))
+                       _ERR("Fail to push view");
 
-       if (!data->mgr->ViewPush(id, &ogd)) {
-               _ERR("Fail to push view");
-               return -1;
-       }
+       } else if (!strncmp(style, STYLE_BOTTOMSLIDER, strlen(style)) || !strncmp(style, STYLE_BOTTOM2WAYSLIDER, strlen(style))) {
 
-       elm_object_signal_emit(obj, SUBITEMBTN_BUTTON_CLICKED,
-                       SUBITEMBTN_BUTTON_SOURCE);
+               Eina_List *list;
+               Evas_Object *pb;
+               pb = (Evas_Object *)evas_object_data_get(obj, PROGRESS_BAR_DATA);
+               if (pb)
+                       elm_object_signal_emit(pb, SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
+               list = settingitem_get_slider_group_list(viewdata_get_parentitem(m->subsetting_view), m->mgr->GetData(), id);
+               if (!m->mgr->ViewPush(id, list))
+                       _ERR("Fail to push bottom slider view");
 
-       return 0;
-}
+       } else if (!strncmp(style, STYLE_PASSCODE_POPUP, strlen(style))) {
 
-/**
-* This function will be invoked when subitem is clicked.
-*
-* @param[in]: data : the user data.
-* @param[in]: obj : the subitem object.
-*
-* @return: void.
-*/
-static void _submenu_item_clicked(void *data, Evas_Object *obj)
-{
-       SMainCatalog *priv;
-       const char *style;
-       struct settingitem *item;
+               if (!m->mgr->ViewPush(id, NULL))
+                       _ERR("Fail to push passcode view");
 
-       if (!data || !obj) {
-               _ERR("Invalid argument");
-               return;
-       }
+       } else if (!strncmp(style, STYLE_DEVICE_MANAGER, strlen(style))) {
 
-       priv = (SMainCatalog *) data;
+               struct evas_obj_data param;
+               param.display_name = settingitem_get_display_name(item);
+               param.subitem_box = m->subitem_box;
 
-       if (priv->focus_status != FOCUS_SUB_ITEM)
-               return;
+               if (!m->mgr->ViewPush(id, &param))
+                       _ERR("Fail to push device_manager view");
 
-       item =(struct settingitem *)  evas_object_data_get(obj, SUBITEM_DATA_ID);
-       if (!item) {
-               _ERR("Get sub item failed");
-               return;
-       }
+       } else if (!strncmp(style, STYLE_RESET_POPUP, strlen(style))) {
 
-       style = settingitem_get_settingui_style(item);
-       if (!style) {
-               _ERR("setting-ui style is null.");
-               return;
-       }
+               if (!m->mgr->ViewPush(id, NULL))
+                       _ERR("Fail to push reset_popup view");
 
-       if (!strncmp(style, STYLE_UIGADGET, strlen(style))) {
-               if (_push_ug_view(priv, item, obj) != 0)
-                       _ERR("Fail to push ug");
-       } else if (!strncmp(style, STYLE_CTXPOPUP,
-                       strlen(style))) {
-               if (_push_sublist_view(priv, item, obj) != 0)
-                       _ERR("Fail to push sublist");
-       } else if (!strncmp(style, STYLE_BOTTOM_CTXPOPUP,
-                       strlen(style))) {
-               if (_push_bottom_sublist_view(priv, item) != 0)
-                       _ERR("Fail to push bottom sublist");
-       } else if (!strncmp(style, STYLE_BOTTOMSLIDER,
-                       strlen(style)) || !strncmp(style,
-                       STYLE_BOTTOM2WAYSLIDER,
-                       strlen(style))) {
-               if (_push_bottom_slider_view(priv,
-                               item, obj) != 0)
-                       _ERR("Fail to push bottom slider");
-       } else if (!strncmp(style, STYLE_PASSCODE_POPUP,
-                       strlen(style))) {
-               if (_push_passcode_popup_view(priv, item) != 0)
-                       _ERR("Fail to push passcode popup");
-       } else if (!strncmp(style, STYLE_DEVICE_MANAGER,
-                       strlen(style))) {
-               if (_push_device_manager_view(priv, item) != 0)
-                       _ERR("Fail to push device mgr view");
-       } else if (!strncmp(style, STYLE_RESET_POPUP,
-                       strlen(style))) {
-               if (_push_reset_popup_view(priv, item) != 0)
-                       _ERR("Fail to push reset popup");
-       } else if (!strncmp(style, STYLE_UPGRADE_POPUP,
-                       strlen(style))) {
-               if (_push_upgrade_popup_view(priv, item) != 0)
-                       _ERR("Fail to push upgrade popup");
-       } else if (!strncmp(style, STYLE_CLOCK_CTXPOPUP,
-                       strlen(style))) {
-               if (_push_clock_sublist_view(
-                               priv, item, obj) != 0)
-                       _ERR("Fail to push clock sublist");
-       } else if (!strncmp(style, STYLE_NEED_PASSCODE,
-                       strlen(style))) {
-               if (_push_need_passcode_view(
-                               priv, item, obj) != 0)
-                       _ERR("Fail to push need passcode view");
-       }
+       } else if (!strncmp(style, STYLE_UPGRADE_POPUP, strlen(style))) {
 
-       priv->focused_sub_item_btn = obj;
-}
+               if (!m->mgr->ViewPush(id, NULL))
+                       _ERR("Fail to push reset_popup view");
 
-/**
-* Evas_Smart_Cb type callback for handling click event.
-*
-* @param[in]: data : the user data.
-* @param[in]: obj : the corresponding object which the click event occurred.
-* @param[in]: ev : event info.
-*
-* @return: void.
-*/
-static void _subitem_btn_clicked_cb(void *data,
-               Evas_Object *obj, void *ev)
-{
-       SMainCatalog *priv;
-       Evas_Object *icon;
+       } else if (!strncmp(style, STYLE_CLOCK_CTXPOPUP, strlen(style))) {
 
-       if (!data || !obj) {
-               _ERR("Invalid argument");
-               return;
-       }
+               struct evas_obj_data param;
+               struct obj_geometry_data ogd;
 
-       priv = (SMainCatalog *)data;
+               _get_geometry_data(obj, &ogd);
 
-       _submenu_item_clicked(priv, obj);
+               param.display_name = settingitem_get_display_name(item);
+               param.subitem_box = m->subitem_box;
+               param.cur_btn = obj;
 
-       elm_object_signal_emit(priv->focused_main_item_btn,
-                       MAINICONBTN_FOCUSED_ON_SUBITEM,
-                       MAINICONBTN_MAIN_ITEM_SOURCE);
+               evas_object_data_set(obj, SYSTEM_CLOCK_DATA, (void *)&ogd);
 
-       icon = elm_object_part_content_get(priv->focused_main_item_btn,
-                       MAINICONBTN_ICON_SWALLOW);
-       if (icon)
-               elm_object_signal_emit(icon, MAIN_BTN_HIGHLIGHT, MAIN_BTN);
+               if (!m->mgr->ViewPush(id, &param))
+                       _ERR("Fail to push view");
+               else
+                       elm_object_signal_emit(obj, SUBITEMBTN_BUTTON_CLICKED, SUBITEMBTN_BUTTON_SOURCE);
+
+       } else if (!strncmp(style, STYLE_NEED_PASSCODE, strlen(style))) {
+
+               struct obj_geometry_data ogd;
+               _get_geometry_data(obj, &ogd);
+
+               if (!m->mgr->ViewPush(id, &ogd))
+                       _ERR("Fail to push view");
+               else
+                       elm_object_signal_emit(obj, SUBITEMBTN_BUTTON_CLICKED, SUBITEMBTN_BUTTON_SOURCE);
+
+       }
+
+       m->focused_sub_item_btn = obj;
 }
 
-/**
-* Get item value from item.
-*
-* @param[in]: item : the item data read from json file.
-*
-* @return: the value of item or null if error occurred.
-*/
 static char *_settingitems_get_value(struct settingitem *item)
 {
        char *result;
@@ -999,34 +549,7 @@ static int _refresh_subitems(SMainCatalog *data)
        return 0;
 }
 
-/**
-* Evas_Object_Event_Cb type callback for handling mouse out event.
-*
-* @param[in]: data : the user data.
-* @param[in]: e : the evas.
-* @param[in]: obj : the corresponding object which the mouse out event occurred.
-* @param[in]: ei : event info.
-*
-* @return: void.
-*/
-static void _subitem_btn_mouse_out_cb(void *data, Evas *e,
-               Evas_Object *obj, void *ei)
-{
-       /* TODO: Add necessary operations if needed. */
-}
-
-/**
-* Evas_Object_Event_Cb type callback for handling mouse in event.
-*
-* @param[in]: data : the user data.
-* @param[in]: e : the evas.
-* @param[in]: obj : the corresponding object which the mouse in event occurred.
-* @param[in]: ei : event info.
-*
-* @return: void.
-*/
-static void _subitem_btn_mouse_in_cb(void *data, Evas *e,
-               Evas_Object *obj, void *ei)
+static void _subitem_btn_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *ei)
 {
        SMainCatalog *priv;
        Evas_Object *icon, *pb;
@@ -1072,28 +595,28 @@ static void _subitem_btn_mouse_in_cb(void *data, Evas *e,
 *
 * @return: 0 - success, -1 - fail.
 */
-static int _draw_subitems(SMainCatalog *data, const char *name)
+bool CMainCatalogView::m_DrawSubItems(const char *name)
 {
-       Evas_Object *box, *btn, *tmp;
        struct settingview_data *view;
-       struct settingitem *item;
-       void* obj;
        Eina_List *list, *l;
-       int cnt;
+       void* obj;
+
+       Evas_Object *btn, *tmp;
+       struct settingitem *item;
        Eina_Array_Iterator a;
        unsigned int i;
        const char *style, *status;
        Eina_Array *enabled;
 
-       if (!data || !name || !data->base) {
+       if (!name) {
                _ERR("Invalid argument");
-               return -1;
+               return false;
        }
 
-       view = data->mgr->GetView(name);
+       view = m->mgr->GetView(name);
        if (!view) {
-               _ERR("get subview failed\n");
-               return -1;
+               _ERR("get subview failed");
+               return false;
        }
 
        list = viewdata_get_childitems_list(view);
@@ -1101,15 +624,15 @@ static int _draw_subitems(SMainCatalog *data, const char *name)
                _ERR("childitem list is empty!");
                if (view)
                        viewdata_release(view);
-               return -1;
+               return false;
        }
 
-       cnt = eina_list_count(list);
+       m->sub_item_count = eina_list_count(list);
 
-       data->sub_item_btn = eina_array_new(1);
+       m->sub_item_btn = eina_array_new(1);
        enabled = eina_array_new(1);
-       if (!data->sub_item_btn || !enabled) {
-               _ERR("Create Eina Array failed\n");
+       if (!m->sub_item_btn || !enabled) {
+               _ERR("Create Eina Array failed");
                EINA_LIST_FREE(list, obj);
                {
                        item = (struct settingitem *) obj;
@@ -1117,61 +640,56 @@ static int _draw_subitems(SMainCatalog *data, const char *name)
                }
                if (view)
                        viewdata_release(view);
-               return -1;
+               return false;
        }
 
-       box = utils_add_box(data->base);
-       if (!box) {
-               _ERR("Add box failed\n");
+       m->subitem_box = utils_add_box(m->base);
+       if (!m->subitem_box) {
+               _ERR("Add m->subitem_box failed");
                EINA_LIST_FREE(list, obj);
                {
                        item = (struct settingitem *) obj;
                        free(item);
                }
-               eina_array_free(data->sub_item_btn);
+               eina_array_free(m->sub_item_btn);
                if (view)
                        viewdata_release(view);
-               return -1;
+               return false;
        }
 
        EINA_LIST_FOREACH(list, l, obj) {
                item = (struct settingitem *) obj;
-               btn = utils_add_btn(data->base, SUBITEMBTN_STYLE,
-                               settingitem_get_display_name(item), EINA_FALSE);
+               btn = utils_add_btn(m->base, SUBITEMBTN_STYLE, settingitem_get_display_name(item), EINA_FALSE);
                if (!btn) {
                        _ERR("Add btn failed");
-                       evas_object_del(box);
+                       evas_object_del(m->subitem_box);
                        EINA_LIST_FREE(list, obj);
                        {
                                item = (struct settingitem *) obj;
                                free(item);
                        }
-                       EINA_ARRAY_ITER_NEXT(data->sub_item_btn, i, obj, a)
+                       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 (view)
                                viewdata_release(view);
-                       return -1;
+                       return false;
                }
 
                style = settingitem_get_style(item);
                if (style)
-                       _draw_subitem_with_style(data->base, btn, style, item);
+                       _draw_subitem_with_style(m->base, btn, style, item);
 
-               evas_object_smart_callback_add(btn, "clicked",
-                               _subitem_btn_clicked_cb, data);
-               evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN,
-                               _subitem_key_pressed_cb, data);
-               evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_IN,
-                               _subitem_btn_mouse_in_cb, data);
-               evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_OUT,
-                               _subitem_btn_mouse_out_cb, data);
+               Connect(btn, SUB_ITEM_BTNS, TYPE_CLICKED | TYPE_KEY_DOWN);
+               //evas_object_smart_callback_add(btn, "clicked", _subitem_btn_clicked_cb, data);
+               //evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN, _subitem_key_pressed_cb, data);
+               evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_IN, _subitem_btn_mouse_in_cb, m);
 
-               elm_box_pack_end(box, btn);
-               eina_array_push(data->sub_item_btn, btn);
+               elm_box_pack_end(m->subitem_box, btn);
+               eina_array_push(m->sub_item_btn, btn);
 
                evas_object_data_set(btn, SUBITEM_DATA_ID, item);
 
@@ -1184,12 +702,9 @@ static int _draw_subitems(SMainCatalog *data, const char *name)
                }
        }
 
-       data->subsetting_view = view;
-       data->sub_item_count = cnt;
-       data->subitem_box = box;
-
-       elm_object_part_content_set(data->base, MAIN_VIEW_SUBITEM_SWALLOW, box);
+       m->subsetting_view = view;
 
+       elm_object_part_content_set(m->base, MAIN_VIEW_SUBITEM_SWALLOW, m->subitem_box);
        utils_set_focus_directions(enabled, eina_array_count(enabled));
 
        EINA_LIST_FREE(list, obj);
@@ -1199,33 +714,24 @@ static int _draw_subitems(SMainCatalog *data, const char *name)
        }
        eina_array_free(enabled);
 
-       return 0;
+       return true;
 }
 
-/**
-* This function will be invoked when the main item is clicked.
-*
-* @param[in]: data : the user data.
-* @param[in]: mainbtn : the main item which the clicked event is occurred.
-*
-* @return: void.
-*/
-static void _move_from_main_item_to_subitem(SMainCatalog *data,
-               Evas_Object *mainbtn)
+void CMainCatalogView::m_MoveFromMainitemToSubitem(Evas_Object *mainbtn)
 {
        Evas_Object *btn = NULL, *pb, *icon;
        int i;
 
-       if (!data || !mainbtn)
+       if (!mainbtn)
                return;
 
-       data->focus_status = FOCUS_SUB_ITEM;
+       m->focus_status = FOCUS_SUB_ITEM;
 
-       for (i = 0; i < data->sub_item_count; i++) {
-               btn = (Evas_Object *) eina_array_data_get(data->sub_item_btn, i);
+       for (i = 0; i < m->sub_item_count; i++) {
+               btn = (Evas_Object *) eina_array_data_get(m->sub_item_btn, i);
                if (!btn) {
-                       _ERR("Get subitem btn failed\n");
-                       data->focus_status = FOCUS_MAIN_ITEM;
+                       _ERR("Get subitem btn failed");
+                       m->focus_status = FOCUS_MAIN_ITEM;
                        return;
                }
 
@@ -1233,8 +739,8 @@ static void _move_from_main_item_to_subitem(SMainCatalog *data,
                        break;
        }
 
-       if (i >= data->sub_item_count) {
-               data->focus_status = FOCUS_MAIN_ITEM;
+       if (i >= m->sub_item_count) {
+               m->focus_status = FOCUS_MAIN_ITEM;
                return;
        }
 
@@ -1244,147 +750,37 @@ static void _move_from_main_item_to_subitem(SMainCatalog *data,
 
        elm_object_focus_set(btn, EINA_TRUE);
 
-       data->focused_main_item_btn = mainbtn;
-       elm_object_signal_emit(mainbtn, MAINICONBTN_FOCUSED_ON_SUBITEM,
-                       MAINICONBTN_MAIN_ITEM_SOURCE);
+       m->focused_main_item_btn = mainbtn;
+       elm_object_signal_emit(mainbtn, MAINICONBTN_FOCUSED_ON_SUBITEM, MAINICONBTN_MAIN_ITEM_SOURCE);
 
        icon = elm_object_part_content_get(mainbtn, MAINICONBTN_ICON_SWALLOW);
        if (icon)
                elm_object_signal_emit(icon, MAIN_BTN_HIGHLIGHT, MAIN_BTN);
 }
 
-/**
-* Evas_Object_Event_Cb type callback for handling key press event.
-*
-* @param[in]: data : the user data.
-* @param[in]: e : the evas.
-* @param[in]: obj : the corresponding object which the key press event occurred.
-* @param[in]: ei : event info.
-*
-* @return: void.
-*/
-static void _main_setting_key_pressed_cb(void *data, Evas *e,
-               Evas_Object *obj, void *ei)
+void CMainCatalogView::sm_CbMainItemBtnMouseIN(void *data, Evas *e, Evas_Object *obj, void *ei)
 {
-       Evas_Event_Key_Down *ev;
-       SMainCatalog *priv;
-       Evas_Object *next, *icon;
-       const char *name;
-
-       if (!data || !ei || !obj)
-               return;
-
-       ev = (Evas_Event_Key_Down *)ei;
-       if (!ev->keyname)
-               return;
-
-       priv = (SMainCatalog *)data;
-
-       if (!strcmp(ev->keyname, KEY_DOWN)) {
-               icon = elm_object_part_content_get(obj,
-                               MAINICONBTN_ICON_SWALLOW);
-               if (!icon) {
-                       _ERR("part %s content get failed.",
-                                       MAINICONBTN_ICON_SWALLOW);
-                       return;
-               }
-
-               elm_object_signal_emit(icon, MAIN_BTN_UNFOCUSED, MAIN_BTN);
-
-               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_DOWN);
-               if (!next) {
-                       _ERR("next object get failed.");
-                       return;
-               }
-
-               priv->focused_main_item_btn = next;
-
-               icon = elm_object_part_content_get(next,
-                               MAINICONBTN_ICON_SWALLOW);
-               if (!icon) {
-                       _ERR("part %s content get failed.",
-                                       MAINICONBTN_ICON_SWALLOW);
-                       return;
-               }
-
-               elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, MAIN_BTN);
-
-               _release_subitems(priv);
-
-               name =(const char *) evas_object_data_get(next, SETTING_ID);
-               if (name)
-                       _draw_subitems(priv, name);
-       } else if (!strcmp(ev->keyname, KEY_UP)) {
-               icon = elm_object_part_content_get(obj,
-                               MAINICONBTN_ICON_SWALLOW);
-               if (!icon) {
-                       _ERR("part %s content get failed.",
-                                       MAINICONBTN_ICON_SWALLOW);
-                       return;
-               }
-
-               elm_object_signal_emit(icon, MAIN_BTN_UNFOCUSED, MAIN_BTN);
-
-               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_UP);
-               if (!next) {
-                       _ERR("next object get failed.");
-                       return;
-               }
-
-               priv->focused_main_item_btn = next;
-
-               icon = elm_object_part_content_get(next,
-                               MAINICONBTN_ICON_SWALLOW);
-               if (!icon) {
-                       _ERR("part %s content get failed.",
-                                       MAINICONBTN_ICON_SWALLOW);
-                       return;
-               }
-
-               elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, MAIN_BTN);
+       CMainCatalogView *instance;
 
-               _release_subitems(priv);
-
-               name =(const char *) evas_object_data_get(next, SETTING_ID);
-               if (name)
-                       _draw_subitems(priv, name);
-       } else if (!strcmp(ev->keyname, KEY_RIGHT)) {
-               _move_from_main_item_to_subitem(priv, obj);
-       } else if (!strcmp(ev->keyname, KEY_EXIT) || !strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
-               app_efl_exit();
-       }
+       if(!data){_ERR("Invaild Parameter"); return;}
+       instance = (CMainCatalogView *)data;
+       instance->m_OnMainItemMouseIN(e, obj, ei);
 }
 
-/**
-* Evas_Object_Event_Cb type callback for handling mouse in event.
-*
-* @param[in]: data : the user data.
-* @param[in]: e : the evas.
-* @param[in]: obj : the corresponding object which the mouse in event occurred.
-* @param[in]: ei : event info.
-*
-* @return: void.
-*/
-static void _mainitem_btn_mouse_in_cb(void *data, Evas *e,
-               Evas_Object *obj, void *ei)
+void CMainCatalogView::m_OnMainItemMouseIN(Evas *e, Evas_Object *obj, void *ei)
 {
-       SMainCatalog *priv;
        const char *name;
        Evas_Object *icon;
 
-       if (!data || !obj) {
+       if (!obj) {
                _ERR("Invalid argument");
                return;
        }
 
-       priv = (SMainCatalog *)data;
-
-       if (priv->focus_status == FOCUS_SUB_ITEM)
-               _move_from_subitem_to_main_item(priv,
-                               priv->focused_sub_item_btn);
+       if (m->focus_status == FOCUS_SUB_ITEM)
+               m_MoveFromSubitemToMainitem(m->focused_sub_item_btn);
 
-       icon = elm_object_part_content_get(priv->focused_main_item_btn,
-                       MAINICONBTN_ICON_SWALLOW);
+       icon = elm_object_part_content_get(m->focused_main_item_btn, MAINICONBTN_ICON_SWALLOW);
        if (icon)
                elm_object_signal_emit(icon, MAIN_BTN_UNFOCUSED, MAIN_BTN);
 
@@ -1392,101 +788,48 @@ static void _mainitem_btn_mouse_in_cb(void *data, Evas *e,
        if (icon)
                elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, MAIN_BTN);
 
-       _release_subitems(priv);
+       _release_subitems(m);
 
        name =(const char *) evas_object_data_get(obj, SETTING_ID);
        if (name)
-               _draw_subitems(priv, name);
+               m_DrawSubItems(name);
 
        elm_object_focus_set(obj, EINA_TRUE);
-       priv->focused_main_item_btn = obj;
-}
-
-/**
-* Evas_Object_Event_Cb type callback for handling mouse out event.
-*
-* @param[in]: data : the user data.
-* @param[in]: e : the evas.
-* @param[in]: obj : the corresponding object which the mouse out event occurred.
-* @param[in]: ei : event info.
-*
-* @return: void.
-*/
-static void _mainitem_btn_mouse_out_cb(void *data, Evas *e,
-               Evas_Object *obj, void *ei)
-{
-       /* TODO: Add necessary operations if needed. */
+       m->focused_main_item_btn = obj;
 }
 
-/**
-* Evas_Smart_Cb type callback for handling click event.
-*
-* @param[in]: data : the user data.
-* @param[in]: obj : the corresponding object which the click event occurred.
-* @param[in]: ev : event info.
-*
-* @return: void.
-*/
-static void _mainitem_btn_clicked_cb(void *data,
-               Evas_Object *obj, void *ev)
-{
-       SMainCatalog *priv;
-
-       if (!data || !obj) {
-               _ERR("Invalid argument");
-               return;
-       }
-
-       priv = (SMainCatalog *)data;
-       _move_from_main_item_to_subitem(priv, obj);
-}
 
-/**
-* Create main items of settings.
-*
-* @param[in]: data : the user data.
-* @param[in]: list : the eina list containing data of main items.
-*
-* @return: 0 - success, -1 - fail.
-*/
-static int _add_icon_btns(SMainCatalog *data, Eina_List *list)
+bool CMainCatalogView::m_AddIconBtns(Eina_List *list)
 {
        Evas_Object *btn, *icon;
        const char *id, *name;
        struct settingitem *item;
        char buf[BUF_SIZE];
-       int i;
 
-       if (!data || !list || !data->base) {
+       if (!list) {
                _ERR("Invalid argument");
-               return -1;
+               return false;
        }
 
-       for (i = 0; i < data->main_item_count; i++) {
-               btn = utils_add_btn(data->base, MAINICONBTN_STYLE,
-                               NULL, EINA_FALSE);
+       for (int i = 0; i < m->main_item_count; i++) {
+               btn = utils_add_btn(m->base, MAINICONBTN_STYLE, NULL, EINA_FALSE);
                if (!btn) {
-                       _ERR("Add btn failed\n");
-                       return -1;
+                       _ERR("Add btn failed");
+                       return false;
                }
 
                item = (struct settingitem *) eina_list_nth(list, i);
                if (item) {
                        name = settingitem_get_display_name(item);
-                       elm_object_text_set(btn,
-                                       utils_get_translation_str(name));
+                       elm_object_text_set(btn, utils_get_translation_str(name));
                } else {
                        elm_object_text_set(btn, ICON_BUTTON_NO_DISP_NAME);
                }
 
-               evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN,
-                               _main_setting_key_pressed_cb, data);
-               evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_IN,
-                               _mainitem_btn_mouse_in_cb, data);
-               evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_OUT,
-                               _mainitem_btn_mouse_out_cb, data);
-               evas_object_smart_callback_add(btn, SIG_CLICKED,
-                               _mainitem_btn_clicked_cb, data);
+               Connect(btn, MAIN_ITEM_BTNS, TYPE_CLICKED | TYPE_KEY_DOWN); 
+               evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_IN, sm_CbMainItemBtnMouseIN, this);
+               //evas_object_smart_callback_add(btn, SIG_CLICKED, _mainitem_btn_clicked_cb, data);
+               //evas_object_event_callback_add(btn, EVAS_CALLBACK_KEY_DOWN, _main_setting_key_pressed_cb, data);
 
                icon = elm_layout_add(btn);
                if (icon) {
@@ -1494,24 +837,22 @@ static int _add_icon_btns(SMainCatalog *data, Eina_List *list)
                        if (!id) {
                                _ERR("get item name failed.");
                                evas_object_del(btn);
-                               return -1;
+                               return false;
                        }
 
-                       snprintf(buf, sizeof(buf), "%s/%s.edj",
-                                       EDJEDIR, PACKAGE);
+                       snprintf(buf, sizeof(buf), "%s/%s.edj", EDJEDIR, PACKAGE);
                        elm_layout_file_set(icon, buf, id);
-                       elm_object_part_content_set(btn,
-                                       MAINICONBTN_ICON_SWALLOW, icon);
+                       elm_object_part_content_set(btn, MAINICONBTN_ICON_SWALLOW, icon);
                        elm_object_signal_emit(icon, MAIN_BTN_NORMAL, MAIN_BTN);
-                       eina_array_push(data->main_icon_base, icon);
+                       eina_array_push(m->main_icon_base, icon);
                }
 
-               elm_box_pack_end(data->mainitem_box, btn);
+               elm_box_pack_end(m->mainitem_box, btn);
                evas_object_data_set(btn, SETTING_ID, settingitem_get_id(item));
-               eina_array_push(data->main_item_btn, btn);
+               eina_array_push(m->main_item_btn, btn);
        }
 
-       return 0;
+       return true;
 }
 
 /**
@@ -1537,14 +878,14 @@ void CMainCatalogView::m_DrawMainItems(void)
                _CHECK(m->main_item_count)
                _CHECK(m->main_item_btn = eina_array_new(1))
                _CHECK(m->main_icon_base = eina_array_new(1))
-               _CHECK(_add_icon_btns(m, list) != -1) 
+               _CHECK(m_AddIconBtns(list))
                _COMMAND {
                        elm_object_part_content_set(m->base, MAIN_VIEW_ICON_SWALLOW, m->mainitem_box);
 
                        if (!m->item_path) {
                                btn = (Evas_Object *)eina_array_data_get(m->main_item_btn, 0);
                                if (btn) {
-                                       if (_draw_subitems(m, (const char *) evas_object_data_get(btn, SETTING_ID)) != -1) {
+                                       if (m_DrawSubItems((const char *) evas_object_data_get(btn, SETTING_ID))) {
                                                icon = (Evas_Object *)eina_array_data_get(m->main_icon_base, 0);
                                                if (icon) {
                                                        elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, MAIN_BTN);
@@ -1786,7 +1127,7 @@ void CMainCatalogView::Show(void)
                                return;
 
                        if (!strncmp(name, path, ARRAY_SIZE)) {
-                               _draw_subitems(m, name);
+                               m_DrawSubItems(name);
 
                                icon = (Evas_Object *)eina_array_data_get(
                                                m->main_icon_base, i);
@@ -1998,6 +1339,187 @@ void CMainCatalogView::Active(void)
 }
 
 
+void CMainCatalogView::OnMouseClicked(int id, Evas_Object *obj)
+{
+       _DBG();
+       if (!obj) {
+               _ERR("Invalid argument");
+               return;
+       }
+
+       switch(id) {
+       case MAIN_ITEM_BTNS:
+               m_MoveFromMainitemToSubitem(obj);
+               break;
+       case SUB_ITEM_BTNS:
+               {
+                       Evas_Object *icon;
+                       m_SubItemClicked(obj);
+
+                       elm_object_signal_emit(m->focused_main_item_btn, MAINICONBTN_FOCUSED_ON_SUBITEM, MAINICONBTN_MAIN_ITEM_SOURCE);
+
+                       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);
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+
+void CMainCatalogView::OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev)
+{
+       if (!ev->keyname) {
+               _ERR("ev->keyname is NULL.");
+               return;
+       }
+       switch(id) {
+       case MAIN_ITEM_BTNS:
+               {
+                       Evas_Object *next, *icon;
+                       const char *name;
+
+                       if (!strcmp(ev->keyname, KEY_UP)) {
+                               icon = elm_object_part_content_get(obj, MAINICONBTN_ICON_SWALLOW);
+                               if (!icon) {
+                                       _ERR("part %s content get failed.", MAINICONBTN_ICON_SWALLOW);
+                                       return;
+                               }
+
+                               elm_object_signal_emit(icon, MAIN_BTN_UNFOCUSED, MAIN_BTN);
+
+                               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_UP);
+                               if (!next) {
+                                       _ERR("next object get failed.");
+                                       return;
+                               }
+
+                               m->focused_main_item_btn = next;
+
+                               icon = elm_object_part_content_get(next, MAINICONBTN_ICON_SWALLOW);
+                               if (!icon) {
+                                       _ERR("part %s content get failed.", MAINICONBTN_ICON_SWALLOW);
+                                       return;
+                               }
+
+                               elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, MAIN_BTN);
+
+                               _release_subitems(m);
+
+                               name =(const char *) evas_object_data_get(next, SETTING_ID);
+                               if (name)
+                                       m_DrawSubItems(name);
+                       }
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+
+void CMainCatalogView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+{
+       if (!ev->keyname) {
+               _ERR("ev->keyname is NULL.");
+               return;
+       }
+
+       switch(id) {
+       case MAIN_ITEM_BTNS:
+               {
+                       Evas_Object *next, *icon;
+                       const char *name;
+
+                       if (!strcmp(ev->keyname, KEY_DOWN)) {
+                               icon = elm_object_part_content_get(obj, MAINICONBTN_ICON_SWALLOW);
+                               if (!icon) {
+                                       _ERR("part %s content get failed.", MAINICONBTN_ICON_SWALLOW);
+                                       return;
+                               }
+
+                               elm_object_signal_emit(icon, MAIN_BTN_UNFOCUSED, MAIN_BTN);
+
+                               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_DOWN);
+                               if (!next) {
+                                       _ERR("next object get failed.");
+                                       return;
+                               }
+
+                               m->focused_main_item_btn = next;
+
+                               icon = elm_object_part_content_get(next, MAINICONBTN_ICON_SWALLOW);
+                               if (!icon) {
+                                       _ERR("part %s content get failed.", MAINICONBTN_ICON_SWALLOW);
+                                       return;
+                               }
+
+                               elm_object_signal_emit(icon, MAIN_BTN_FOCUSED, MAIN_BTN);
+
+                               _release_subitems(m);
+                               name =(const char *) evas_object_data_get(next, SETTING_ID);
+                               if (name)
+                                       m_DrawSubItems(name);
+                       } else if (!strcmp(ev->keyname, KEY_RIGHT)) {
+                               m_MoveFromMainitemToSubitem(obj);
+                       } else if (!strcmp(ev->keyname, KEY_EXIT) || !strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+                               app_efl_exit();
+                       }
+               }
+               break;
+
+       case SUB_ITEM_BTNS:
+               {
+                       Evas_Object *pb;
+                       Evas_Object *next;
+
+                       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);
+                               if (pb)
+                                       elm_object_signal_emit(pb, SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
+
+                               m_MoveFromSubitemToMainitem(obj);
+                       } else if (!strncmp(ev->keyname, KEY_DOWN, strlen(ev->keyname))) {
+                               pb = (Evas_Object *)evas_object_data_get(obj, PROGRESS_BAR_DATA);
+                               if (pb)
+                                       elm_object_signal_emit(pb, SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
+
+                               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_DOWN);
+                               if (!next) {
+                                       _ERR("focus next object get failed.");
+                                       return;
+                               }
+
+                               pb = (Evas_Object *)evas_object_data_get(next, PROGRESS_BAR_DATA);
+                               if (pb)
+                                       elm_object_signal_emit(pb, SIG_UNCTRL_PB_FOCUSED, SRC_PB_PROG);
+                       } else if (!strncmp(ev->keyname, KEY_UP, strlen(ev->keyname))) {
+                               pb = (Evas_Object *)evas_object_data_get(obj, PROGRESS_BAR_DATA);
+                               if (pb)
+                                       elm_object_signal_emit(pb, SIG_UNCTRL_PB_UNFOCUSED, SRC_PB_PROG);
+
+                               next = elm_object_focus_next_object_get(obj, ELM_FOCUS_UP);
+                               if (!next) {
+                                       _ERR("focus next object get failed.");
+                                       return;
+                               }
+
+                               pb = (Evas_Object *)evas_object_data_get(next, PROGRESS_BAR_DATA);
+                               if (pb)
+                                       elm_object_signal_emit(pb, SIG_UNCTRL_PB_FOCUSED, SRC_PB_PROG);
+                       } else if (!strncmp(ev->keyname, KEY_EXIT, strlen(ev->keyname))) {
+                               app_efl_exit();
+                       }
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+
 #if 0
 static struct setting_class _vclass = {
        VCLASS_TITLE_MAIN_VIEW,
index 7226f15..9f49e37 100755 (executable)
@@ -21,6 +21,7 @@
 #include "utils.h"
 #include "settings_provider.h"
 #include "settingviewmgr.h"
+#include <InputHandler.h>
 
 #define PWD_DATA_ID "change_passcode_data"
 #define CTXPOPUP_WIDTH 688