Add view's member value(buttons, toolbar) and add method for value get. 10/63710/1
authorWoochan Lee <wc0917.lee@samsung.com>
Fri, 25 Mar 2016 09:03:45 +0000 (18:03 +0900)
committerWoochan Lee <wc0917.lee@samsung.com>
Fri, 25 Mar 2016 09:04:41 +0000 (18:04 +0900)
Change-Id: I32b47fae32614025a4d9122a84af0842b8c3f104

src/include/efl/mobile/ui_view.h
src/lib/efl/mobile/ui_view.cpp

index ca854eb..0821e77 100644 (file)
@@ -29,6 +29,9 @@ class ui_view: public ui_base_view
 
 private:
        Elm_Layout *layout;                //Base layout for view
+       Elm_Toolbar *toolbar;              //Toolbar
+       Elm_Button *title_left_btn;        //Title left button
+       Elm_Button *title_right_btn;       //Title right button
        ui_menu *menu;                     //Menu
 
        bool create_layout();
@@ -65,6 +68,21 @@ public:
                return this->layout;
        }
 
+       const Elm_Button *get_title_left_btn()
+       {
+               return this->title_left_btn;
+       }
+
+       const Elm_Button *get_title_right_btn()
+       {
+               return this->title_right_btn;
+       }
+
+       const Elm_Toolbar *get_toolbar()
+       {
+               return this->toolbar;
+       }
+
        const ui_menu *get_menu()
        {
                return this->menu;
index cf274e6..0a20510 100644 (file)
@@ -26,6 +26,30 @@ using namespace viewmgr;
 #define MY_VIEWMGR dynamic_cast<ui_viewmgr *>(this->get_viewmgr())
 #define MY_CONTROLLER dynamic_cast<ui_controller *>(this->get_controller())
 
+static void content_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       ui_view *view = static_cast<ui_view *>(data);
+       view->unset_content();
+}
+
+static void title_left_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       ui_view *view = static_cast<ui_view *>(data);
+       view->unset_title_left_btn();
+}
+
+static void title_right_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       ui_view *view = static_cast<ui_view *>(data);
+       view->unset_title_right_btn();
+}
+
+static void toolbar_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       ui_view *view = static_cast<ui_view *>(data);
+       view->unset_toolbar();
+}
+
 bool ui_view::destroy_layout()
 {
        if (!this->layout) return false;
@@ -133,6 +157,8 @@ bool ui_view::set_content(Evas_Object *content, const char *title)
                return false;
        }
 
+       evas_object_event_callback_add(this->layout, EVAS_CALLBACK_DEL, content_del_cb, this);
+
        return true;
 }
 
@@ -160,6 +186,11 @@ bool ui_view::set_title_left_btn(Elm_Button *title_left_btn)
                elm_object_part_content_set(this->layout, "title_left_btn", title_left_btn);
                if (title_left_btn) elm_object_signal_emit(this->layout, "elm,state,title_left_btn,show", "elm");
                else elm_object_signal_emit(this->layout, "elm,state,title_left_btn,hide", "elm");
+
+               this->title_left_btn = title_left_btn;
+
+               evas_object_event_callback_add(this->title_left_btn, EVAS_CALLBACK_DEL, title_left_btn_del_cb, this);
+
                return true;
        }
        LOGE("Layout is not exist!");
@@ -177,6 +208,11 @@ bool ui_view::set_title_right_btn(Elm_Button *title_right_btn)
                elm_object_part_content_set(this->layout, "title_right_btn", title_right_btn);
                if (title_right_btn) elm_object_signal_emit(this->layout, "elm,state,title_right_btn,show", "elm");
                else elm_object_signal_emit(this->layout, "elm,state,title_right_btn,hide", "elm");
+
+               this->title_right_btn = title_right_btn;
+
+               evas_object_event_callback_add(this->title_right_btn, EVAS_CALLBACK_DEL, title_right_btn_del_cb, this);
+
                return true;
        }
        LOGE("Layout is not exist!");
@@ -260,6 +296,11 @@ bool ui_view::set_toolbar(Elm_Toolbar *toolbar)
        if (toolbar) elm_object_signal_emit(layout, "elm,state,toolbar,show", "elm");
        else elm_object_signal_emit(layout, "elm,state,toolbar,hide", "elm");
 
+       this->toolbar= toolbar;
+
+       evas_object_event_callback_add(this->toolbar, EVAS_CALLBACK_DEL, toolbar_del_cb, this);
+
+
        return true;
 }
 
@@ -305,6 +346,7 @@ Evas_Object *ui_view::unset_content()
        if (!this->get_base()) return pcontent;
 
        elm_object_part_content_unset(this->get_base(), "elm.swallow.content");
+       evas_object_event_callback_del(pcontent, EVAS_CALLBACK_DEL, content_del_cb);
        evas_object_hide(pcontent);
 
        return pcontent;
@@ -319,6 +361,7 @@ Elm_Button *ui_view::unset_title_left_btn()
        title_left_btn = elm_object_part_content_unset(this->get_base(), "title_left_btn");
        if (title_left_btn)
                elm_object_signal_emit(this->get_base(), "elm,state,title_left_btn,hide", "elm");
+       evas_object_event_callback_del(title_left_btn, EVAS_CALLBACK_DEL, title_left_btn_del_cb);
        evas_object_hide(title_left_btn);
 
        return title_left_btn;
@@ -333,6 +376,7 @@ Elm_Button *ui_view::unset_title_right_btn()
        title_right_btn = elm_object_part_content_unset(this->get_base(), "title_right_btn");
        if (title_right_btn)
                elm_object_signal_emit(this->get_base(), "elm,state,title_right_btn,hide", "elm");
+       evas_object_event_callback_del(title_right_btn, EVAS_CALLBACK_DEL, title_right_btn_del_cb);
        evas_object_hide(title_right_btn);
 
        return title_right_btn;
@@ -347,6 +391,7 @@ Elm_Toolbar *ui_view::unset_toolbar()
        toolbar = elm_object_part_content_unset(this->get_base(), "toolbar");
        if (toolbar)
                elm_object_signal_emit(this->get_base(), "elm,state,toolbar,hide", "elm");
+       evas_object_event_callback_del(toolbar, EVAS_CALLBACK_DEL, toolbar_del_cb);
        evas_object_hide(toolbar);
 
        return toolbar;