From: Hermet Park Date: Wed, 27 Apr 2016 07:53:49 +0000 (+0900) Subject: add missing content.cpp file. X-Git-Tag: submit/tizen/20160617.075742~53 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=94c306ff1f338e42bd7be7d2d6b4fce1daa2b209;p=platform%2Fcore%2Fuifw%2Fui-viewmgr.git add missing content.cpp file. don't allow to create viewmgr outside. now viewmgr is only one instance that is allocated by ui_app. Change-Id: I36f07166bb816693a7ef96d043eda92cb1ac4023 --- diff --git a/src/examples/efl/contents.cpp b/src/examples/efl/contents.cpp new file mode 100644 index 0000000..c9e78e6 --- /dev/null +++ b/src/examples/efl/contents.cpp @@ -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; +} diff --git a/src/include/efl/mobile/ui_app.h b/src/include/efl/mobile/ui_app.h index 1c7f53e..c70fc40 100644 --- a/src/include/efl/mobile/ui_app.h +++ b/src/include/efl/mobile/ui_app.h @@ -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(); }; } diff --git a/src/include/efl/mobile/ui_viewmanager.h b/src/include/efl/mobile/ui_viewmanager.h index 5a692a7..28535b3 100644 --- a/src/include/efl/mobile/ui_viewmanager.h +++ b/src/include/efl/mobile/ui_viewmanager.h @@ -29,4 +29,4 @@ #include "ui_popup.h" #include "ui_app.h" -#define UI_VIEWMGR dynamic_cast(efl_viewmgr::ui_base_viewmgr::get_instance()) +#define UI_VIEWMGR efl_viewmgr::ui_app::get_instance()->get_viewmgr() diff --git a/src/include/efl/mobile/ui_viewmgr.h b/src/include/efl/mobile/ui_viewmgr.h index e5f0dc4..44d1d49 100644 --- a/src/include/efl/mobile/ui_viewmgr.h +++ b/src/include/efl/mobile/ui_viewmgr.h @@ -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(); }; diff --git a/src/include/efl/ui_base_viewmgr.h b/src/include/efl/ui_base_viewmgr.h index 4ec4b35..f33a8e7 100644 --- a/src/include/efl/ui_base_viewmgr.h +++ b/src/include/efl/ui_base_viewmgr.h @@ -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. diff --git a/src/include/interface/ui_iface_singleton.h b/src/include/interface/ui_iface_singleton.h index f906d11..bb6f6b0 100644 --- a/src/include/interface/ui_iface_singleton.h +++ b/src/include/interface/ui_iface_singleton.h @@ -1,10 +1,6 @@ #ifndef UI_IFACE_SINGLETON_H #define UI_IFACE_SINGLETON_H -#include - -using namespace std; - namespace viewmgr { @@ -25,8 +21,6 @@ template T* singleton::inst = NULL; template singleton::singleton() { - assert(!singleton::inst); - T* pT = reinterpret_cast(1); //Derived Class - Singleton class @@ -37,14 +31,12 @@ singleton::singleton() template singleton::~singleton() { - assert(singleton::inst); singleton::inst = NULL; } template T* singleton::get_instance() { - assert(singleton::inst); return singleton::inst; } diff --git a/src/include/interface/ui_iface_viewmgr.h b/src/include/interface/ui_iface_viewmgr.h index 8a995f8..af03217 100644 --- a/src/include/interface/ui_iface_viewmgr.h +++ b/src/include/interface/ui_iface_viewmgr.h @@ -240,13 +240,14 @@ protected: */ int get_view_index(const ui_iface_view *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::pop_view_finished(ui_iface_view *view) } template +ui_iface_viewmgr::ui_iface_viewmgr(const ui_iface_viewmgr& viewmgr) +{ + +} + +template ui_iface_viewmgr::ui_iface_viewmgr() : singleton(), activated(false) { diff --git a/src/lib/efl/mobile/ui_app.cpp b/src/lib/efl/mobile/ui_app.cpp index 4b0d9b3..c3a79c7 100644 --- a/src/lib/efl/mobile/ui_app.cpp +++ b/src/lib/efl/mobile/ui_app.cpp @@ -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; +} diff --git a/src/lib/efl/mobile/ui_viewmgr.cpp b/src/lib/efl/mobile/ui_viewmgr.cpp index dd2ccc8..4d2d208 100644 --- a/src/lib/efl/mobile/ui_viewmgr.cpp +++ b/src/lib/efl/mobile/ui_viewmgr.cpp @@ -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) +{ + +} diff --git a/src/lib/efl/ui_base_viewmgr.cpp b/src/lib/efl/ui_base_viewmgr.cpp index 703b978..707f206 100644 --- a/src/lib/efl/ui_base_viewmgr.cpp +++ b/src/lib/efl/ui_base_viewmgr.cpp @@ -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();