intensive code change. 03/64203/3
authorHermet Park <hermet@hermet.pe.kr>
Wed, 30 Mar 2016 11:36:41 +0000 (20:36 +0900)
committerHermet Park <hermet@hermet.pe.kr>
Wed, 30 Mar 2016 15:04:10 +0000 (00:04 +0900)
Still viewmgr is too unstable.
We need to implement bodies intensively.
This means this commit includes a lot of improvements at once.

Change-Id: Id95d05ea9db2c134d7cfbb11bfa0221a5c9feeaf

33 files changed:
src/examples/efl/page1.h
src/examples/efl/page10.h
src/examples/efl/page11.h
src/examples/efl/page12.h
src/examples/efl/page13.h
src/examples/efl/page14.h
src/examples/efl/page2.h
src/examples/efl/page3.h
src/examples/efl/page4.h
src/examples/efl/page5.h
src/examples/efl/page6.h
src/examples/efl/page7.h
src/examples/efl/page9.h
src/include/efl/mobile/ui_key_listener.h
src/include/efl/mobile/ui_menu.h
src/include/efl/mobile/ui_view.h
src/include/efl/mobile/ui_viewmgr.h
src/include/efl/ui_base_key_listener.h
src/include/efl/ui_base_popup.h
src/include/efl/ui_base_view.h
src/include/efl/ui_base_viewmanager.h [new file with mode: 0644]
src/include/efl/ui_base_viewmgr.h
src/include/efl/ui_viewmanager_base.h [deleted file]
src/include/interface/ui_iface_viewmanager.h [new file with mode: 0644]
src/include/interface/ui_viewmanager_interface.h [deleted file]
src/lib/efl/mobile/ui_key_listener.cpp
src/lib/efl/mobile/ui_view.cpp
src/lib/efl/ui_base_key_listener.cpp
src/lib/efl/ui_base_popup.cpp
src/lib/efl/ui_base_view.cpp
src/lib/efl/ui_base_viewmgr.cpp
src/lib/interface/ui_iface_view.cpp
src/lib/interface/ui_iface_viewmgr.cpp

index 4263a41655e78e815c553ee5f68b6e907fd416d2..4fb6128b77b3c0a90d667c44d0c863cd8ff13e1e 100644 (file)
@@ -23,6 +23,8 @@ class page1: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Basic View",
                                //Prev Button Callback
index fcc12c2f920e9318f3cccdaafd1365393d063094..1bb2f83eb2a9ac14fd530264b32d09459524dc72 100644 (file)
@@ -23,11 +23,14 @@ class page10: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
                this->on_rotate(this->get_degree());
        }
 
        void on_rotate(int degree)
        {
+               ui_view::on_rotate(degree);
+
                //Portrait
                if (this->get_degree() == 0 || this->get_degree() == 180)
                {
index 676fd0dab5e876be04953950603b8818873fd258..313d106d5037c2caeec70dbc2e28e398aacfb0ed 100644 (file)
@@ -32,6 +32,8 @@ class page11: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Menu Popup",
                                //Prev Button Callback
@@ -50,6 +52,8 @@ protected:
 
        void on_menu(ui_menu *menu)
        {
+               ui_view::on_menu(menu);
+
                Elm_Ctxpopup *ctxpopup = elm_ctxpopup_add(menu->get_base());
                elm_ctxpopup_item_append(ctxpopup, "Phone calls", NULL, ctxpopup_item_select_cb, this);
                elm_ctxpopup_item_append(ctxpopup, "Favorites", NULL, ctxpopup_item_select_cb, this);
index 51cee2351a06b6ebbcb16a7baafeeb77e611d8d5..33fbc759079a67a6743858b657cbd03fa01eb46d 100644 (file)
@@ -34,6 +34,8 @@ class page12: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Popup",
                                //Prev Button Callback
index 9fab45034e5185c5a0b591ac6ccae6b3e876e31f..8fbb66565ae8dba17345ceb9bb6f54a57e584883 100644 (file)
@@ -23,6 +23,8 @@ class page13: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Fade Transition",
                                //Prev Button Callback
index f875de46a2323899e2146a8c189c3c59255e6c34..c67a4cb29c9ef5a3ea66ab4d70f1d851bd47cd5f 100644 (file)
@@ -23,6 +23,8 @@ class page14: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>None Transition",
                                //Prev Button Callback
index ba3c38dfd198d3ebf6868a32d89a3057c1fd330a..e04a90a12d973aa09da979583c09dbe0e7c27fd9 100644 (file)
@@ -23,6 +23,8 @@ class page2: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Title Buttons",
                //Prev Button Callback
index 99762d938bf3036068bc663de391292eb397d1e5..d4a460e8338ccf784305446035da09ec382fdce7 100644 (file)
@@ -23,6 +23,8 @@ class page3: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Subtitle",
                                //Prev Button Callback
index 153fc2033e77c186a8de7af06cf1dadcb4fa299b..d7463927b706ebc780b5eef1ce4abc5cbdf31a22 100644 (file)
@@ -24,6 +24,8 @@ class page4: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Title Badge",
                                //Prev Button Callback
index 1c19d06d261642bd8aabd538e1d59f29dc09657a..43ffd28b4632da89e2eadca9fa285e5916f375dd 100644 (file)
@@ -23,6 +23,8 @@ class page5: public ui_base_view
 protected:
        void on_load()
        {
+               ui_base_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Full View",
                                //Prev Button Callback
index 540c277d274052e36a0d91369ce5e5905b982506..d37c8c4c8014232b9fc4043e47a2d483e50b279f 100644 (file)
@@ -22,6 +22,8 @@ class page6: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Toolbar",
                                //Prev Button Callback
index debbfa370ee3e87f33dc2437fe2ab8f8f84c3a7c..6bca5c1301da3764ca30138b98025694974dc3af 100644 (file)
  */
 class page7: public ui_view
 {
-public:
-       page7() : ui_view("page7")
+protected:
+       void on_load()
        {
+               ui_view::on_load();
+
                //Create a main content.
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Navigationbar",
                                //Prev Button Callback
@@ -42,6 +44,8 @@ public:
                Elm_Toolbar *toolbar = create_toolbar(this->get_base(), "navigationbar");
                this->set_toolbar(toolbar);
        }
+public:
+       page7() : ui_view("page7") {}
        ~page7() {}
 };
 
index 6e4059cb8609483443f42e60762654d825831148..2a8d63b71066c13c41d4f0df5a6b885bae79de72 100644 (file)
@@ -24,6 +24,8 @@ class page9: public ui_view
 protected:
        void on_load()
        {
+               ui_view::on_load();
+
                //FIXME: Change below code to more convenient and clear way.
                if (this->get_degree() == 90 || this->get_degree() == 270)
                        this->on_landscape();
@@ -33,6 +35,8 @@ protected:
 
        void on_portrait()
        {
+               ui_view::on_portrait();
+
                Evas_Object *content = create_content(this->get_base(), "ViewMgr Demo<br>Portrait/Landscape",
                        //Prev Button Callback
                                [](void *data, Evas_Object *obj, void *event_info) -> void
@@ -50,6 +54,8 @@ protected:
 
        void on_landscape()
        {
+               ui_view::on_landscape();
+
                Evas_Object *content = create_landscape_content(this->get_base(), "ViewMgr Demo<br>Portrait/Landscape",
                                //Prev Button Callback
                                [](void *data, Evas_Object *obj, void *event_info) -> void
index 927007ec019e6288ad7168e5589abe04f17117bd..9d96066475a85f002ebd9fe5a746e0fd14fc35d4 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef UI_KEY_HANDLER_H
 #define UI_KEY_HANDLER_H
 
-#include "../ui_viewmanager_base.h"
+#include "../ui_base_viewmanager.h"
 
 namespace efl_viewmgr
 {
index de0d942a2b336a712072d5ab1e96294f4cb071a7..ee01f46d06476d90227029bcd3b7fd9cd42153ac 100644 (file)
@@ -17,8 +17,8 @@
 #ifndef UI_MENU_H
 #define UI_MENU_H
 
-#include "../ui_viewmanager_base.h"
-#include "../../interface/ui_viewmanager_interface.h"
+#include "../../interface/ui_iface_viewmanager.h"
+#include "../ui_base_viewmanager.h"
 
 namespace efl_viewmgr
 {
index 1df362cc5e53c12363265ffe5fe492fd53da793c..bdc689975232c3c340404afb31598da4ee8b783e 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef UI_VIEW
 #define UI_VIEW
 
-#include "../ui_viewmanager_base.h"
+#include "../ui_base_viewmanager.h"
 
 namespace efl_viewmgr
 {
@@ -43,7 +43,7 @@ private:
 protected:
        virtual void on_load();
        virtual void on_unload();
-       bool on_menu_pre();
+       ui_menu *on_menu_pre();
        void on_menu_post();
        virtual void on_menu(ui_menu *menu);
        virtual void unload_content();
index bb9d3db9869193a19d3e4cce30ae4d01b55ab368..41e04d4beb924765b9b2ec487eb84868a2e78daf 100644 (file)
@@ -18,7 +18,7 @@
 #define UI_VIEWMGR_H
 
 #include <Elementary.h>
-#include "../ui_viewmanager_base.h"
+#include "../ui_base_viewmanager.h"
 
 namespace efl_viewmgr
 {
index 3efd5b09f59a4724cde381598a869ad17c3207dc..1ddd81cb3ee25bbe45df562e9d81208e2f5bccf4 100644 (file)
@@ -18,7 +18,7 @@
 #define UI_BASE_KEY_LISTENER_H
 
 #include <Elementary.h>
-#include "../interface/ui_viewmanager_interface.h"
+#include "../interface/ui_iface_viewmanager.h"
 
 namespace efl_viewmgr
 {
index a6f690a83e441cea0fffc8d22f09f57ea9a14ba7..63d5d970136de654cdfb9cf4c1ead8dbe387e4e5 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef UI_BASE_POPUP_H
 #define UI_BASE_POPUP_H
 
-#include "../interface/ui_viewmanager_interface.h"
+#include "../interface/ui_iface_viewmanager.h"
 
 namespace efl_viewmgr
 {
index 1cbb01d04c4c6922689828a6cd3a40380df58898..7b6cadbddb39b697c2c1c739471188182d758327 100644 (file)
@@ -18,7 +18,7 @@
 #define UI_BASE_VIEW_H
 
 #include <Elementary.h>
-#include "../interface/ui_viewmanager_interface.h"
+#include "../interface/ui_iface_viewmanager.h"
 
 #define CONVERT_TO_EO(T) static_cast<Evas_Object *>((T))
 #define CONVERT_TO_T(EO) static_cast<T>((EO))
diff --git a/src/include/efl/ui_base_viewmanager.h b/src/include/efl/ui_base_viewmanager.h
new file mode 100644 (file)
index 0000000..8a5a717
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *               http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "UI_VIEWMGR"
+
+#include "ui_base_singleton.h"
+#include "ui_base_viewmgr.h"
+#include "ui_base_view.h"
+#include "ui_base_key_listener.h"
+#include "ui_base_popup.h"
+
+
+#define UI_BASE_VIEWMGR efl_viewmgr::ui_base_viewmgr::get_instance()
index 2c8b96076b1c41aad490705d03e4f788c28a8ebe..f80929c956e59498705070e73415b189e0f29634 100644 (file)
@@ -18,7 +18,7 @@
 #define UI_BASE_VIEWMGR_H
 
 #include <Elementary.h>
-#include "../interface/ui_viewmanager_interface.h"
+#include "../interface/ui_iface_viewmanager.h"
 #include "ui_base_key_listener.h"
 #include <map>
 
diff --git a/src/include/efl/ui_viewmanager_base.h b/src/include/efl/ui_viewmanager_base.h
deleted file mode 100644 (file)
index 8a5a717..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *               http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-#include <dlog.h>
-
-#ifdef  LOG_TAG
-#undef  LOG_TAG
-#endif
-#define LOG_TAG "UI_VIEWMGR"
-
-#include "ui_base_singleton.h"
-#include "ui_base_viewmgr.h"
-#include "ui_base_view.h"
-#include "ui_base_key_listener.h"
-#include "ui_base_popup.h"
-
-
-#define UI_BASE_VIEWMGR efl_viewmgr::ui_base_viewmgr::get_instance()
diff --git a/src/include/interface/ui_iface_viewmanager.h b/src/include/interface/ui_iface_viewmanager.h
new file mode 100644 (file)
index 0000000..6001341
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *               http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+#ifndef UI_VIEWMANAGER_INTERFACE_H_
+#define UI_VIEWMANAGER_INTERFACE_H_
+
+#include <app.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "UI_VIEWMGR"
+
+enum ui_view_indicator
+{
+       UI_VIEW_INDICATOR_DEFAULT = 0,
+       UI_VIEW_INDICATOR_OPTIMAL,
+       UI_VIEW_INDICATOR_OVERLAP,
+       UI_VIEW_INDICATOR_HIDE,
+       UI_VIEW_INDICATOR_SHOW,
+       UI_VIEW_INDICATOR_LAST
+};
+
+#include "ui_iface_rotatable.h"
+#include "ui_iface_viewmgr.h"
+#include "ui_iface_view.h"
+
+#endif /* UI_VIEWMANAGER_INTERFACE_H */
diff --git a/src/include/interface/ui_viewmanager_interface.h b/src/include/interface/ui_viewmanager_interface.h
deleted file mode 100644 (file)
index 6001341..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *               http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-#ifndef UI_VIEWMANAGER_INTERFACE_H_
-#define UI_VIEWMANAGER_INTERFACE_H_
-
-#include <app.h>
-#include <dlog.h>
-
-#ifdef  LOG_TAG
-#undef  LOG_TAG
-#endif
-#define LOG_TAG "UI_VIEWMGR"
-
-enum ui_view_indicator
-{
-       UI_VIEW_INDICATOR_DEFAULT = 0,
-       UI_VIEW_INDICATOR_OPTIMAL,
-       UI_VIEW_INDICATOR_OVERLAP,
-       UI_VIEW_INDICATOR_HIDE,
-       UI_VIEW_INDICATOR_SHOW,
-       UI_VIEW_INDICATOR_LAST
-};
-
-#include "ui_iface_rotatable.h"
-#include "ui_iface_viewmgr.h"
-#include "ui_iface_view.h"
-
-#endif /* UI_VIEWMANAGER_INTERFACE_H */
index dcad91d4b87571145e4004839100f06a5a166ab4..057cc2d9fe946dec3091d205bc13fa37d654a6f7 100644 (file)
@@ -31,8 +31,9 @@ void ui_key_listener::extend_event_proc(ui_base_view *view, Evas_Event_Key_Down
 {
        if (strcmp(ev->keyname, KEY_MENU) && strcmp(ev->keyname, KEY_MENU2)) return;
        ui_view *v = dynamic_cast<ui_view *>(view);
-       if (!v->on_menu_pre()) return;
-       v->on_menu((ui_menu*)(v->get_menu()));
+       ui_menu *menu = v->on_menu_pre();
+       if (!menu) return;
+       v->on_menu(menu);
        v->on_menu_post();
 }
 
index d6c62886357aa8a0445a28518a79e824bb446286..a8cebd8efe65890355dd1f9802376eb766704984 100644 (file)
 using namespace efl_viewmgr;
 using namespace viewmgr;
 
-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();
-}
+#define LAYOUT_VALIDATE() if (!layout) \
+                                                       { \
+                                                               LOGE("Layout is invalid! ui_view(%p)", this); \
+                                                               return false; \
+                                                       }
 
 static void title_left_btn_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
@@ -61,12 +61,7 @@ bool ui_view::create_layout()
        if (this->layout) return false;
 
        Elm_Layout *layout = elm_layout_add(this->get_parent());
-
-       if (!layout)
-       {
-               LOGE("Failed to create a layout = ui_view(%p)", this);
-               return false;
-       }
+       LAYOUT_VALIDATE();
 
        if (!elm_layout_file_set(layout, EDJ_PATH, GROUP))
        {
@@ -121,152 +116,144 @@ void ui_view::on_back()
                        return;
                }
        }
-       ui_base_view ::on_back();
+       ui_base_view::on_back();
 }
 
 ui_view::ui_view(const char *name)
-               : ui_base_view(name), layout(NULL), menu(NULL)
+               : ui_base_view(name), layout(NULL), toolbar(NULL), title_left_btn(NULL), title_right_btn(NULL), menu(NULL)
 {
 }
 
 ui_view::~ui_view()
 {
-       if (menu) delete(this->menu);
+       if (menu) delete (this->menu);
        destroy_layout();
 }
 
 void ui_view::on_load()
 {
-       if (!this->layout) this->create_layout();
        ui_base_view::on_load();
+
+       Elm_Layout *layout = this->get_base();
+       evas_object_show(layout);
 }
 
 void ui_view::on_unload()
 {
        ui_base_view::on_unload();
+
+       Elm_Layout *layout = this->get_base();
+       evas_object_hide(layout);
 }
 
 bool ui_view::set_content(Evas_Object *content, const char *title)
 {
        ui_base_view::set_content(content);
 
-       if (this->layout)
+       Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
+
+       elm_object_part_content_set(layout, "elm.swallow.content", content);
+       if (content)
        {
-               elm_object_part_content_unset(this->layout, "elm.swallow.content");
-               elm_object_part_content_set(this->layout, "elm.swallow.content", content);
-               elm_object_part_text_set(this->layout, "elm.text.title", title);
+               elm_object_signal_emit(layout, "elm.state,elm.swallow.content,show", "elm");
        }
        else
        {
-               LOGE("Layout is not exist!");
-               return false;
+               elm_object_signal_emit(layout, "elm.state,elm.swallow.content,hide", "elm");
        }
 
-       evas_object_event_callback_add(this->layout, EVAS_CALLBACK_DEL, content_del_cb, this);
+       this->set_title(title);
 
        return true;
 }
 
 bool ui_view::set_subtitle(const char *text)
 {
-       if (this->layout)
-       {
-               elm_object_part_text_set(this->layout, "elm.text.subtitle", text);
-               if (text) elm_object_signal_emit(this->layout, "elm,state,subtitle,show", "elm");
-               else elm_object_signal_emit(this->layout, "elm,state,subtitle,hide", "elm");
-               return true;
-       }
-       LOGE("Layout is not exist!");
-       return false;
+       Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
+
+       elm_object_part_text_set(layout, "elm.text.subtitle", text);
+       if (text) elm_object_signal_emit(layout, "elm,state,subtitle,show", "elm");
+       else elm_object_signal_emit(layout, "elm,state,subtitle,hide", "elm");
+
+       return true;
 }
 
 bool ui_view::set_title_left_btn(Elm_Button *title_left_btn)
 {
-       if (this->layout)
-       {
-               if (title_left_btn)
-               {
-                       elm_object_style_set(title_left_btn, "tizen_view/title_left");
-               }
-               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");
+       Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
 
-               this->title_left_btn = title_left_btn;
+       //FIXME: inside of the unset_title_left_btn, it will send a title_left_btn,hide signal.
+       //But right after it needs to send a show signal again if new title_left_btn is valid.
+       //We don't need to send a hide signal in this case.
+       Elm_Button *pbtn = this->unset_title_left_btn();
+       evas_object_del(pbtn);
 
-               evas_object_event_callback_add(this->title_left_btn, EVAS_CALLBACK_DEL, title_left_btn_del_cb, this);
+       this->title_left_btn = title_left_btn;
+       if (!title_left_btn) return true;
 
-               return true;
-       }
-       LOGE("Layout is not exist!");
-       return false;
+       elm_object_style_set(title_left_btn, "tizen_view/title_left");
+       elm_object_part_content_set(layout, "title_left_btn", title_left_btn);
+       elm_object_signal_emit(layout, "elm,state,title_left_btn,show", "elm");
+       evas_object_event_callback_add(title_left_btn, EVAS_CALLBACK_DEL, title_left_btn_del_cb, this);
+
+       return true;
 }
 
 bool ui_view::set_title_right_btn(Elm_Button *title_right_btn)
 {
-       if (this->layout)
-       {
-               if (title_right_btn)
-               {
-                       elm_object_style_set(title_right_btn, "tizen_view/title_right");
-               }
-               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");
+       Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
 
-               this->title_right_btn = title_right_btn;
+       //FIXME: inside of the unset_title_right_btn, it will send a title_right_btn,hide signal.
+       //But right after it needs to send a show signal again if new title_right_btn is valid.
+       //We don't need to send a hide signal in this case.
+       Elm_Button *pbtn = this->unset_title_right_btn();
+       evas_object_del(pbtn);
 
-               evas_object_event_callback_add(this->title_right_btn, EVAS_CALLBACK_DEL, title_right_btn_del_cb, this);
+       this->title_right_btn = title_right_btn;
+       if (!title_right_btn) return true;
 
-               return true;
-       }
-       LOGE("Layout is not exist!");
-       return false;
+       elm_object_style_set(title_right_btn, "tizen_view/title_right");
+       elm_object_part_content_set(layout, "title_right_btn", title_right_btn);
+       elm_object_signal_emit(layout, "elm,state,title_right_btn,show", "elm");
+       evas_object_event_callback_add(title_right_btn, EVAS_CALLBACK_DEL, title_right_btn_del_cb, this);
+
+       return true;
 }
 
 bool ui_view::set_title_badge(const char *text)
 {
-       if (this->layout)
-       {
-               elm_object_part_text_set(this->layout, "title_badge", text);
-               if (text) elm_object_signal_emit(this->layout, "elm,state,title_badge,show", "elm");
-               else elm_object_signal_emit(this->layout, "elm,state,title_badge,hide", "elm");
-               return true;
-       }
-       LOGE("Layout is not exist!");
-       return false;
+       Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
+
+       elm_object_part_text_set(layout, "title_badge", text);
+       if (text) elm_object_signal_emit(layout, "elm,state,title_badge,show", "elm");
+       else elm_object_signal_emit(layout, "elm,state,title_badge,hide", "elm");
+
+       return true;
 }
 
 bool ui_view::set_title(const char *text)
 {
-       if (this->layout)
-       {
-               elm_object_part_text_set(this->layout, "elm.text.title", text);
-               if (text) elm_object_signal_emit(this->layout, "elm,state,title,show", "elm");
-               else elm_object_signal_emit(this->layout, "elm,state,title,hide", "elm");
-               return true;
-       }
-       LOGE("Layout is not exist!");
-       return false;
+       Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
+
+       elm_object_part_text_set(layout, "elm.text.title", text);
+       if (text) elm_object_signal_emit(layout, "elm,state,title,show", "elm");
+       else elm_object_signal_emit(layout, "elm,state,title,hide", "elm");
+
+       return true;
 }
 
-bool ui_view::set_content(Evas_Object *content, const char *title, const char *subtitle, Elm_Button *title_left_btn,
-        Elm_Button *title_right_btn)
+bool ui_view::set_content(Evas_Object *content, const char *title, const char *subtitle, Elm_Button *title_left_btn, Elm_Button *title_right_btn)
 {
-       if (!this->set_content(content)) return false;
-
-       if (this->layout)
-       {
-               this->set_title(title);
-               this->set_subtitle(subtitle);
-               this->set_title_left_btn(title_left_btn);
-               this->set_title_right_btn(title_right_btn);
-       }
-       else
-       {
-               LOGE("Layout is not exist!");
-               return false;
-       }
+       if (!this->set_content(content, title)) return false;
+       if (!this->set_subtitle(subtitle)) return false;
+       if (!this->set_title_left_btn(title_left_btn)) return false;
+       if (!this->set_title_right_btn(title_right_btn)) return false;
 
        return true;
 }
@@ -274,18 +261,22 @@ bool ui_view::set_content(Evas_Object *content, const char *title, const char *s
 bool ui_view::set_toolbar(Elm_Toolbar *toolbar)
 {
        Elm_Layout *layout = this->get_base();
+       LAYOUT_VALIDATE();
 
-       //FIXME: Keep this toolbar inside of this view then set up when layout is created after.
-       if (!layout)
-       {
-               LOGE("Layout is not exist!");
-               return false;
-       }
+       //FIXME: inside of the unset_toolbar, it will send a toolbar,hide signal.
+       //But right after it needs to send a show signal again if new toolbar is valid.
+       //We don't need to send a hide signal in this case.
+       Elm_Toolbar *ptoolbar = this->unset_toolbar();
+       evas_object_del(ptoolbar);
+
+       this->toolbar = toolbar;
+       if (!toolbar) return true;
 
+       //FIXME: eeeek. check style?? :(
        if (!strcmp(elm_object_style_get(toolbar), "navigationbar"))
        {
-               if (elm_toolbar_shrink_mode_get(toolbar) != ELM_TOOLBAR_SHRINK_SCROLL) elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_SCROLL);
-               elm_toolbar_align_set(toolbar, 0.0);
+               elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_SCROLL);
+               elm_toolbar_align_set(toolbar, 0);
        }
        else
        {
@@ -298,35 +289,31 @@ bool ui_view::set_toolbar(Elm_Toolbar *toolbar)
        elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
 
        elm_object_part_content_set(layout, "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);
-
+       elm_object_signal_emit(layout, "elm,state,toolbar,show", "elm");
+       evas_object_event_callback_add(toolbar, EVAS_CALLBACK_DEL, toolbar_del_cb, this);
 
        return true;
 }
 
 void ui_view::unload_content()
 {
-       ui_base_view::set_content(NULL);
-       this->destroy_layout();
+       ui_base_view::set_content (NULL);
 }
 
-bool ui_view::on_menu_pre()
+ui_menu *ui_view::on_menu_pre()
 {
-       if (this->menu && this->menu->is_activated())
-       {
-               this->menu->deactivate();
-               return false;
-       }
        if (!this->menu)
        {
                this->menu = new ui_menu(this);
        }
-       return true;
+
+       if (this->menu->is_activated())
+       {
+               this->menu->deactivate();
+               return NULL;
+       }
+
+       return this->menu;
 }
 
 void ui_view::on_menu(ui_menu *menu)
@@ -335,10 +322,8 @@ void ui_view::on_menu(ui_menu *menu)
 
 void ui_view::on_menu_post()
 {
-       if (this->menu && this->menu->get_content())
-       {
-               this->menu->activate();
-       }
+       if (!this->menu) return;
+       this->menu->activate();
 }
 
 void ui_view::set_event_block(bool block)
@@ -350,90 +335,115 @@ void ui_view::set_event_block(bool block)
 Evas_Object *ui_view::unset_content()
 {
        Evas_Object *pcontent = ui_base_view::unset_content();
+       if (!pcontent) return NULL;
 
-       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);
+       Elm_Layout *layout = this->get_base();
+       if (!layout)
+       {
+               LOGE("Layout is invalid! ui_view(%p)", this);
+               return pcontent;
+       }
+       elm_object_part_content_unset(layout, "elm.swallow.content");
+       elm_object_signal_emit(layout, "elm.state,elm.swallow.content,hide", "elm");
 
        return pcontent;
 }
 
 Elm_Button *ui_view::unset_title_left_btn()
 {
-       Elm_Button *title_left_btn;
+       Elm_Button *btn = this->title_left_btn;
+       if (!btn) return NULL;
 
-       if (!this->get_base()) return NULL;
+       Elm_Layout *layout = this->get_base();
+       if (!layout)
+       {
+               LOGE("Layout is invalid! ui_view(%p)", this);
+               return 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);
+       elm_object_part_content_unset(layout, "title_left_btn");
+       elm_object_signal_emit(layout, "elm,state,title_left_btn,hide", "elm");
+       evas_object_event_callback_del(btn, EVAS_CALLBACK_DEL, title_left_btn_del_cb);
+       evas_object_hide(btn);
+       this->title_left_btn = NULL;
 
-       return title_left_btn;
+       return btn;
 }
 
 Elm_Button *ui_view::unset_title_right_btn()
 {
-       Elm_Button *title_right_btn;
+       Elm_Button *btn = this->title_right_btn;
+       if (!btn) return NULL;
 
-       if (!this->get_base()) return NULL;
+       Elm_Layout *layout = this->get_base();
+       if (!layout)
+       {
+               LOGE("Layout is invalid! ui_view(%p)", this);
+               return 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);
+       elm_object_part_content_unset(layout, "title_right_btn");
+       elm_object_signal_emit(layout, "elm,state,title_right_btn,hide", "elm");
+       evas_object_event_callback_del(btn, EVAS_CALLBACK_DEL, title_right_btn_del_cb);
+       evas_object_hide(btn);
+       this->title_right_btn = NULL;
 
-       return title_right_btn;
+       return btn;
 }
 
 Elm_Toolbar *ui_view::unset_toolbar()
 {
-       Elm_Toolbar *toolbar;
+       Elm_Toolbar *toolbar = this->toolbar;
+       if (!toolbar) return NULL;
 
-       if (!this->get_base()) return NULL;
+       Elm_Layout *layout = this->get_base();
+       if (!layout)
+       {
+               LOGE("Layout is invalid! ui_view(%p)", this);
+               return 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");
+       elm_object_part_content_unset(layout, "toolbar");
+       elm_object_signal_emit(layout, "elm,state,toolbar,hide", "elm");
        evas_object_event_callback_del(toolbar, EVAS_CALLBACK_DEL, toolbar_del_cb);
        evas_object_hide(toolbar);
+       this->toolbar = NULL;
 
        return toolbar;
 }
 
 void ui_view::on_rotate(int degree)
 {
+       //FIXME: see how to handle on_menu()
        ui_base_view::on_rotate(degree);
-       if (this->menu && this->menu->is_activated())
-       {
-               this->menu->on_rotate(degree);
-       }
+       if (!this->menu) return;
+       if (!this->menu->is_activated()) return;
+       this->menu->on_rotate(degree);
 }
 
 void ui_view::on_portrait()
 {
+       //FIXME: see how to handle on_menu()
        ui_base_view::on_portrait();
-       if (this->menu && this->menu->is_activated())
-       {
-               this->menu->on_portrait();
-       }
+       if (!this->menu) return;
+       if (!this->menu->is_activated()) return;
+       this->menu->on_portrait();
 }
 
 void ui_view::on_landscape()
 {
+       //FIXME: see how to handle on_menu()
        ui_base_view::on_landscape();
-       if (this->menu && this->menu->is_activated())
-       {
-               this->menu->on_landscape();
-       }
+       if (!this->menu) return;
+       if (!this->menu->is_activated()) return;
+       this->menu->on_landscape();
 }
 
 Evas_Object *ui_view::get_base()
 {
-       if (!this->layout) this->create_layout();
+       if (!this->layout)
+       {
+               this->create_layout();
+       }
        return this->layout;
 }
index 3a2bd92d3f2126ffea0226a636c6e4c4a089a872..68fe9589398431ed2b34a4e92fbf28142aecb989 100644 (file)
@@ -14,7 +14,7 @@
  *  limitations under the License.
  *
  */
-#include "../../include/efl/ui_viewmanager_base.h"
+#include "../../include/efl/ui_base_viewmanager.h"
 
 using namespace efl_viewmgr;
 using namespace viewmgr;
index 0a56bb88c3c929c5c4f1e88d57e1b3601f647e61..fc4db65f4b08ee91bbb0a274ef3bcb07ed90a402 100644 (file)
@@ -14,7 +14,7 @@
  *  limitations under the License.
  *
  */
-#include "../../include/efl/ui_viewmanager_base.h"
+#include "../../include/efl/ui_base_viewmanager.h"
 
 using namespace efl_viewmgr;
 
index 3cbc6950554cc2d230f80d9ca99ea98af66b1af8..e8d70ece3062167b42bef6cbe1d6b5b3f752def2 100644 (file)
  *  limitations under the License.
  *
  */
-#include "../../include/efl/ui_viewmanager_base.h"
+#include "../../include/efl/ui_base_viewmanager.h"
 
 using namespace efl_viewmgr;
 using namespace viewmgr;
 
 typedef list<ui_base_popup*>::reverse_iterator popup_ritr;
 
+static void content_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       ui_base_view *view = static_cast<ui_base_view *>(data);
+       view->unset_content();
+}
+
 void ui_base_view::connect_popup(ui_base_popup *popup)
 {
        this->popup_list.push_back(popup);
@@ -42,17 +48,30 @@ ui_base_view::~ui_base_view()
 
 bool ui_base_view::set_content(Evas_Object *content)
 {
-       T pcontent = this->get_content();
-       if (pcontent) evas_object_del(CONVERT_TO_EO(pcontent));
-       if (content) ui_iface_view::set_content(CONVERT_TO_T(content));
-       else ui_iface_view::set_content(NULL);
+       Evas_Object *pcontent = this->unset_content();
+       if (pcontent)
+       {
+               evas_object_del(pcontent);
+       }
+       if (content)
+       {
+               evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, content_del_cb, this);
+               ui_iface_view::set_content(CONVERT_TO_T(content));
+       }
        return true;
 }
 
 Evas_Object *ui_base_view::unset_content()
 {
        T pcontent = ui_iface_view::unset_content();
-       return CONVERT_TO_EO(pcontent);
+       if (pcontent)
+       {
+               Evas_Object *obj = CONVERT_TO_EO(pcontent);
+               evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, content_del_cb);
+               evas_object_hide(obj);
+               return obj;
+       }
+       return NULL;
 }
 
 Evas_Object *ui_base_view::get_base()
index 970b8028d5d0d4a9cd255d94bbaed7fba9fd7083..542902bcac006790ee78c57ce15d9c4a57392001 100644 (file)
@@ -14,7 +14,7 @@
  *  limitations under the License.
  *
  */
-#include "../../include/efl/ui_viewmanager_base.h"
+#include "../../include/efl/ui_base_viewmanager.h"
 
 using namespace efl_viewmgr;
 using namespace viewmgr;
@@ -100,7 +100,8 @@ Elm_Layout *ui_base_viewmgr::set_transition_layout(string transition_style)
 
 void ui_base_viewmgr::activate_top_view()
 {
-       elm_object_part_content_unset(this->get_base(), "content");
+       Evas_Object *pcontent = elm_object_part_content_unset(this->get_base(), "content");
+       evas_object_hide(pcontent);
 
        ui_base_view *view = this->get_last_view();
 
index 76945d90aacaeb06de6826d0836ff1a346707a34..4cef5328c5af2f7297dc158dd7b0a41f0092a625 100644 (file)
@@ -14,7 +14,7 @@
  *  limitations under the License.
  *
  */
-#include "../../include/interface/ui_viewmanager_interface.h"
+#include "../../include/interface/ui_iface_viewmanager.h"
 
 using namespace viewmgr;
 
index a77951a282b8d8166bb27b689efe8112d47d9412..8b2a78ea78180c9cfc8f23ca91b65dfc8ef06ea8 100644 (file)
@@ -14,7 +14,7 @@
  *  limitations under the License.
  *
  */
-#include "../../include/interface/ui_viewmanager_interface.h"
+#include "../../include/interface/ui_iface_viewmanager.h"
 
 using namespace viewmgr;