performed refactoring. 05/64805/2
authorHermet Park <hermet@hermet.pe.kr>
Tue, 5 Apr 2016 11:50:40 +0000 (20:50 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 5 Apr 2016 11:53:15 +0000 (04:53 -0700)
1. move the single to iface
2. introduce ui_base_overlay class

Change-Id: Idbc376e7145224666f7009f79098b6739e8bf3f8

17 files changed:
src/include/efl/mobile/ui_menu.h
src/include/efl/mobile/ui_popup.h
src/include/efl/ui_base_overlay.h [new file with mode: 0644]
src/include/efl/ui_base_singleton.h [deleted file]
src/include/efl/ui_base_view.h
src/include/efl/ui_base_viewmanager.h
src/include/efl/ui_base_viewmgr.h
src/include/interface/ui_iface_overlay.h
src/include/interface/ui_iface_singleton.h [new file with mode: 0644]
src/include/interface/ui_iface_view.h
src/include/interface/ui_iface_viewmanager.h
src/include/interface/ui_iface_viewmgr.h
src/lib/CMakeLists.txt
src/lib/efl/mobile/ui_menu.cpp
src/lib/efl/mobile/ui_popup.cpp
src/lib/efl/ui_base_overlay.cpp [new file with mode: 0644]
src/lib/efl/ui_base_viewmgr.cpp

index 437ed29d59cf6787fb6a5ab39f4639158c4deaf5..1f47be22e753f063579abe1e168534d936246da0 100644 (file)
 #ifndef UI_MENU_H
 #define UI_MENU_H
 
-#include "../../interface/ui_iface_viewmanager.h"
+#include "../ui_base_viewmanager.h"
 
 namespace efl_viewmgr
 {
 class ui_view;
 
-class ui_menu: public viewmgr::ui_iface_overlay<Elm_Ctxpopup *>
+class ui_menu: public ui_base_overlay
 {
        friend class ui_view;
 private:
index 6eb63747878cefdfefd35aa107df886d39c71d2b..93fee0d49586f9439c0e3684c35c68ff1611649e 100644 (file)
 #ifndef UI_POPUP_H
 #define UI_POPUP_H
 
-#include "../../interface/ui_iface_viewmanager.h"
+#include "../ui_base_viewmanager.h"
 
 namespace efl_viewmgr
 {
-class ui_popup : public viewmgr::ui_iface_overlay<Elm_Popup *>
+class ui_popup : public ui_base_overlay
 {
 private:
        Elm_Win *get_window();
diff --git a/src/include/efl/ui_base_overlay.h b/src/include/efl/ui_base_overlay.h
new file mode 100644 (file)
index 0000000..84d3bf2
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * 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_BASE_OVERLAY_H
+#define UI_BASE_OVERLAY_H
+
+#include <Elementary.h>
+#include "../interface/ui_iface_viewmanager.h"
+
+namespace efl_viewmgr
+{
+
+class ui_base_viewmgr;
+class ui_base_view;
+
+class ui_base_overlay: public viewmgr::ui_iface_overlay<Evas_Object *, ui_base_viewmgr>
+{
+protected:
+       ui_base_overlay(ui_base_view *view);
+       virtual ~ui_base_overlay();
+};
+
+}
+
+#endif /* UI_BASE_OVERLAY_H */
diff --git a/src/include/efl/ui_base_singleton.h b/src/include/efl/ui_base_singleton.h
deleted file mode 100644 (file)
index 7b1473c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef UI_SINGLETON_UTIL_H
-#define UI_SINGLETON_UTIL_H
-
-#include <cassert>
-
-using namespace std;
-
-namespace efl_viewmgr
-{
-
-template<typename T>
-class singleton
-{
-private:
-       static T* inst;
-
-public:
-       singleton();
-       virtual ~singleton();
-       inline static T* get_instance();
-};
-
-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
-       int offset = reinterpret_cast<int>(pT) - reinterpret_cast<int>(reinterpret_cast<singleton<T>*>(pT));
-    singleton::inst = reinterpret_cast<T*>((reinterpret_cast<int>(this) + offset));
-}
-
-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;
-}
-
-}
-
-#endif /* UI_SINGLETON_UTIL_H_ */
index 6aa75e4807e3ac29e7b778e5467c1d7ca3e4fc22..397894125285f739d663786815206b48c48620fc 100644 (file)
@@ -35,7 +35,7 @@ namespace efl_viewmgr
  *  @warning When the transitions are finished, the view must to call ui_iface_viewmgr :: _push_finished(), ui_iface_viewmgr :: _pop_finished() in order that
  *           The ui_iface_viewmgr keeps the view states exactly.
  */
-class ui_base_view: public viewmgr::ui_iface_view<Evas_Object *>
+class ui_base_view: public viewmgr::ui_iface_view<Evas_Object *, ui_base_viewmgr>
 {
        friend class ui_base_viewmgr;
 
index 0bca5f59366d42bf57bcceac03454274b1fc866c..e71d6be5cc477c17d07a67954ad4bc0a9e18e8fe 100644 (file)
@@ -23,7 +23,7 @@
 
 #define UI_BASE_VIEWMGR efl_viewmgr::ui_base_viewmgr::get_instance()
 
-#include "ui_base_singleton.h"
+#include "ui_base_overlay.h"
 #include "ui_base_viewmgr.h"
 #include "ui_base_view.h"
 #include "ui_base_key_listener.h"
index f59916d2f77e1939c24a8126d8f0fdab98b29b2c..06e67a6d4bb5f583cb21e6b8280c6f881754b891 100644 (file)
 #ifndef UI_BASE_VIEWMGR_H
 #define UI_BASE_VIEWMGR_H
 
+#include <map>
 #include <Elementary.h>
 #include "../interface/ui_iface_viewmanager.h"
 #include "ui_base_key_listener.h"
-#include <map>
 
 
 //FIXME: ??
@@ -44,7 +44,7 @@ class ui_base_view;
  *
  *  @warning viewmgr will remove all containing views when it's destroyed.
  */
-class ui_base_viewmgr: public singleton<ui_base_viewmgr>, public viewmgr::ui_iface_viewmgr<Evas_Object *>
+class ui_base_viewmgr: public viewmgr::ui_iface_viewmgr<Evas_Object *, ui_base_viewmgr>
 {
        friend class ui_base_view;
 
index 234200c3ac7e70a52a44c57ec36eff29d48efb7e..bb9ac53217a8b9334eaa58496896d44beb0be5cc 100644 (file)
 namespace viewmgr
 {
 
-template<typename T>
+template<typename T, typename T2>
 class ui_iface_view;
 
-template<typename T>
+template<typename T, typename T2>
 class ui_iface_overlay: public ui_iface_rotatable
 {
 private:
-       ui_iface_view<T> *view;
+       ui_iface_view<T, T2> *view;
        T content;
 
 protected:
-       ui_iface_overlay(ui_iface_view<T> *view);
+       ui_iface_overlay(ui_iface_view<T, T2> *view);
        virtual ~ui_iface_overlay();
 
 public:
        virtual bool set_content(T content);
        virtual T unset_content();
-       ui_iface_view<T> *get_view();
+       ui_iface_view<T, T2> *get_view();
        virtual T get_content();
        virtual void on_back();
        virtual bool activate() = 0;
@@ -46,46 +46,46 @@ public:
 };
 
 
-template<typename T>
-ui_iface_overlay<T>::ui_iface_overlay(ui_iface_view<T> *view)
+template<typename T, typename T2>
+ui_iface_overlay<T, T2>::ui_iface_overlay(ui_iface_view<T, T2> *view)
                : view(view), content(NULL)
 {
 }
 
-template<typename T>
-ui_iface_overlay<T>::~ui_iface_overlay()
+template<typename T, typename T2>
+ui_iface_overlay<T, T2>::~ui_iface_overlay()
 {
 }
 
-template<typename T>
-bool ui_iface_overlay<T>::set_content(T content)
+template<typename T, typename T2>
+bool ui_iface_overlay<T, T2>::set_content(T content)
 {
        this->content = content;
        return true;
 }
 
-template<typename T>
-T ui_iface_overlay<T>::unset_content()
+template<typename T, typename T2>
+T ui_iface_overlay<T, T2>::unset_content()
 {
        T prev = this->content;
        this->content = NULL;
        return prev;
 }
 
-template<typename T>
-T ui_iface_overlay<T>::get_content()
+template<typename T, typename T2>
+T ui_iface_overlay<T, T2>::get_content()
 {
        return this->content;
 }
 
-template<typename T>
-ui_iface_view<T> *ui_iface_overlay<T>::get_view()
+template<typename T, typename T2>
+ui_iface_view<T, T2> *ui_iface_overlay<T, T2>::get_view()
 {
        return this->view;
 }
 
-template<typename T>
-void ui_iface_overlay<T>::on_back()
+template<typename T, typename T2>
+void ui_iface_overlay<T, T2>::on_back()
 {
        this->deactivate();
 }
diff --git a/src/include/interface/ui_iface_singleton.h b/src/include/interface/ui_iface_singleton.h
new file mode 100644 (file)
index 0000000..f906d11
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef UI_IFACE_SINGLETON_H
+#define UI_IFACE_SINGLETON_H
+
+#include <cassert>
+
+using namespace std;
+
+namespace viewmgr
+{
+
+template<typename T>
+class singleton
+{
+private:
+       static T* inst;
+
+public:
+       singleton();
+       virtual ~singleton();
+       inline static T* get_instance();
+};
+
+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
+       int offset = reinterpret_cast<int>(pT) - reinterpret_cast<int>(reinterpret_cast<singleton<T>*>(pT));
+       singleton::inst = reinterpret_cast<T*>((reinterpret_cast<int>(this) + offset));
+}
+
+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;
+}
+
+}
+
+#endif /* UI_IFACE_SINGLETON_H_ */
index 3e3f18c402827765fbec7424dbb6c66bdb6efde7..7853e7093fcedb3ea7a3633272c8862144506633 100644 (file)
@@ -24,7 +24,7 @@ using namespace std;
 namespace viewmgr {
 
 
-template<typename T>
+template<typename T, typename T2>
 class ui_iface_viewmgr;
 
 /**
@@ -40,16 +40,16 @@ class ui_iface_viewmgr;
  *  @warning When the transitions are finished, the view must to call ui_iface_viewmgr :: _push_finished(), ui_iface_viewmgr :: _pop_finished() in order that
  *           The ui_iface_viewmgr keeps the view states exactly.
  */
-template<typename T>
+template<typename T, typename T2>
 class ui_iface_view : public ui_iface_rotatable
 {
-       friend class ui_iface_viewmgr<T>;
+       friend class ui_iface_viewmgr<T, T2>;
 
 private:
        T content;                              ///< A content instance for a screen as a view.
        string name;                            ///< View name.
        string transition_style;                ///< View transition style name.
-       ui_iface_viewmgr<T> *viewmgr;           ///< Viewmgr which this view belongs to.
+       ui_iface_viewmgr<T, T2> *viewmgr;           ///< Viewmgr which this view belongs to.
        ui_view_state state;                    ///< View state.
        ui_view_indicator indicator;            ///< View indicator mode.
        bool event_block;                       ///< State of event block.
@@ -124,7 +124,7 @@ protected:
        /** @brief Return a viewmgr which this view is belonging to.
         */
        //FIXME: Is it necessary?
-       ui_iface_viewmgr<T> *get_viewmgr();
+       ui_iface_viewmgr<T, T2> *get_viewmgr();
 
        /** @brief This is for replacing or setting a content of the view.
         *
@@ -234,32 +234,32 @@ public:
 };
 
 
-template<typename T>
-bool ui_iface_view<T>::get_event_block()
+template<typename T, typename T2>
+bool ui_iface_view<T, T2>::get_event_block()
 {
        return this->event_block;
 }
 
-template<typename T>
-ui_iface_viewmgr<T> *ui_iface_view<T>::get_viewmgr()
+template<typename T, typename T2>
+ui_iface_viewmgr<T, T2> *ui_iface_view<T, T2>::get_viewmgr()
 {
        return this->viewmgr;
 }
 
-template<typename T>
-void ui_iface_view<T>::set_event_block(bool block)
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::set_event_block(bool block)
 {
        this->event_block = block;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_load()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_load()
 {
        this->state = UI_VIEW_STATE_LOAD;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_unload()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_unload()
 {
        this->state = UI_VIEW_STATE_UNLOAD;
        if (this->get_removable_content())
@@ -269,132 +269,132 @@ void ui_iface_view<T>::on_unload()
        }
 }
 
-template<typename T>
-void ui_iface_view<T>::on_activate()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_activate()
 {
        this->state = UI_VIEW_STATE_ACTIVATE;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_deactivate()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_deactivate()
 {
        this->state = UI_VIEW_STATE_DEACTIVATE;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_pause()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_pause()
 {
        this->state = UI_VIEW_STATE_PAUSE;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_resume()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_resume()
 {
        this->state = UI_VIEW_STATE_ACTIVATE;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_destroy()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_destroy()
 {
 }
 
-template<typename T>
-ui_iface_view<T>::ui_iface_view(const char *name)
+template<typename T, typename T2>
+ui_iface_view<T, T2>::ui_iface_view(const char *name)
                : content(NULL), name(string(name ? name : "")), transition_style(string("default")), viewmgr(NULL), state(UI_VIEW_STATE_LOAD),
                  indicator(UI_VIEW_INDICATOR_DEFAULT), event_block(false), removable_content(true)
 {
        this->state = UI_VIEW_STATE_UNLOAD;
 }
 
-template<typename T>
-ui_iface_view<T>::~ui_iface_view()
+template<typename T, typename T2>
+ui_iface_view<T, T2>::~ui_iface_view()
 {
        this->viewmgr->remove_view(this);
 }
 
-template<typename T>
-bool ui_iface_view<T>::set_content(T content)
+template<typename T, typename T2>
+bool ui_iface_view<T, T2>::set_content(T content)
 {
        this->content = content;
        return true;
 }
 
-template<typename T>
-T ui_iface_view<T>::unset_content()
+template<typename T, typename T2>
+T ui_iface_view<T, T2>::unset_content()
 {
        T prev = this->content;
        this->content = NULL;
        return prev;
 }
 
-template<typename T>
-bool ui_iface_view<T>::set_transition_style(const char *style)
+template<typename T, typename T2>
+bool ui_iface_view<T, T2>::set_transition_style(const char *style)
 {
        this->transition_style.assign(style);
        return true;
 }
 
-template<typename T>
-bool ui_iface_view<T>::set_name(const char *name)
+template<typename T, typename T2>
+bool ui_iface_view<T, T2>::set_name(const char *name)
 {
        this->name.assign(name);
        return true;
 }
 
-template<typename T>
-void ui_iface_view<T>::set_removable_content(bool removable)
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::set_removable_content(bool removable)
 {
        this->removable_content = removable;
 
        //FIXME: If this api is called on unload state? should we remove content right now?
 }
 
-template<typename T>
-void ui_iface_view<T>::set_indicator(ui_view_indicator indicator)
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::set_indicator(ui_view_indicator indicator)
 {
        this->indicator = indicator;
 }
 
-template<typename T>
-const char *ui_iface_view<T>::get_transition_style()
+template<typename T, typename T2>
+const char *ui_iface_view<T, T2>::get_transition_style()
 {
        return this->transition_style.c_str();
 }
 
-template<typename T>
-const char *ui_iface_view<T>::get_name()
+template<typename T, typename T2>
+const char *ui_iface_view<T, T2>::get_name()
 {
        return this->name.c_str();
 }
 
-template<typename T>
-T ui_iface_view<T>::get_content()
+template<typename T, typename T2>
+T ui_iface_view<T, T2>::get_content()
 {
        return this->content;
 }
 
-template<typename T>
-ui_view_state ui_iface_view<T>::get_state()
+template<typename T, typename T2>
+ui_view_state ui_iface_view<T, T2>::get_state()
 {
        return this->state;
 }
 
-template<typename T>
-bool ui_iface_view<T>::get_removable_content()
+template<typename T, typename T2>
+bool ui_iface_view<T, T2>::get_removable_content()
 {
        return this->removable_content;
 }
 
-template<typename T>
-ui_view_indicator ui_iface_view<T>::get_indicator()
+template<typename T, typename T2>
+ui_view_indicator ui_iface_view<T, T2>::get_indicator()
 {
        return this->indicator;
 }
 
-template<typename T>
-void ui_iface_view<T>::on_back()
+template<typename T, typename T2>
+void ui_iface_view<T, T2>::on_back()
 {
-       ui_iface_viewmgr<T> *viewmgr = this->get_viewmgr();
+       ui_iface_viewmgr<T, T2> *viewmgr = this->get_viewmgr();
        if (!viewmgr)
        {
                LOGE("Failed to get a viewmgr, view =%p", this);
index d301de5a8d6cf758f6b61da3d1927cc6380daea6..3b54dc62d9b1648b8a14f3c19a2d763f6dceb33a 100644 (file)
@@ -45,6 +45,7 @@ enum ui_view_state
        UI_VIEW_STATE_LAST
 };
 
+#include "ui_iface_singleton.h"
 #include "ui_iface_rotatable.h"
 #include "ui_iface_overlay.h"
 #include "ui_iface_view.h"
index f8ec8662a58fddf77956483e809cd8f89b0cacca..8a995f8064ac78e6f9ebdbb175f660194a0ba3f9 100644 (file)
@@ -23,7 +23,7 @@ using namespace std;
 
 namespace viewmgr {
 
-template<typename T>
+template<typename T, typename T2>
 class ui_iface_view;
 
 /**
@@ -38,15 +38,15 @@ class ui_iface_view;
  *
  *  @warning viewmgr will remove all containing views when it's destroyed.
  */
-template<typename T>
-class ui_iface_viewmgr
+template<typename T, typename T2>
+class ui_iface_viewmgr: public singleton<T2>
 {
-       friend class ui_iface_view<T>;
+       friend class ui_iface_view<T, T2>;
 
 private:
        static bool soft_key;                  //If system doesn't support HW back key, then this value is @c true.
        static bool event_block;               //Event block on view transition. This value should be configurable by system.
-       list<ui_iface_view<T> *> view_list;    //View list.
+       list<ui_iface_view<T, T2> *> view_list;    //View list.
        bool activated;                        //Activated status of this viewmgr.
 
        /**
@@ -59,7 +59,7 @@ private:
         *  @warning If the given view is already connected to a viewmgr, this call will be failed.
         *  @see disconnect_view()
         */
-       bool connect_view(ui_iface_view<T> *view);
+       bool connect_view(ui_iface_view<T, T2> *view);
 
        /**
         *  @brief Disconnect a given view from this viewmgr.
@@ -70,7 +70,7 @@ private:
         *
         *  @see connect_view()
         */
-       bool disconnect_view(ui_iface_view<T> *view);
+       bool disconnect_view(ui_iface_view<T, T2> *view);
 
        /**
         *  @brief Toggle event blocking to the given view.
@@ -82,7 +82,7 @@ private:
         *  @param view A view to toggle event blocking.
         *  @param block @c true is blocking event, otherwise @c false.
         */
-       void set_event_block(ui_iface_view<T> *view, bool block);
+       void set_event_block(ui_iface_view<T, T2> *view, bool block);
 
 protected:
        /**
@@ -94,7 +94,7 @@ protected:
         *
         *  @warning This function must be called when push transition is finished.
         */
-       bool push_view_finished(ui_iface_view<T> *view);
+       bool push_view_finished(ui_iface_view<T, T2> *view);
 
        /**
         *  @brief This function is designed for finishing process for pop transition.
@@ -107,7 +107,7 @@ protected:
         *
         *  @warning This function must be called when push transition is finished.
         */
-       bool pop_view_finished(ui_iface_view<T> *view);
+       bool pop_view_finished(ui_iface_view<T, T2> *view);
 
 //FIXME: Necessary?
 #if 0
@@ -118,7 +118,7 @@ protected:
         *
         *  @warning Don't modify this view list.
         */
-       const list<ui_iface_view<T>*>* const get_view_list()
+       const list<ui_iface_view<T, T2>*>* const get_view_list()
        {
                return &this->view_list;
        }
@@ -141,7 +141,7 @@ protected:
         *  @see insert_view_after()
         *  @see pop_view()
         */
-       ui_iface_view<T> *push_view(ui_iface_view<T> *view);
+       ui_iface_view<T, T2> *push_view(ui_iface_view<T, T2> *view);
 
        /**
         *  @brief Pop the top(last) view from this viewmgr view list.
@@ -166,7 +166,7 @@ protected:
         *
         *  @return @c true on success or @c false otherwise.
         */
-       bool insert_view_before(ui_iface_view<T> *view, ui_iface_view<T> *before);
+       bool insert_view_before(ui_iface_view<T, T2> *view, ui_iface_view<T, T2> *before);
 
        /**
         *  @brief Insert a view in this viewmgr view list. Specifically, insert a given @p view right after of the given view, @after.
@@ -176,7 +176,7 @@ protected:
         *
         *  @return @c true on success or @c false otherwise.
         */
-       bool insert_view_after(ui_iface_view<T> *view, ui_iface_view<T> *after);
+       bool insert_view_after(ui_iface_view<T, T2> *view, ui_iface_view<T, T2> *after);
 
        /**
         *  @brief Remove the given view from this viewmgr view list.
@@ -189,7 +189,7 @@ protected:
         *  @see insert_view_after()
         *  @see push_view()
         */
-       bool remove_view(ui_iface_view<T> *view);
+       bool remove_view(ui_iface_view<T, T2> *view);
 
        /**
         *  @brief Return a view which is matched with the index @p idx.
@@ -205,7 +205,7 @@ protected:
         *  @see get_view_index()
         *  @see get_view_count()
         */
-       ui_iface_view<T>* get_view(unsigned int idx);
+       ui_iface_view<T, T2>* get_view(unsigned int idx);
 
        /**
         *  @brief Return a view which is matched with the @p name.
@@ -219,14 +219,14 @@ protected:
         *
         *  @see ui_iface_view::set_name()
         */
-       ui_iface_view<T> *get_view(const char *name);
+       ui_iface_view<T, T2> *get_view(const char *name);
 
        /**
         *  @brief Return a last(top) view.
         *
         *  @return The view which is last view of the viewmgr view list.
         */
-       ui_iface_view<T> *get_last_view();
+       ui_iface_view<T, T2> *get_last_view();
 
        /**
         *  @brief Return a view index(page) number of the given view.
@@ -238,7 +238,7 @@ protected:
         *
         *  @warning The index number of views are variable since the view list is variable.
         */
-       int get_view_index(const ui_iface_view<T> *view);
+       int get_view_index(const ui_iface_view<T, T2> *view);
 
 public:
        ///Constructor.
@@ -302,17 +302,17 @@ public:
 };
 
 
-#define VIEW_ITR typename list<ui_iface_view<T> *>::iterator
-#define VIEW_RITR typename list<ui_iface_view<T> *>::reverse_iterator
+#define VIEW_ITR typename list<ui_iface_view<T, T2> *>::iterator
+#define VIEW_RITR typename list<ui_iface_view<T, T2> *>::reverse_iterator
 
 //FIXME: Read system profile to decide whether support software key or not.
-template<typename T> bool ui_iface_viewmgr<T>::soft_key = true;
+template<typename T, typename T2> bool ui_iface_viewmgr<T, T2>::soft_key = true;
 //FIXME: Read system profile to decide whether support event block or not.
-template<typename T> bool ui_iface_viewmgr<T>::event_block = true;
+template<typename T, typename T2> bool ui_iface_viewmgr<T, T2>::event_block = true;
 
 
-template<typename T>
-bool ui_iface_viewmgr<T>::insert_view_after(ui_iface_view<T> *view, ui_iface_view<T> *after)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::insert_view_after(ui_iface_view<T, T2> *view, ui_iface_view<T, T2> *after)
 {
        VIEW_ITR it;
 
@@ -353,14 +353,14 @@ bool ui_iface_viewmgr<T>::insert_view_after(ui_iface_view<T> *view, ui_iface_vie
        return true;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::need_soft_key()
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::need_soft_key()
 {
-       return ui_iface_viewmgr<T>::soft_key;
+       return ui_iface_viewmgr<T, T2>::soft_key;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::connect_view(ui_iface_view<T> *view)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::connect_view(ui_iface_view<T, T2> *view)
 {
        //FIXME: If user call a set_viewmgr() before, It should not return false.
        /*
@@ -375,25 +375,25 @@ bool ui_iface_viewmgr<T>::connect_view(ui_iface_view<T> *view)
        return true;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::disconnect_view(ui_iface_view<T> *view)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::disconnect_view(ui_iface_view<T, T2> *view)
 {
        if (!view->viewmgr) return false;
        view->viewmgr = NULL;
        return true;
 }
 
-template<typename T>
-void ui_iface_viewmgr<T>::set_event_block(ui_iface_view<T> *view, bool block)
+template<typename T, typename T2>
+void ui_iface_viewmgr<T, T2>::set_event_block(ui_iface_view<T, T2> *view, bool block)
 {
        if (!ui_iface_viewmgr::event_block) return;
        view->set_event_block(block);
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::push_view_finished(ui_iface_view<T> *view)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::push_view_finished(ui_iface_view<T, T2> *view)
 {
-       ui_iface_view<T> *last = this->view_list.back();
+       ui_iface_view<T, T2> *last = this->view_list.back();
 
        //The previous view has been pushed. This should be unload.
        if (last != view)
@@ -409,10 +409,10 @@ bool ui_iface_viewmgr<T>::push_view_finished(ui_iface_view<T> *view)
        return true;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::pop_view_finished(ui_iface_view<T> *view)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::pop_view_finished(ui_iface_view<T, T2> *view)
 {
-       ui_iface_view<T> *last = this->view_list.back();
+       ui_iface_view<T, T2> *last = this->view_list.back();
 
        //This view has been popped. It should be destroyed.
        if (last == view)
@@ -430,19 +430,19 @@ bool ui_iface_viewmgr<T>::pop_view_finished(ui_iface_view<T> *view)
        return true;
 }
 
-template<typename T>
-ui_iface_viewmgr<T>::ui_iface_viewmgr()
-               : activated(false)
+template<typename T, typename T2>
+ui_iface_viewmgr<T, T2>::ui_iface_viewmgr()
+               : singleton<T2>(), activated(false)
 {
 }
 
-template<typename T>
-ui_iface_viewmgr<T>::~ui_iface_viewmgr()
+template<typename T, typename T2>
+ui_iface_viewmgr<T, T2>::~ui_iface_viewmgr()
 {
        //Terminate views
        for (VIEW_RITR it = this->view_list.rbegin(); it != this->view_list.rend(); it++)
        {
-               ui_iface_view<T> *view = *it;
+               ui_iface_view<T, T2> *view = *it;
                view->on_deactivate();
                view->on_unload();
                view->on_destroy();
@@ -453,8 +453,8 @@ ui_iface_viewmgr<T>::~ui_iface_viewmgr()
        ui_app_exit();
 }
 
-template<typename T>
-ui_iface_view<T> *ui_iface_viewmgr<T>::push_view(ui_iface_view<T> *view)
+template<typename T, typename T2>
+ui_iface_view<T, T2> *ui_iface_viewmgr<T, T2>::push_view(ui_iface_view<T, T2> *view)
 {
        if (!view)
        {
@@ -468,7 +468,7 @@ ui_iface_view<T> *ui_iface_viewmgr<T>::push_view(ui_iface_view<T> *view)
                return NULL;
        }
 
-       ui_iface_view<T> *pview;
+       ui_iface_view<T, T2> *pview;
 
        //Previous view
        if (this->view_list.size() > 0)
@@ -495,8 +495,8 @@ ui_iface_view<T> *ui_iface_viewmgr<T>::push_view(ui_iface_view<T> *view)
        return view;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::pop_view()
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::pop_view()
 {
        //FIXME: No more view?
        if (this->get_view_count() == 0)
@@ -509,7 +509,7 @@ bool ui_iface_viewmgr<T>::pop_view()
        if (this->get_view_count() == 1)
        {
                //destroy viewmgr?
-               ui_iface_view<T>*view = this->view_list.back();
+               ui_iface_view<T, T2>*view = this->view_list.back();
                view->on_deactivate();
                view->on_unload();
                view->on_destroy();
@@ -519,7 +519,7 @@ bool ui_iface_viewmgr<T>::pop_view()
        }
 
        //last page to be popped.
-       ui_iface_view<T>*view = this->view_list.back();
+       ui_iface_view<T, T2>*view = this->view_list.back();
        view->on_deactivate();
        this->set_event_block(view, true);
 
@@ -527,7 +527,7 @@ bool ui_iface_viewmgr<T>::pop_view()
        //Make this getter method? or define instance?
        //previous page is to be an active page.
        auto nx = prev(this->view_list.end(), 2);
-       ui_iface_view<T>*pview = *nx;
+       ui_iface_view<T, T2>*pview = *nx;
        pview->on_load();
        pview->on_deactivate();
        this->set_event_block(pview, true);
@@ -535,8 +535,8 @@ bool ui_iface_viewmgr<T>::pop_view()
        return true;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::insert_view_before(ui_iface_view<T> *view, ui_iface_view<T> *before)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::insert_view_before(ui_iface_view<T, T2> *view, ui_iface_view<T, T2> *before)
 {
        VIEW_ITR it;
 
@@ -572,8 +572,8 @@ bool ui_iface_viewmgr<T>::insert_view_before(ui_iface_view<T> *view, ui_iface_vi
        return true;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::remove_view(ui_iface_view<T> *view)
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::remove_view(ui_iface_view<T, T2> *view)
 {
        this->view_list.remove(view);
        this->disconnect_view(view);
@@ -582,8 +582,8 @@ bool ui_iface_viewmgr<T>::remove_view(ui_iface_view<T> *view)
        return true;
 }
 
-template<typename T>
-ui_iface_view<T> *ui_iface_viewmgr<T>::get_view(unsigned int idx)
+template<typename T, typename T2>
+ui_iface_view<T, T2> *ui_iface_viewmgr<T, T2>::get_view(unsigned int idx)
 {
        if (idx < 0 || idx >= this->view_list.size())
        {
@@ -595,8 +595,8 @@ ui_iface_view<T> *ui_iface_viewmgr<T>::get_view(unsigned int idx)
        return *it;
 }
 
-template<typename T>
-int ui_iface_viewmgr<T>::get_view_index(const ui_iface_view<T> *view)
+template<typename T, typename T2>
+int ui_iface_viewmgr<T, T2>::get_view_index(const ui_iface_view<T, T2> *view)
 {
        int idx = 0;
 
@@ -609,15 +609,15 @@ int ui_iface_viewmgr<T>::get_view_index(const ui_iface_view<T> *view)
        return -1;
 }
 
-template<typename T>
-ui_iface_view<T> *ui_iface_viewmgr<T>::get_last_view()
+template<typename T, typename T2>
+ui_iface_view<T, T2> *ui_iface_viewmgr<T, T2>::get_last_view()
 {
        int cnt = this->get_view_count();
        return this->get_view(cnt - 1);
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::activate()
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::activate()
 {
        if (this->activated) return false;
        if (this->get_view_count() == 0) return false;
@@ -625,29 +625,29 @@ bool ui_iface_viewmgr<T>::activate()
        return true;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::deactivate()
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::deactivate()
 {
        if (!this->activated) return false;
        this->activated = false;
        return true;
 }
 
-template<typename T>
-ui_iface_view<T> *ui_iface_viewmgr<T>::get_view(const char *name)
+template<typename T, typename T2>
+ui_iface_view<T, T2> *ui_iface_viewmgr<T, T2>::get_view(const char *name)
 {
        //FIXME: ...
        return NULL;
 }
 
-template<typename T>
-bool ui_iface_viewmgr<T>::is_activated()
+template<typename T, typename T2>
+bool ui_iface_viewmgr<T, T2>::is_activated()
 {
        return this->activated;
 }
 
-template<typename T>
-unsigned int ui_iface_viewmgr<T>::get_view_count()
+template<typename T, typename T2>
+unsigned int ui_iface_viewmgr<T, T2>::get_view_count()
 {
        return this->view_list.size();
 }
index 0580f9d655a6b39ce0c902dfa00e2376b718b570..c860c72bf62fd0bbbacdf952c91122f0dfae6e88 100644 (file)
@@ -2,6 +2,7 @@ SET(SRCS
      efl/ui_base_view.cpp
      efl/ui_base_viewmgr.cpp
      efl/ui_base_key_listener.cpp
+     efl/ui_base_overlay.cpp
      efl/mobile/ui_menu.cpp
      efl/mobile/ui_popup.cpp
      efl/mobile/ui_view.cpp
index 426ac2dc671809c5d3f93edc8097ba98406f283a..9529b256495960d0a3499c25e0d5cc727364a8aa 100644 (file)
@@ -67,7 +67,7 @@ static void win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_inf
 }
 
 ui_menu::ui_menu(ui_view *view)
-               : ui_iface_overlay(view)
+               : ui_base_overlay(view)
 {
        Elm_Win *win = this->get_window();
        evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, win_resize_cb, this);
@@ -136,7 +136,7 @@ bool ui_menu::set_content(Elm_Ctxpopup *ctxpopup)
        evas_object_smart_callback_add(ctxpopup, "dismissed", ctxpopup_dismissed_cb, NULL);
        evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, ctxpopup_del_cb, this);
 
-       ui_iface_overlay::set_content(ctxpopup);
+       ui_base_overlay::set_content(ctxpopup);
 
        return true;
 }
@@ -150,7 +150,7 @@ bool ui_menu::is_activated()
 
 Elm_Ctxpopup *ui_menu::unset_content()
 {
-       Elm_Ctxpopup *ctxpopup = ui_iface_overlay::unset_content();
+       Elm_Ctxpopup *ctxpopup = ui_base_overlay::unset_content();
        if (!ctxpopup) return NULL;
 
        evas_object_smart_callback_del(ctxpopup, "dismissed", ctxpopup_dismissed_cb);
index 15b55a3e008d735c9263669a6ec20ea13c6c72e7..d3e615085e7acc8689def0657f1e446985df5ada 100644 (file)
@@ -43,7 +43,7 @@ static void popup_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
 }
 
 ui_popup::ui_popup(ui_view *view)
-               : ui_iface_overlay(view)
+               : ui_base_overlay(view)
 {
        view->connect_popup(this);
 }
@@ -109,7 +109,7 @@ bool ui_popup::set_content(Elm_Popup *popup)
        evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, popup_del_cb, this);
        evas_object_smart_callback_add(popup, "dismissed", popup_dismissed_cb, this);
 
-       ui_iface_overlay::set_content(popup);
+       ui_base_overlay::set_content(popup);
 
        return true;
 }
@@ -123,7 +123,7 @@ bool ui_popup::is_activated()
 
 Elm_Popup *ui_popup::unset_content()
 {
-       Elm_Popup *popup = ui_iface_overlay::unset_content();
+       Elm_Popup *popup = ui_base_overlay::unset_content();
        if (!popup) return NULL;
 
        evas_object_event_callback_del(popup, EVAS_CALLBACK_DEL, popup_del_cb);
diff --git a/src/lib/efl/ui_base_overlay.cpp b/src/lib/efl/ui_base_overlay.cpp
new file mode 100644 (file)
index 0000000..7669fe1
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 "../../include/efl/ui_base_viewmanager.h"
+
+using namespace efl_viewmgr;
+using namespace viewmgr;
+
+ui_base_overlay::ui_base_overlay(ui_base_view *view)
+               : ui_iface_overlay(view)
+{
+}
+
+ui_base_overlay::~ui_base_overlay()
+{
+}
index 20f65d5217d28de13a7859a2ef20bbb7ee34016f..f50289f27629f3e961eb6262ac8ab3e66342efbb 100644 (file)
@@ -169,7 +169,7 @@ bool ui_base_viewmgr::create_conformant(Elm_Win *win)
 }
 
 ui_base_viewmgr::ui_base_viewmgr(const char *pkg, ui_base_key_listener *key_listener)
-               : singleton(), ui_iface_viewmgr(), key_listener(key_listener), transition_style("default")
+               : ui_iface_viewmgr(), key_listener(key_listener), transition_style("default")
 {
        if (!pkg)
        {