viewmgr: Add software back key support. 33/59833/3
authorWoochan Lee <wc0917.lee@samsung.com>
Fri, 19 Feb 2016 02:29:24 +0000 (11:29 +0900)
committerWoochan Lee <wc0917.lee@samsung.com>
Fri, 19 Feb 2016 02:52:38 +0000 (11:52 +0900)
Change-Id: I770e412f1c2a8e79ad3d77c0fa0562456f6ff832

src/efl/mobile/ui_basic_view.cpp
src/interface/ui_viewmgr_base.cpp
src/interface/ui_viewmgr_base.h

index cea4561..33b097f 100644 (file)
@@ -53,6 +53,30 @@ bool ui_basic_view::create_layout()
                elm_object_part_content_set(layout, "elm.swallow.content", CONVERT_TO_EO(this->get_content()));
        }
 
+       //Set soft back key, if it's needed
+       ui_viewmgr *viewmgr = dynamic_cast<ui_viewmgr *>(ui_view_base::get_viewmgr());
+       if (viewmgr->get_soft_back_key())
+       {
+               Evas_Object *prev_btn = elm_button_add(layout);
+
+               if (!prev_btn)
+               {
+                       LOGE("Failed to create a button = ui_basic_view(%p)", this);
+               }
+               else
+               {
+                       evas_object_smart_callback_add(prev_btn, "clicked", [](void *data, Evas_Object *obj, void *event_info) -> void
+                       {
+                               ui_viewmgr *viewmgr = static_cast<ui_viewmgr *>(data);
+                               viewmgr->pop_view();
+                       }, viewmgr);
+                       //FIXME: Its not a naviframe :)
+                       elm_object_style_set(prev_btn, "naviframe/back_btn/default");
+                       elm_object_part_content_set(layout, "elm.swallow.prev_btn", prev_btn);
+                       elm_object_signal_emit(layout, "elm,state,prev_btn,show", "elm");
+               }
+       }
+
        this->layout = layout;
 
        return true;
index 614c594..ac8e29c 100644 (file)
@@ -83,7 +83,9 @@ bool ui_viewmgr_base::pop_view_finished(ui_view_base *view)
 ui_viewmgr_base::ui_viewmgr_base()
                : event_block(true), activated(false)
 {
-       //TODO: Initialize ?
+       //FIXME: Read binary profile to decide whether support software back key or not.
+       //       software back key is needed in latest UX(Tizen_2.4)
+       this->soft_back_key = true;
 }
 
 ui_viewmgr_base::~ui_viewmgr_base()
index 4fdf9eb..d00d4ea 100644 (file)
@@ -43,6 +43,7 @@ private:
        list<ui_view_base*> view_list;     //view list.
        bool event_block;   //event block on view transition. This value should be configurable by system.
        bool activated;     //activated status of this viewmgr.
+       bool soft_back_key;  //If system doesn't support HW back key, then this value is true.
 
        /**
         *      @brief link a given view to this viewmgr.
@@ -232,6 +233,17 @@ public:
                return this->activated;
        }
 
+       /**
+        *      @brief Return the whether software back key need or not.
+        *
+        *  @return whether need software back key.
+        *
+        */
+       bool get_soft_back_key()
+       {
+               return this->soft_back_key;
+       }
+
 };
 
 #endif /* UI_WINDOW_BASE_H_ */