sort out public/internal apis. 24/68324/1
authorHermet Park <hermet@hermet.pe.kr>
Tue, 3 May 2016 11:06:07 +0000 (20:06 +0900)
committerHermet Park <hermet@hermet.pe.kr>
Tue, 3 May 2016 11:06:07 +0000 (20:06 +0900)
now it's done on this stage!

Change-Id: I90b71cfadddb58897934867a936db6cbf69bf0c8

src/examples/efl/main.cpp
src/include/efl/mobile/ui_app.h
src/include/efl/mobile/ui_mobile_viewmanager.h
src/include/interface/ui_iface_viewmanager.h
src/lib/efl/mobile/ui_app.cpp
src/lib/interface/ui_iface_viewmgr.cpp

index b54be0cd89db49ec8fa8b31951713949bd7253b4..d4b6d1daf9c3d45b19971db2205b1077630d94c5 100644 (file)
@@ -32,7 +32,7 @@
 #include "page2.h"
 #include "page1.h"
 
-class sample_app : public ui_app
+class sample_app: public ui_app
 {
 public:
        sample_app(const char*pkg, const char *locale_dir)
@@ -43,6 +43,7 @@ public:
        {
        }
 
+protected:
        bool on_create()
        {
                if (!ui_app::on_create())
index 78f036176b224559a05362a02602ca69b864f1a9..6898589d82a289389ab1a0431a10f8c5271995af 100644 (file)
@@ -22,18 +22,18 @@ namespace efl_viewmanager
 
 class ui_viewmgr;
 
-class ui_app : public singleton<ui_app>
+class ui_app
 {
-private:
-       ui_viewmgr *viewmgr;
-       Eina_Stringshare *pkg;
-       Eina_Stringshare *locale_dir;
-
 public:
        ui_app(const char *pkg, const char *locale_dir);
        virtual ~ui_app();
 
+       ui_viewmgr *get_viewmgr();
+       static ui_app *get_instance();
+
        virtual int run(int argc, char **argv);
+
+protected:
        virtual bool on_create();
        virtual void on_terminate();
        virtual void on_pause();
@@ -46,7 +46,9 @@ public:
        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();
+private:
+       _UI_DECLARE_PRIVATE_IMPL(ui_app);
+       _UI_DISABLE_COPY_AND_ASSIGN(ui_app);
 };
 
 }
index 1196a02ad59b392900cb5d168eb6553be95ee206..3c8da4bbfe59c6f10ab282e8a95329d16cc718b5 100644 (file)
@@ -17,8 +17,7 @@
 #ifndef _UI_MOBILE_VIEWMANAGER_H_
 #define _UI_MOBILE_VIEWMANAGER_H_
 
-#include <system_settings.h>
-
+#include <app.h>
 #include "../ui_base_viewmanager.h"
 #include "ui_view.h"
 #include "ui_standard_view.h"
@@ -28,6 +27,6 @@
 #include "ui_popup.h"
 #include "ui_app.h"
 
-#define UI_VIEWMGR dynamic_cast<ui_viewmgr *>(ui_iface_viewmgr::get_instance())
+#define UI_VIEWMGR (ui_app::get_instance()->get_viewmgr())
 
 #endif /* UI_MOBILE_VIEWMANAGER_H */
index 592e93e35608feedc771f8efb5bd14b7d4c95daf..abb9251f73506f6d803a7cce4e67f9cf3d26486c 100644 (file)
@@ -17,7 +17,6 @@
 #ifndef _UI_IFACE_VIEWMANAGER_H_
 #define _UI_IFACE_VIEWMANAGER_H_
 
-#include <app.h>
 #include <dlog.h>
 
 enum ui_view_indicator
index 83343eaf6072f4c7563139283dbc891e67a81ae9..2bf7853ff31ddefcea7aa157833783201b770112 100644 (file)
  *  limitations under the License.
  *
  */
+#include <system_settings.h>
 #include "../../../include/efl/mobile/ui_mobile_viewmanager.h"
 
+/***********************************************************************************************/
+/* Internal class Implementation                                                               */
+/***********************************************************************************************/
+namespace efl_viewmanager
+{
+
+class ui_app_impl
+{
+       friend class ui_app;
+
+private:
+       ui_app *app;
+       ui_viewmgr *viewmgr;
+       Eina_Stringshare *pkg;
+       Eina_Stringshare *locale_dir;
+
+public:
+       ui_app_impl(ui_app *ui_app, const char *pkg, const char *locale_dir);
+       ~ui_app_impl();
+
+       int run(int argc, char **argv);
+       ui_viewmgr *get_viewmgr();
+
+       bool init();
+       bool on_create();
+       void on_terminate();
+       void on_pause();
+       void on_resume();
+       void on_control(app_control_h app_control);
+       void on_low_battery(app_event_info_h event_info);
+       void on_low_memory(app_event_info_h event_info);
+       void on_region_changed(app_event_info_h event_info);
+       void on_orient_changed(app_event_info_h event_info);
+       void on_lang_changed(app_event_info_h event_info);
+};
+
+}
+
 static bool app_create(void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        return app->on_create();
 }
 
 static void app_terminate(void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_terminate();
 }
 
 static void app_pause(void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_pause();
 }
 
 static void app_resume(void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_resume();
 }
 
 static void app_control(app_control_s *app_control, void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_control(app_control);
 }
 
 static void ui_app_lang_changed(app_event_info_h event_info, void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_lang_changed(event_info);
 }
 
 static void ui_app_orient_changed(app_event_info_h event_info, void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_orient_changed(event_info);
 }
 
 static void ui_app_region_changed(app_event_info_h event_info, void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_region_changed(event_info);
 }
 
 static void ui_app_low_battery(app_event_info_h event_info, void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_low_battery(event_info);
 }
 
 static void ui_app_low_memory(app_event_info_h event_info, void *data)
 {
-       ui_app *app = static_cast<ui_app *>(data);
+       ui_app_impl *app = static_cast<ui_app_impl *>(data);
        app->on_low_memory(event_info);
 }
 
+bool ui_app_impl::init()
+{
+       //FIXME: this scale value should be configurable.
+       elm_app_base_scale_set(2.6);
+
+       /* Bind package locale file */
+       bindtextdomain(this->pkg, this->locale_dir);
+       textdomain(this->pkg);
+
+       /* Default View Manager */
+       this->viewmgr = new ui_viewmgr(this->pkg);
+       if (!this->viewmgr)
+       {
+               LOGE("Failed to create a viewmgr(%s)", this->pkg);
+               return false;
+       }
+       return true;
+}
+
+ui_app_impl::ui_app_impl(ui_app *app, const char *pkg, const char *locale_dir)
+               : app(app), viewmgr(NULL)
+{
+       this->pkg = eina_stringshare_add(pkg);
+       this->locale_dir = eina_stringshare_add(locale_dir);
+}
+
+int ui_app_impl::run(int argc, char **argv)
+{
+       ui_app_lifecycle_callback_s event_callback =
+       { 0, };
+       app_event_handler_h handlers[5] =
+       { NULL, };
+
+       event_callback.create = app_create;
+       event_callback.terminate = app_terminate;
+       event_callback.pause = app_pause;
+       event_callback.resume = app_resume;
+       event_callback.app_control = app_control;
+
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, this);
+
+       int ret = ui_app_main(argc, argv, &event_callback, this);
+
+       if (ret != APP_ERROR_NONE)
+       {
+               LOGE("ui_app_main() is failed. err = %d", ret);
+       }
+
+       return ret;
+}
+
+ui_app_impl::~ui_app_impl()
+{
+       delete (this->viewmgr);
+       eina_stringshare_del(this->pkg);
+       eina_stringshare_del(this->locale_dir);
+}
+
+ui_viewmgr *ui_app_impl::get_viewmgr()
+{
+       return this->viewmgr;
+}
+
+void ui_app_impl::on_lang_changed(app_event_info_h event_info)
+{
+       this->app->on_lang_changed(event_info);
+}
+
+void ui_app_impl::on_low_memory(app_event_info_h event_info)
+{
+       this->app->on_low_memory(event_info);
+}
+
+void ui_app_impl::on_low_battery(app_event_info_h event_info)
+{
+       this->app->on_low_battery(event_info);
+}
+
+void ui_app_impl::on_region_changed(app_event_info_h event_info)
+{
+       this->app->on_region_changed(event_info);
+}
+
+void ui_app_impl::on_orient_changed(app_event_info_h event_info)
+{
+       this->app->on_orient_changed(event_info);
+}
+
+bool ui_app_impl::on_create()
+{
+       return this->app->on_create();
+}
+
+void ui_app_impl::on_pause()
+{
+       this->app->on_pause();
+}
+
+void ui_app_impl::on_resume()
+{
+       this->app->on_resume();
+}
+
+void ui_app_impl::on_control(app_control_h app_control)
+{
+       this->app->on_control(app_control);
+}
+
+void ui_app_impl::on_terminate()
+{
+       this->app->on_terminate();
+}
+
+/***********************************************************************************************/
+/* External class Implementation                                                               */
+/***********************************************************************************************/
+
+static ui_app *inst = NULL;
+
 void ui_app::on_lang_changed(app_event_info_h event_info)
 {
        char *locale = NULL;
@@ -106,38 +268,23 @@ void ui_app::on_orient_changed(app_event_info_h event_info)
 
 bool ui_app::on_create()
 {
-       //FIXME: this scale value should be configurable.
-       elm_app_base_scale_set(2.6);
-
-       /* Bind package locale file */
-       bindtextdomain(this->pkg, this->locale_dir);
-       textdomain(this->pkg);
-
-       /* Default View Manager */
-       this->viewmgr = new ui_viewmgr(this->pkg);
-
-       if (!this->viewmgr)
-       {
-               LOGE("Failed to create a viewmgr(%s)", this->pkg);
-               return false;
-       }
-       return true;
+       return this->impl->init();
 }
 
 void ui_app::on_pause()
 {
-       this->viewmgr->deactivate();
+       this->impl->get_viewmgr()->deactivate();
 }
 
 void ui_app::on_resume()
 {
-       this->viewmgr->activate();
+       this->impl->get_viewmgr()->activate();
 }
 
 void ui_app::on_control(app_control_h app_control)
 {
        /* Handle the launch request. */
-       this->viewmgr->activate();
+       this->impl->get_viewmgr()->activate();
 }
 
 void ui_app::on_terminate()
@@ -145,47 +292,32 @@ void ui_app::on_terminate()
 }
 
 ui_app::ui_app(const char *pkg, const char *locale_dir)
-               : viewmgr(NULL)
 {
-       pkg = eina_stringshare_add(pkg);
-       locale_dir = eina_stringshare_add(locale_dir);
+       if (inst)
+       {
+               LOGE("You created ui_app multiple times!!");
+       }
+       inst = this;
+       this->impl = new ui_app_impl(this, pkg, locale_dir);
 }
 
 int ui_app::run(int argc, char **argv)
 {
-       ui_app_lifecycle_callback_s event_callback = { 0, };
-       app_event_handler_h handlers[5] = { NULL, };
-
-       event_callback.create = app_create;
-       event_callback.terminate = app_terminate;
-       event_callback.pause = app_pause;
-       event_callback.resume = app_resume;
-       event_callback.app_control = app_control;
-
-       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, this);
-       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, this);
-       ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, this);
-       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, this);
-       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, this);
-
-       int ret = ui_app_main(argc, argv, &event_callback, this);
-
-       if (ret != APP_ERROR_NONE)
-       {
-               LOGE("ui_app_main() is failed. err = %d", ret);
-       }
-
-       return ret;
+       return this->impl->run(argc, argv);
 }
 
 ui_app::~ui_app()
 {
-       delete (this->viewmgr);
-       eina_stringshare_del(this->pkg);
-       eina_stringshare_del(this->locale_dir);
+       delete (this->impl);
+       inst = NULL;
 }
 
 ui_viewmgr *ui_app::get_viewmgr()
 {
-       return this->viewmgr;
+       return this->impl->get_viewmgr();
+}
+
+ui_app *ui_app::get_instance()
+{
+       return inst;
 }
index c092e0371b633241b0ccbc0d6ae4e3b0972e964e..36a59647b9a987fd50c6293032ec68f97f4d5496 100644 (file)
@@ -15,6 +15,7 @@
  *
  */
 
+#include <app.h>
 #include <list>
 #include "../../include/interface/ui_iface_viewmanager.h"