From 10584ff698ebcc38e6119350bad7a2aaea486afc Mon Sep 17 00:00:00 2001 From: Woochan Lee Date: Fri, 25 Mar 2016 18:03:45 +0900 Subject: [PATCH] Add view's member value(buttons, toolbar) and add method for value get. Change-Id: I32b47fae32614025a4d9122a84af0842b8c3f104 --- src/include/efl/mobile/ui_view.h | 18 ++++++++++++++++ src/lib/efl/mobile/ui_view.cpp | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/src/include/efl/mobile/ui_view.h b/src/include/efl/mobile/ui_view.h index ca854eb..0821e77 100644 --- a/src/include/efl/mobile/ui_view.h +++ b/src/include/efl/mobile/ui_view.h @@ -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; diff --git a/src/lib/efl/mobile/ui_view.cpp b/src/lib/efl/mobile/ui_view.cpp index cf274e6..0a20510 100644 --- a/src/lib/efl/mobile/ui_view.cpp +++ b/src/lib/efl/mobile/ui_view.cpp @@ -26,6 +26,30 @@ using namespace viewmgr; #define MY_VIEWMGR dynamic_cast(this->get_viewmgr()) #define MY_CONTROLLER dynamic_cast(this->get_controller()) +static void content_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + ui_view *view = static_cast(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(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(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(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; -- 2.7.4