summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Mello <fabio.mello@intel.com>2014-02-14 10:35:57 -0200
committerSemun Lee <sm79.lee@samsung.com>2014-03-07 13:56:03 +0900
commit084d912cb688c5a9257b3446b2f5f40260d16c6f (patch)
tree313e9ac9cb29eec80883f89781e62553d40e920d
parent92210284ef62357b7a08fbd973d291ee1afe04ec (diff)
downloadui-gadget-1-084d912cb688c5a9257b3446b2f5f40260d16c6f.tar.gz
ui-gadget-1-084d912cb688c5a9257b3446b2f5f40260d16c6f.tar.bz2
ui-gadget-1-084d912cb688c5a9257b3446b2f5f40260d16c6f.zip
Apps should not require ecore_x.
The current UG_INIT_EFL() macro forces the applications who uses it to depend on ecore_x. This patch uses a higher level of abstraction in this macro, this approach lets ui-gadget-1 handle the display server without expose this to its dependents. Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com> Signed-off-by: Fabio Mello <fabio.mello@intel.com> Conflicts: CMakeLists.txt Change-Id: I9a1683df1ee64b2d997b0edfedc6bfc695aed9e7
-rw-r--r--CMakeLists.txt2
-rw-r--r--include/ug-manager.h3
-rw-r--r--include/ui-gadget.h35
-rw-r--r--packaging/ui-gadget-1.spec1
-rw-r--r--src/manager.c11
-rw-r--r--src/ug.c15
6 files changed, 62 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c665300..ed72a99 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,7 @@ SET(SRCS src/ug.c
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
-SET(PKGS_CHECK_MODULES "glib-2.0 bundle dlog capi-appfw-application appsvc capi-appfw-app-manager ecore libtzplatform-config")
+SET(PKGS_CHECK_MODULES "glib-2.0 bundle dlog capi-appfw-application appsvc capi-appfw-app-manager ecore elementary libtzplatform-config")
IF (with_x)
PKG_CHECK_MODULES(PKGS REQUIRED ${PKGS_CHECK_MODULES} utilX x11)
ENDIF(with_x)
diff --git a/include/ug-manager.h b/include/ug-manager.h
index f5ac47e..7c7e059 100644
--- a/include/ug-manager.h
+++ b/include/ug-manager.h
@@ -26,6 +26,7 @@
#include <utilX.h>
#endif
+#include <Evas.h>
#include "ug.h"
int ugman_ug_add(ui_gadget_h parent, ui_gadget_h ug);
@@ -41,6 +42,8 @@ int ugman_ug_del_all(void);
int ugman_init(Display *disp, Window xid, void *win, enum ug_option opt);
#endif
+int ugman_init_efl(Evas_Object *win, enum ug_option opt);
+
int ugman_resume(void);
int ugman_pause(void);
int ugman_send_event(enum ug_event event);
diff --git a/include/ui-gadget.h b/include/ui-gadget.h
index 41f5637..bc4a1e8 100644
--- a/include/ui-gadget.h
+++ b/include/ui-gadget.h
@@ -58,6 +58,7 @@
#include <X11/Xlib.h>
#endif
+#include <Evas.h>
#include <app.h>
#ifdef __cplusplus
@@ -163,11 +164,8 @@ struct ug_cbs {
* Easy-to-use macro of ug_init() for EFL
* @see ug_init()
*/
-#ifndef WAYLAND
#define UG_INIT_EFL(win, opt) \
- ug_init((Display *)ecore_x_display_get(), elm_win_xwindow_get(win), \
- win, opt)
-#endif
+ ug_init_efl(win, opt)
/**
* Easy-to-use macro of ug_init() for GTK
@@ -222,6 +220,35 @@ struct ug_cbs {
#ifndef WAYLAND
int ug_init(Display *disp, Window xid, void *win, enum ug_option opt);
#endif
+
+/**
+ * \par Description:
+ * This function initializes default window and indicator state.
+ *
+ * @param[in] win A pointer to window evas object.
+ * @param[in] opt Default indicator state to restore application's indicator state
+ * @return 0 on success, -1 on error
+ *
+ * \pre None
+ * \post None
+ * \see UG_INIT_EFL()
+ * \remarks None
+ *
+ * \par Sample code:
+ * \code
+ * #include <ui-gadget.h>
+ * ...
+ * Evas_Object *win;
+ * ...
+ * // create window
+ * ...
+ * ug_init_efl(win, UG_OPT_INDICATOR_ENABLE);
+ * // for convenience you can use following macro: ELM_INIT_EFL(win, UG_OPT_INDICATOR_ENABLE);
+ * ...
+ * \endcode
+ */
+int ug_init_efl(Evas_Object *win, enum ug_option opt);
+
/**
* \par Description:
* This function creates a UI gadget
diff --git a/packaging/ui-gadget-1.spec b/packaging/ui-gadget-1.spec
index 3c084a9..e8e5113 100644
--- a/packaging/ui-gadget-1.spec
+++ b/packaging/ui-gadget-1.spec
@@ -20,6 +20,7 @@ BuildRequires: pkgconfig(utilX)
BuildRequires: pkgconfig(x11)
%endif
BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(elementary)
BuildRequires: pkgconfig(capi-appfw-application)
BuildRequires: pkgconfig(capi-appfw-app-manager)
BuildRequires: pkgconfig(vconf)
diff --git a/src/manager.c b/src/manager.c
index 015e1eb..5c9cbed 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -29,6 +29,7 @@
#include <utilX.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
+#include <Ecore_X.h>
#endif
#include <Ecore.h>
@@ -910,6 +911,16 @@ int ugman_init(Display *disp, Window xid, void *win, enum ug_option opt)
}
#endif
+int ugman_init_efl(Evas_Object *win, enum ug_option opt)
+{
+#ifndef WAYLAND
+ Ecore_X_Window xwin = elm_win_xwindow_get(win);
+ if (xwin)
+ return ugman_init((Display *)ecore_x_display_get(), xwin, win, opt);
+#endif
+ return -1;
+}
+
int ugman_resume(void)
{
/* RESUME */
diff --git a/src/ug.c b/src/ug.c
index af5bc47..60719bc 100644
--- a/src/ug.c
+++ b/src/ug.c
@@ -111,6 +111,21 @@ UG_API int ug_init(Display *disp, Window xid, void *win, enum ug_option opt)
}
#endif
+UG_API int ug_init_efl(Evas_Object *win, enum ug_option opt)
+{
+ if (!win) {
+ _ERR("ug_init_efl() failed: Invalid arguments");
+ return -1;
+ }
+
+ if (opt < UG_OPT_INDICATOR_ENABLE || opt >= UG_OPT_MAX) {
+ _ERR("ug_init_efl() failed: Invalid option");
+ return -1;
+ }
+
+ return ugman_init_efl(win, opt);
+}
+
UG_API int ug_pause(void)
{
return ugman_pause();