add missing content.cpp file. 44/67544/2
authorHermet Park <hermet@hermet.pe.kr>
Wed, 27 Apr 2016 07:53:49 +0000 (16:53 +0900)
committerHermet Park <hermet@hermet.pe.kr>
Wed, 27 Apr 2016 07:57:21 +0000 (16:57 +0900)
don't allow to create viewmgr outside.
now viewmgr is only one instance that is allocated by ui_app.

Change-Id: I36f07166bb816693a7ef96d043eda92cb1ac4023

src/examples/efl/contents.cpp [new file with mode: 0644]
src/include/efl/mobile/ui_app.h
src/include/efl/mobile/ui_viewmanager.h
src/include/efl/mobile/ui_viewmgr.h
src/include/efl/ui_base_viewmgr.h
src/include/interface/ui_iface_singleton.h
src/include/interface/ui_iface_viewmgr.h
src/lib/efl/mobile/ui_app.cpp
src/lib/efl/mobile/ui_viewmgr.cpp
src/lib/efl/ui_base_viewmgr.cpp

diff --git a/src/examples/efl/contents.cpp b/src/examples/efl/contents.cpp
new file mode 100644 (file)
index 0000000..c9e78e6
--- /dev/null
@@ -0,0 +1,264 @@
+#include "main.h"
+
+Elm_Toolbar*
+create_toolbar(Evas_Object *parent, const char *style)
+{
+       Elm_Toolbar *toolbar;
+
+       toolbar = elm_toolbar_add(parent);
+
+       //FIXME: :( UI_View can set this style instead.
+       elm_object_style_set(toolbar, style);
+
+       //FIXME: If not call below API, toolbar items create with min size.
+       //       It looks toolbar bug.
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       elm_toolbar_item_append(toolbar, NULL, "Tab1", NULL, NULL);
+       elm_toolbar_item_append(toolbar, NULL, "Tab2", NULL, NULL);
+       elm_toolbar_item_append(toolbar, NULL, "Tab3", NULL, NULL);
+       elm_toolbar_item_append(toolbar, NULL, "Tab4", NULL, NULL);
+
+       return toolbar;
+}
+
+Evas_Object*
+create_scrolling_content(Evas_Object *parent)
+{
+       char buf[PATH_MAX];
+       Elm_Image *image;
+
+       /* Image */
+       image = elm_image_add(parent);
+       snprintf(buf, sizeof(buf), "%s/data/images/bg.png", BINDIR);
+       elm_image_file_set(image, buf, NULL);
+       elm_image_resizable_set(image, EINA_FALSE, EINA_FALSE);
+       evas_object_show(image);
+
+       return image;
+}
+
+Evas_Object*
+create_landscape_content(Evas_Object *parent, const char *text, Evas_Smart_Cb prev_btn_clicked_cb, Evas_Smart_Cb next_btn_clicked_cb)
+{
+       char buf[PATH_MAX];
+       Elm_Grid *grid;
+       Elm_Box *box;
+       Elm_Layout *layout;
+       Elm_Scroller *scroller;
+       Elm_Button *btn;
+       Elm_Image *image;
+
+       /* Scroller */
+       scroller = elm_scroller_add(parent);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+
+       /* Grid */
+       grid = elm_grid_add(scroller);
+       evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(grid);
+
+       /* NoContent Layout */
+       layout = elm_layout_add(grid);
+       elm_layout_theme_set(layout, "layout", "nocontents", "default");
+       elm_object_part_text_set(layout, "elm.text", text);
+       evas_object_show(layout);
+       elm_grid_pack(grid, layout, 0, 0, 50, 100);
+
+       /* Image */
+       image = elm_image_add(grid);
+       snprintf(buf, sizeof(buf), "%s/data/images/tizen.png", BINDIR);
+       elm_image_file_set(image, buf, NULL);
+       evas_object_show(image);
+       elm_grid_pack(grid, image, 50, 0, 50, 85);
+
+       /* Box */
+       box = elm_box_add(grid);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_padding_set(box, ELM_SCALE_SIZE(50), 0);
+       evas_object_show(box);
+       elm_grid_pack(grid, box, 0, 0, 100, 100);
+
+       /* Previous Page Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Prev");
+       evas_object_smart_callback_add(btn, "clicked", prev_btn_clicked_cb, NULL);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Next Page Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Next");
+       evas_object_smart_callback_add(btn, "clicked", next_btn_clicked_cb, NULL);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       elm_object_content_set(scroller, grid);
+
+       return scroller;
+}
+
+Evas_Object*
+create_title_handle_content(Evas_Object *parent, Evas_Smart_Cb prev_btn_clicked_cb, Evas_Smart_Cb next_btn_clicked_cb,
+                               Evas_Smart_Cb title_show_btn_clicked_cb, Evas_Smart_Cb title_hide_btn_clicked_cb,
+                               Evas_Smart_Cb title_show_anim_btn_clicked_cb, Evas_Smart_Cb title_hide_anim_btn_clicked_cb, ui_view *view)
+{
+       Elm_Grid *grid;
+       Elm_Box *box;
+       Elm_Layout *layout;
+       Elm_Button *btn;
+
+       /* Grid */
+       grid = elm_grid_add(parent);
+       evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(grid);
+
+       /* NoContent Layout */
+       layout = elm_layout_add(grid);
+       elm_layout_theme_set(layout, "layout", "nocontents", "default");
+       elm_object_part_text_set(layout, "elm.text", NULL);
+       evas_object_show(layout);
+       elm_grid_pack(grid, layout, 0, 0, 100, 100);
+
+       /* Box */
+       box = elm_box_add(grid);
+       //elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       //elm_box_padding_set(box, ELM_SCALE_SIZE(50), 0);
+       evas_object_show(box);
+       elm_grid_pack(grid, box, 25, 15, 50, 50);
+
+       /* Title Show Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Title Show");
+       evas_object_smart_callback_add(btn, "clicked", title_show_btn_clicked_cb, view);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Title Hide Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Title Hide");
+       evas_object_smart_callback_add(btn, "clicked", title_hide_btn_clicked_cb, view);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Title Show Anim Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Title Show Anim");
+       evas_object_smart_callback_add(btn, "clicked", title_show_anim_btn_clicked_cb, view);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Title Hide Anim Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Title Hide Anim");
+       evas_object_smart_callback_add(btn, "clicked", title_hide_anim_btn_clicked_cb, view);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Box */
+       box = elm_box_add(grid);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 1.0);
+       elm_box_padding_set(box, ELM_SCALE_SIZE(50), 0);
+       evas_object_show(box);
+       elm_grid_pack(grid, box, 0, 0, 100, 100);
+
+       /* Previous Page Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Prev");
+       evas_object_smart_callback_add(btn, "clicked", prev_btn_clicked_cb, NULL);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Next Page Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Next");
+       evas_object_smart_callback_add(btn, "clicked", next_btn_clicked_cb, NULL);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       return grid;
+}
+
+Evas_Object*
+create_content(Evas_Object *parent, const char *text, Evas_Smart_Cb prev_btn_clicked_cb, Evas_Smart_Cb next_btn_clicked_cb)
+{
+       Elm_Grid *grid;
+       Elm_Box *box;
+       Elm_Layout *layout;
+       Elm_Scroller *scroller;
+       Elm_Button *btn;
+
+       /* Scroller */
+       scroller = elm_scroller_add(parent);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+
+       /* Grid */
+       grid = elm_grid_add(scroller);
+       evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(grid);
+
+       /* NoContent Layout */
+       layout = elm_layout_add(grid);
+       elm_layout_theme_set(layout, "layout", "nocontents", "default");
+       elm_object_part_text_set(layout, "elm.text", text);
+       evas_object_show(layout);
+       elm_grid_pack(grid, layout, 0, 0, 100, 100);
+
+       /* Box */
+       box = elm_box_add(grid);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_padding_set(box, ELM_SCALE_SIZE(50), 0);
+       evas_object_show(box);
+       elm_grid_pack(grid, box, 0, 0, 100, 100);
+
+       /* Previous Page Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Prev");
+       evas_object_smart_callback_add(btn, "clicked", prev_btn_clicked_cb, NULL);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       /* Next Page Button */
+       btn = elm_button_add(grid);
+       evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 1.0);
+       elm_object_text_set(btn, "Next");
+       evas_object_smart_callback_add(btn, "clicked", next_btn_clicked_cb, NULL);
+       evas_object_show(btn);
+       elm_box_pack_end(box, btn);
+
+       elm_object_content_set(scroller, grid);
+
+       return scroller;
+}
index 1c7f53e..c70fc40 100644 (file)
@@ -47,6 +47,8 @@ public:
        virtual void on_region_changed(app_event_info_h event_info);
        virtual void on_orient_changed(app_event_info_h event_info);
        virtual void on_lang_changed(app_event_info_h event_info);
+
+       ui_viewmgr *get_viewmgr();
 };
 
 }
index 5a692a7..28535b3 100644 (file)
@@ -29,4 +29,4 @@
 #include "ui_popup.h"
 #include "ui_app.h"
 
-#define UI_VIEWMGR dynamic_cast<ui_viewmgr *>(efl_viewmgr::ui_base_viewmgr::get_instance())
+#define UI_VIEWMGR efl_viewmgr::ui_app::get_instance()->get_viewmgr()
index e5f0dc4..44d1d49 100644 (file)
@@ -28,9 +28,12 @@ class ui_view;
 class ui_viewmgr: public ui_base_viewmgr
 {
        friend class ui_view;
+       friend class ui_app;
 
-public:
+protected:
+       //Don't allow to create ui_viewmgr instance
        ui_viewmgr(const char *pkg);
+       ui_viewmgr(const ui_viewmgr& viewmgr);
        virtual ~ui_viewmgr();
 
 };
index 4ec4b35..f33a8e7 100644 (file)
@@ -105,6 +105,12 @@ private:
 protected:
        ui_base_viewmgr(const char *pkg, ui_base_key_listener *key_listener);
 
+       ///Constructor.
+       ui_base_viewmgr(const char *pkg);
+       ui_base_viewmgr(const ui_base_viewmgr& viewmgr);
+       ///Destructor.
+       virtual ~ui_base_viewmgr();
+
        /** @brief Get a base layout of viewmgr.
         */
        Evas_Object *get_base()
@@ -112,11 +118,8 @@ protected:
                return this->layout;
        }
 
+
 public:
-       ///Constructor.
-       ui_base_viewmgr(const char *pkg);
-       ///Destructor.
-       virtual ~ui_base_viewmgr();
 
        /**
         *  @brief Activate this view manager.
index f906d11..bb6f6b0 100644 (file)
@@ -1,10 +1,6 @@
 #ifndef UI_IFACE_SINGLETON_H
 #define UI_IFACE_SINGLETON_H
 
-#include <cassert>
-
-using namespace std;
-
 namespace viewmgr
 {
 
@@ -25,8 +21,6 @@ template<typename T> T* singleton<T>::inst = NULL;
 template<typename T>
 singleton<T>::singleton()
 {
-       assert(!singleton::inst);
-
        T* pT = reinterpret_cast<T*>(1);
 
        //Derived Class - Singleton class
@@ -37,14 +31,12 @@ singleton<T>::singleton()
 template<typename T>
 singleton<T>::~singleton()
 {
-       assert(singleton::inst);
        singleton::inst = NULL;
 }
 
 template<typename T>
 T* singleton<T>::get_instance()
 {
-       assert(singleton::inst);
        return singleton::inst;
 }
 
index 8a995f8..af03217 100644 (file)
@@ -240,13 +240,14 @@ protected:
         */
        int get_view_index(const ui_iface_view<T, T2> *view);
 
-public:
        ///Constructor.
        ui_iface_viewmgr();
+       ui_iface_viewmgr(const ui_iface_viewmgr& viewmgr);
 
        ///Destructor.
        virtual ~ui_iface_viewmgr();
 
+public:
        /**
         *  @brief Activate this view manager.
         *
@@ -431,6 +432,12 @@ bool ui_iface_viewmgr<T, T2>::pop_view_finished(ui_iface_view<T, T2> *view)
 }
 
 template<typename T, typename T2>
+ui_iface_viewmgr<T, T2>::ui_iface_viewmgr(const ui_iface_viewmgr<T, T2>& viewmgr)
+{
+
+}
+
+template<typename T, typename T2>
 ui_iface_viewmgr<T, T2>::ui_iface_viewmgr()
                : singleton<T2>(), activated(false)
 {
index 4b0d9b3..c3a79c7 100644 (file)
@@ -185,3 +185,8 @@ ui_app::~ui_app()
        eina_stringshare_del(this->pkg);
        delete (this->viewmgr);
 }
+
+ui_viewmgr *ui_app::get_viewmgr()
+{
+       return this->viewmgr;
+}
index dd2ccc8..4d2d208 100644 (file)
@@ -27,3 +27,9 @@ ui_viewmgr::ui_viewmgr(const char *pkg)
 ui_viewmgr::~ui_viewmgr()
 {
 }
+
+ui_viewmgr::ui_viewmgr(const ui_viewmgr& viewmgr)
+               : ui_base_viewmgr(viewmgr)
+{
+
+}
index 703b978..707f206 100644 (file)
@@ -272,6 +272,11 @@ ui_base_viewmgr::ui_base_viewmgr(const char *pkg)
 {
 }
 
+ui_base_viewmgr::ui_base_viewmgr(const ui_base_viewmgr& viewmgr)
+               : ui_iface_viewmgr(viewmgr)
+{
+}
+
 ui_base_viewmgr::~ui_base_viewmgr()
 {
        this->key_listener->term();