summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2009-09-12 09:37:29 +0000
committerCarsten Haitzler <raster@rasterman.com>2009-09-12 09:37:29 +0000
commit07faffef0f041ab90220ad48716f84e80d7ac5d3 (patch)
tree9cf79df7332daf65b7e94edc3042ddc895f1afed
parentf981c2e205d187d15d6d3c1112e853a4bb8d8024 (diff)
downloadelementary-07faffef0f041ab90220ad48716f84e80d7ac5d3.tar.gz
1. efreet support.
2. edbus init - if u needit 3. efreet init - if u ned it 4. photo widget test/demo 5. icon desktop test... stuff! SVN revision: 42434
-rw-r--r--configure.ac19
-rw-r--r--elementary.pc.in5
-rw-r--r--src/bin/Makefile.am8
-rw-r--r--src/bin/test.c4
-rw-r--r--src/bin/test_icon_desktops.c112
-rw-r--r--src/bin/test_photo.c63
-rw-r--r--src/bin/test_photocam.c6
-rw-r--r--src/lib/Elementary.h.in10
-rw-r--r--src/lib/Makefile.am5
-rw-r--r--src/lib/elm_main.c74
10 files changed, 296 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac
index 1fcc24327..8578d2871 100644
--- a/configure.ac
+++ b/configure.ac
@@ -190,6 +190,24 @@ PKG_CHECK_MODULES([ELEMENTARY_EDBUS],
)
AC_SUBST(ELM_EDBUS_DEF)
+ELM_EFREET_DEF="#undef"
+have_elementary_efreet="no"
+PKG_CHECK_MODULES([ELEMENTARY_EFREET],
+ [
+ efreet
+ efreet-mime
+ efreet-trash
+ ],
+ [
+ AC_DEFINE(HAVE_ELEMENTARY_EFREET, 1, [Efreet support for Elementary])
+ have_elementary_efreet="yes"
+ ELM_EFREET_DEF="#define"
+ requirement_elm="efreet efreet-mime efreet-trash ${requirement_elm}"
+ ],
+ [have_elementary_efreet="no"]
+)
+AC_SUBST(ELM_EFREET_DEF)
+
ELM_ALLOCA_H_DEF="#undef"
AC_CHECK_HEADER(alloca.h, [ELM_ALLOCA_H_DEF="#define"])
AC_SUBST(ELM_ALLOCA_H_DEF)
@@ -251,6 +269,7 @@ echo " Windows CE....: ${have_elementary_wince}"
echo
echo "Features:"
echo " EDBus.........: ${have_elementary_edbus}"
+echo " EFreet........: ${have_elementary_efreet}"
echo
echo "edje_cc.........: ${edje_cc}"
echo
diff --git a/elementary.pc.in b/elementary.pc.in
index 5fe7c28cb..ecf8705a1 100644
--- a/elementary.pc.in
+++ b/elementary.pc.in
@@ -8,5 +8,6 @@ Description: Mobile device touchscreen widget library
Requires: @requirement_elm@
Version: @VERSION@
Libs: -L${libdir} -lelementary
-Libs.private: @dlopen_libs@ @my_libs@ @ELEMENTARY_LIBS@ @ELEMENTARY_X_LIBS@ @ELEMENTARY_FB_LIBS@ @ELEMENTARY_WINCE_LIBS@ @ELEMENTARY_EDBUS_LIBS@
-Cflags: -I${includedir} -I${includedir}/elementary @ELEMENTARY_CFLAGS@ @ELEMENTARY_X_CFLAGS@ @ELEMENTARY_FB_CFLAGS@ @ELEMENTARY_WINCE_CFLAGS@ @ELEMENTARY_EDBUS_CFLAGS@
+Libs.private: @dlopen_libs@ @my_libs@ @ELEMENTARY_LIBS@ @ELEMENTARY_X_LIBS@
+@ELEMENTARY_FB_LIBS@ @ELEMENTARY_WINCE_LIBS@ @ELEMENTARY_EDBUS_LIBS@ @ELEMENTARY_EFREET_LIBS@
+Cflags: -I${includedir} -I${includedir}/elementary @ELEMENTARY_CFLAGS@ @ELEMENTARY_X_CFLAGS@ @ELEMENTARY_FB_CFLAGS@ @ELEMENTARY_WINCE_CFLAGS@ @ELEMENTARY_EDBUS_CFLAGS@ @ELEMENTARY_EFREET_CFLAGS@
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
index 7d3be9ac6..a6fe54cb7 100644
--- a/src/bin/Makefile.am
+++ b/src/bin/Makefile.am
@@ -13,7 +13,8 @@ AM_CPPFLAGS = \
@ELEMENTARY_FB_CFLAGS@ \
@ELEMENTARY_WIN32_CFLAGS@ \
@ELEMENTARY_WINCE_CFLAGS@ \
-@ELEMENTARY_EDBUS_CFLAGS@
+@ELEMENTARY_EDBUS_CFLAGS@ \
+@ELEMENTARY_EFREET_CFLAGS@
if ELEMENTARY_WINDOWS_BUILD
AM_CPPFLAGS += -DELEMENTARY_BUILD
@@ -57,7 +58,10 @@ test_separator.c \
test_scroller.c \
test_spinner.c \
test_index.c \
-test_photocam.c
+test_photocam.c \
+test_photo.c \
+test_icon_desktops.c
+
elementary_test_LDADD = $(top_builddir)/src/lib/libelementary.la
elementary_test_LDFLAGS =
diff --git a/src/bin/test.c b/src/bin/test.c
index f6c4dcf2d..41f629498 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -48,6 +48,8 @@ void test_scroller(void *data, Evas_Object *obj, void *event_info);
void test_spinner(void *data, Evas_Object *obj, void *event_info);
void test_index(void *data, Evas_Object *obj, void *event_info);
void test_photocam(void *data, Evas_Object *obj, void *event_info);
+void test_photo(void *data, Evas_Object *obj, void *event_info);
+void test_icon_desktops(void *data, Evas_Object *obj, void *event_info);
static void
my_win_del(void *data, Evas_Object *obj, void *event_info)
@@ -177,6 +179,8 @@ my_win_main(void)
elm_list_item_append(li, "Spinner", NULL, NULL, test_spinner, NULL);
elm_list_item_append(li, "Index", NULL, NULL, test_index, NULL);
elm_list_item_append(li, "Photocam", NULL, NULL, test_photocam, NULL);
+ elm_list_item_append(li, "Photo", NULL, NULL, test_photo, NULL);
+ elm_list_item_append(li, "Icon Desktops", NULL, NULL, test_icon_desktops, NULL);
elm_list_go(li);
diff --git a/src/bin/test_icon_desktops.c b/src/bin/test_icon_desktops.c
new file mode 100644
index 000000000..dae810e84
--- /dev/null
+++ b/src/bin/test_icon_desktops.c
@@ -0,0 +1,112 @@
+#include <Elementary.h>
+
+static Elm_Genlist_Item_Class it_desk;
+
+static char *
+desk_gl_label_get(const void *data, Evas_Object *obj, const char *part)
+{
+#ifdef ELM_EFREET
+ Efreet_Desktop *d = (Efreet_Desktop *)data;
+ return strdup(d->name);
+#else
+ return NULL;
+#endif
+}
+static Evas_Object *
+desk_gl_icon_get(const void *data, Evas_Object *obj, const char *part)
+{
+ // FIXME: elm_icon should grok this
+#ifdef ELM_EFREET
+ Efreet_Desktop *d = (Efreet_Desktop *)data;
+ char *path;
+ Evas_Object *ic;
+ ic = elm_icon_add(obj);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ if (!(!strcmp(part, "elm.swallow.icon"))) return ic;
+ if (!d->icon) return ic;
+ path = efreet_icon_path_find("default", d->icon, 48);
+ if (!path)
+ {
+ path = efreet_icon_path_find("hicolor", d->icon, 48);
+ if (!path)
+ {
+ path = efreet_icon_path_find("gnome", d->icon, 48);
+ if (!path)
+ {
+ path = efreet_icon_path_find("Human", d->icon, 48);
+ }
+ }
+ }
+ if (path)
+ {
+ elm_icon_file_set(ic, path, NULL);
+ free(path);
+ return ic;
+ }
+ return ic;
+#else
+ return NULL;
+#endif
+}
+static void
+desk_gl_del(const void *data, Evas_Object *obj)
+{
+#ifdef ELM_EFREET
+ Efreet_Desktop *d = (Efreet_Desktop *)data;
+ efreet_desktop_free(d);
+#endif
+}
+
+static void
+desktop_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ printf("sel\n");
+}
+
+void
+test_icon_desktops(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *win, *bg, *gl;
+ Eina_List *desktops, *l;
+
+ win = elm_win_add(NULL, "icon_desktops", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Icon Desktops");
+ elm_win_autodel_set(win, 1);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, 1.0, 1.0);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ it_desk.item_style = "default";
+ it_desk.func.label_get = desk_gl_label_get;
+ it_desk.func.icon_get = desk_gl_icon_get;
+ it_desk.func.state_get = NULL;
+ it_desk.func.del = desk_gl_del;
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_weight_set(gl, 1.0, 1.0);
+ elm_win_resize_object_add(win, gl);
+ evas_object_show(gl);
+
+#ifdef ELM_EFREET
+ elm_need_efreet();
+ desktops = efreet_util_desktop_name_glob_list("*");
+ if (desktops)
+ {
+ Efreet_Desktop *d;
+
+ EINA_LIST_FOREACH(desktops, l, d)
+ {
+ elm_genlist_item_append(gl, &it_desk, d,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ desktop_sel, NULL);
+// efreet_desktop_free(d);
+ }
+ eina_list_free(desktops);
+ }
+#endif
+
+ evas_object_resize(win, 320, 480);
+ evas_object_show(win);
+}
diff --git a/src/bin/test_photo.c b/src/bin/test_photo.c
new file mode 100644
index 000000000..8ff178b99
--- /dev/null
+++ b/src/bin/test_photo.c
@@ -0,0 +1,63 @@
+#include <Elementary.h>
+
+void
+test_photo(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *win, *bg, *sc, *tb, *ph;
+ int i, j, n;
+ char buf[PATH_MAX];
+ const char *img[9] =
+ {
+ "panel_01.jpg",
+ "plant_01.jpg",
+ "rock_01.jpg",
+ "rock_02.jpg",
+ "sky_01.jpg",
+ "sky_02.jpg",
+ "sky_03.jpg",
+ "sky_04.jpg",
+ "wood_01.jpg"
+ };
+
+ win = elm_win_add(NULL, "photo", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Photo");
+ elm_win_autodel_set(win, 1);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, 1.0, 1.0);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ tb = elm_table_add(win);
+ evas_object_size_hint_weight_set(tb, 1.0, 1.0);
+
+ n = 0;
+ for (j = 0; j < 12; j++)
+ {
+ for (i = 0; i < 12; i++)
+ {
+ ph = elm_photo_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/%s",
+ PACKAGE_DATA_DIR, img[n]);
+ n++;
+ if (n >= 9) n = 0;
+ elm_photo_file_set(ph, buf);
+ evas_object_size_hint_weight_set(ph, 1.0, 1.0);
+ evas_object_size_hint_align_set(ph, -1.0, -1.0);
+ elm_photo_size_set(ph, 80);
+ elm_table_pack(tb, ph, i, j, 1, 1);
+ evas_object_show(ph);
+ }
+ }
+
+ sc = elm_scroller_add(win);
+ evas_object_size_hint_weight_set(sc, 1.0, 1.0);
+ elm_win_resize_object_add(win, sc);
+
+ elm_scroller_content_set(sc, tb);
+ evas_object_show(tb);
+ evas_object_show(sc);
+
+ evas_object_resize(win, 300, 300);
+ evas_object_show(win);
+}
diff --git a/src/bin/test_photocam.c b/src/bin/test_photocam.c
index ad2f23d1e..6ea046cfc 100644
--- a/src/bin/test_photocam.c
+++ b/src/bin/test_photocam.c
@@ -12,8 +12,8 @@ test_photocam(void *data, Evas_Object *obj, void *event_info)
"/home/raster/t3.jpg"
};
- win = elm_win_add(NULL, "photo", ELM_WIN_BASIC);
- elm_win_title_set(win, "Photo");
+ win = elm_win_add(NULL, "photocam", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Photocam");
elm_win_autodel_set(win, 1);
bg = elm_bg_add(win);
@@ -25,7 +25,7 @@ test_photocam(void *data, Evas_Object *obj, void *event_info)
evas_object_size_hint_weight_set(ph, 1.0, 1.0);
elm_win_resize_object_add(win, ph);
- elm_photocam_file_set(ph, img[1]);
+ elm_photocam_file_set(ph, img[2]);
evas_object_show(ph);
diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in
index a0165e112..c7bde1c71 100644
--- a/src/lib/Elementary.h.in
+++ b/src/lib/Elementary.h.in
@@ -15,6 +15,7 @@
@ELM_WIN32_DEF@ ELM_WIN32
@ELM_WINCE_DEF@ ELM_WINCE
@ELM_EDBUS_DEF@ ELM_EDBUS
+@ELM_EFREET_DEF@ ELM_EFREET
@ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
@ELM_LIBINTL_H_DEF@ ELM_LIBINTL_H
@@ -75,6 +76,12 @@
# include <E_Hal.h>
#endif
+#ifdef ELM_EFREET
+# include <Efreet.h>
+# include <Efreet_Mime.h>
+# include <Efreet_Trash.h>
+#endif
+
#ifdef EAPI
# undef EAPI
#endif
@@ -161,6 +168,9 @@ extern "C" {
EAPI void elm_quicklaunch_cleanup(void);
EAPI int elm_quicklaunch_fallback(int argc, char **argv);
EAPI char *elm_quicklaunch_exe_path_get(const char *exe);
+
+ EAPI void elm_need_efreet(void);
+ EAPI void elm_need_e_dbus(void);
EAPI void elm_object_scale_set(Evas_Object *obj, double scale);
EAPI double elm_object_scale_get(const Evas_Object *obj);
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index a69660a6b..6f473ebfb 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -13,7 +13,8 @@ AM_CPPFLAGS = \
@ELEMENTARY_FB_CFLAGS@ \
@ELEMENTARY_WIN32_CFLAGS@ \
@ELEMENTARY_WINCE_CFLAGS@ \
-@ELEMENTARY_EDBUS_CFLAGS@
+@ELEMENTARY_EDBUS_CFLAGS@ \
+@ELEMENTARY_EFREET_CFLAGS@
if ELEMENTARY_WINDOWS_BUILD
AM_CPPFLAGS += -DELEMENTARY_BUILD
@@ -79,5 +80,5 @@ els_icon.h
libelementary_la_CFLAGS =
-libelementary_la_LIBADD = @my_libs@ @dlopen_libs@ @ELEMENTARY_LIBS@ @ELEMENTARY_X_LIBS@ @ELEMENTARY_FB_LIBS@ @ELEMENTARY_WIN32_LIBS@ @ELEMENTARY_WINCE_LIBS@ @ELEMENTARY_EDBUS_LIBS@
+libelementary_la_LIBADD = @my_libs@ @dlopen_libs@ @ELEMENTARY_LIBS@ @ELEMENTARY_X_LIBS@ @ELEMENTARY_FB_LIBS@ @ELEMENTARY_WIN32_LIBS@ @ELEMENTARY_WINCE_LIBS@ @ELEMENTARY_EDBUS_LIBS@ @ELEMENTARY_EFREET_LIBS@
libelementary_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c
index 24170a02f..8db228c53 100644
--- a/src/lib/elm_main.c
+++ b/src/lib/elm_main.c
@@ -348,6 +348,76 @@ elm_shutdown(void)
elm_quicklaunch_shutdown();
}
+#ifdef ELM_EDBUS
+static Eina_Bool _elm_need_e_dbus = 0;
+#endif
+EAPI void
+elm_need_e_dbus(void)
+{
+#ifdef ELM_EDBUS
+ if (_elm_need_e_dbus) return;
+ _elm_need_e_dbus = 1;
+ e_dbus_init();
+#endif
+}
+
+static void
+_elm_unneed_e_dbus(void)
+{
+#ifdef ELM_EDBUS
+ if (_elm_need_e_dbus)
+ {
+ _elm_need_e_dbus = 0;
+ e_dbus_shutdown();
+ }
+#endif
+}
+
+#ifdef ELM_EFREET
+static Eina_Bool _elm_need_efreet = 0;
+#endif
+EAPI void
+elm_need_efreet(void)
+{
+#ifdef ELM_EFREET
+ if (_elm_need_efreet) return;
+ _elm_need_efreet = 1;
+ efreet_init();
+ efreet_util_init();
+ efreet_mime_init();
+ efreet_trash_init();
+ /*
+ {
+ Eina_List **list;
+
+ list = efreet_icon_extra_list_get();
+ if (list)
+ {
+ e_user_dir_concat_static(buf, "icons");
+ *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
+ e_prefix_data_concat_static(buf, "data/icons");
+ *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
+ }
+ }
+ */
+#endif
+}
+
+static void
+_elm_unneed_efreet(void)
+{
+#ifdef ELM_EDBUS
+ if (_elm_need_efreet)
+ {
+ _elm_need_efreet = 0;
+ efreet_trash_shutdown();
+ efreet_mime_shutdown();
+ efreet_util_shutdown();
+ efreet_shutdown();
+ }
+#endif
+}
+
EAPI void
elm_quicklaunch_init(int argc, char **argv)
{
@@ -370,7 +440,7 @@ elm_quicklaunch_init(int argc, char **argv)
evas_init();
edje_init();
ecore_evas_init(); // FIXME: check errors
-
+
_elm_exit_handler = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, _elm_signal_exit, NULL);
_elm_appname = strdup(ecore_file_file_get(argv[0]));
@@ -641,6 +711,8 @@ elm_quicklaunch_shutdown(void)
free(_elm_config);
free(_elm_appname);
+ _elm_unneed_efreet();
+ _elm_unneed_e_dbus();
ecore_evas_shutdown();
edje_shutdown();
evas_shutdown();