adding support for elocation
authorFlavio Vinicius Alvares Ceolin <flavio.ceolin@profusion.mobi>
Tue, 11 Dec 2012 14:05:48 +0000 (14:05 +0000)
committerFlavio Vinicius Alvares Ceolin <flavio.ceolin@profusion.mobi>
Tue, 11 Dec 2012 14:05:48 +0000 (14:05 +0000)
SVN revision: 80657

16 files changed:
NEWS
configure.ac
doc/widgets/Makefile.am
src/bin/Makefile.am
src/edje_externals/Makefile.am
src/examples/Makefile.am
src/examples/location_example_01.c [new file with mode: 0644]
src/lib/Elementary.h.in
src/lib/Makefile.am
src/lib/elm_main.c
src/lib/elm_need.h
src/modules/access_output/Makefile.am
src/modules/datetime_input_ctxpopup/Makefile.am
src/modules/prefs/Makefile.am
src/modules/test_entry/Makefile.am
src/modules/test_map/Makefile.am

diff --git a/NEWS b/NEWS
index b5a9bb3..4d94764 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -21,6 +21,7 @@ Additions:
    * Add elm_need_edbus() and EDBus.h support with ELM_EDBUS2 macro to integrate edbus (v2). Deprecated elm_need_e_dbus() (e_dbus, v1).
    * Add window profile set/get API in elm_win
    * Add elm_sys_notify.[ch]
+   * Add elm_need_elocation() and Elocation.h support with ELM_ELOCATION macro to integrate elocation.
 
 Improvements:
 
index 4326fdf..36713c7 100644 (file)
@@ -525,6 +525,34 @@ if test "x$want_elementary_edbus2" = "xyes" -a "x$have_elementary_edbus2" = "xno
 fi
 AC_SUBST(ELM_EDBUS2_DEF)
 
+ELM_ELOCATION_DEF="#undef"
+have_elementary_elocation="no"
+want_elementary_elocation="auto"
+AC_ARG_ENABLE([elocation],
+   [AC_HELP_STRING([--disable-elocation], [disable elocation support. @<:@default=detect@:>@])],
+   [want_elementary_elocation=$enableval], [])
+
+if test "x$want_elementary_elocation" != "xno"; then
+    PKG_CHECK_MODULES([ELEMENTARY_ELOCATION],
+       [
+        elocation >= 0.1.0
+       ],
+       [
+        AC_DEFINE(HAVE_ELEMENTARY_ELOCATION, 1, [Elocation support for Elementary])
+        have_elementary_elocation="yes"
+        ELM_ELOCATION_DEF="#define"
+        requirement_elm="elocation >= 1.7.99 ${requirement_elm}"
+       ],
+       [have_elementary_elocation="no"]
+    )
+else
+    have_elementary_elocation="no"
+fi
+if test "x$want_elementary_elocation" = "xyes" -a "x$have_elementary_elocation" = "xno"; then
+    AC_MSG_ERROR([EDBus (v2) support requested, but no elocation found by pkg-config.])
+fi
+AC_SUBST(ELM_ELOCATION_DEF)
+
 ELM_EFREET_DEF="#undef"
 have_elementary_efreet="no"
 want_elementary_efreet="auto"
@@ -851,6 +879,7 @@ echo "    Web (WebKit)...........: ${elementary_web}"
 echo "    Quick Launch...........: ${have_fork}"
 echo "    EIO....................: ${have_eio}"
 echo "    Emotion................: ${have_emotion}"
+echo "    Elocation..............: ${have_elementary_elocation}"
 echo
 echo "  eet......................: ${eet_eet}"
 echo "  edje_cc..................: ${edje_cc}"
index 4e962d6..c64cc1d 100644 (file)
@@ -17,6 +17,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_WINCE_CFLAGS@ \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
index 13e5b33..5a033d6 100644 (file)
@@ -19,6 +19,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \
@@ -145,6 +146,7 @@ elementary_test_LDADD = $(top_builddir)/src/lib/libelementary.la \
        @ELEMENTARY_EDBUS_LIBS@ \
        @ELEMENTARY_EDBUS2_LIBS@ \
        @ELEMENTARY_EFREET_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
        @ELEMENTARY_EMAP_LIBS@ \
        @ELEMENTARY_LIBS@ \
        @EIO_LIBS@ \
@@ -160,6 +162,7 @@ elementary_config_LDADD = $(top_builddir)/src/lib/libelementary.la \
        @ELEMENTARY_EDBUS_LIBS@ \
        @ELEMENTARY_EDBUS2_LIBS@ \
        @ELEMENTARY_EFREET_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
        @ELEMENTARY_EMAP_LIBS@ \
        @ELEMENTARY_LIBS@ \
        @EIO_LIBS@ \
@@ -176,6 +179,7 @@ elementary_codegen_LDADD = \
        @ELEMENTARY_EDBUS_LIBS@ \
        @ELEMENTARY_EDBUS2_LIBS@ \
        @ELEMENTARY_EFREET_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
        @ELEMENTARY_EMAP_LIBS@ \
        @ELEMENTARY_LIBS@ \
        @EIO_LIBS@ \
@@ -206,6 +210,7 @@ elementary_quicklaunch_LDADD = $(top_builddir)/src/lib/libelementary.la \
        @ELEMENTARY_EDBUS_LIBS@ \
        @ELEMENTARY_EDBUS2_LIBS@ \
        @ELEMENTARY_EFREET_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
        @ELEMENTARY_EMAP_LIBS@ \
        @ELEMENTARY_LIBS@ \
        @EIO_LIBS@ \
@@ -232,6 +237,7 @@ elementary_testql_la_LIBADD = $(top_builddir)/src/lib/libelementary.la \
        @ELEMENTARY_EDBUS_LIBS@ \
        @ELEMENTARY_EDBUS2_LIBS@ \
        @ELEMENTARY_EFREET_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
        @ELEMENTARY_EMAP_LIBS@ \
        @ELEMENTARY_LIBS@ \
        @EIO_LIBS@ \
@@ -246,6 +252,7 @@ elementary_testql_LDADD = $(top_builddir)/src/lib/libelementary.la \
        @ELEMENTARY_EDBUS_LIBS@ \
        @ELEMENTARY_EDBUS2_LIBS@ \
        @ELEMENTARY_EFREET_LIBS@ \
+       @ELEMENTARY_ELOCATION_LIBS@ \
        @ELEMENTARY_EMAP_LIBS@ \
        @ELEMENTARY_LIBS@ \
        @EIO_LIBS@ \
index 9f50d44..3dfb933 100644 (file)
@@ -17,6 +17,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_EMAP_CFLAGS@ \
 @ELEMENTARY_ECORE_CON_CFLAGS@ \
index 2e5bff3..22f23e6 100644 (file)
@@ -17,6 +17,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_EMAP_CFLAGS@ \
@@ -107,6 +108,7 @@ layout_example_03.c \
 list_example_01.c \
 list_example_02.c \
 list_example_03.c \
+location_example_01.c \
 map_example_01.c \
 map_example_02.c \
 map_example_03.c \
@@ -244,6 +246,7 @@ layout_example_03 \
 list_example_01 \
 list_example_02 \
 list_example_03 \
+location_example_01 \
 map_example_01 \
 map_example_02 \
 map_example_03 \
diff --git a/src/examples/location_example_01.c b/src/examples/location_example_01.c
new file mode 100644 (file)
index 0000000..c6282af
--- /dev/null
@@ -0,0 +1,98 @@
+//Compile with:
+//gcc -o location_example_01 location_example_01.c -g `pkg-config --cflags --libs elementary`
+
+#include <Elementary.h>
+#ifdef ELM_ELOCATION
+#include <Elocation.h>
+#endif
+
+static Evas_Object *bg, *label, *win;
+
+#ifdef ELM_ELOCATION
+static void
+_print_position(Elocation_Position *position)
+{
+   char buffer[1024];
+
+   if (!position) return;
+   snprintf(buffer, sizeof(buffer),
+           "<b>GeoClue position reply with data from timestamp</b> %i<br/>"
+           "<b>Latitude:</b> %f<br/>"
+           "<b>Longitude:</b> %f<br/>"
+           "<b>Altitude:</b> %f<br/>"
+           "<b>Accuracy level:</b> %i<br/>"
+           "<b>Accuracy horizontal:</b> %f<br/>"
+           "<b>Accuracy vertical:</b> %f",
+           position->timestamp, position->latitude, position->longitude,
+           position->altitude, position->accur->level,
+           position->accur->horizontal, position->accur->vertical);
+   elm_object_text_set(label, buffer);
+}
+
+static Eina_Bool
+_position_changed(void *data, int ev_type, void *event)
+{
+   Elocation_Position *position;
+
+   position = event;
+   _print_position(position);
+   return ECORE_CALLBACK_DONE;
+}
+#endif
+
+EAPI_MAIN int
+elm_main(int argc, char *argv[])
+{
+#ifdef ELM_ELOCATION
+   Elocation_Address *address;
+   Elocation_Position *position;
+#endif
+
+   /* The program will proceed only if Ewebkit library is available. */
+   if (elm_need_elocation() == EINA_FALSE)
+     return -1;
+
+   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+
+   win = elm_win_add(NULL, "Elocation example", ELM_WIN_BASIC);
+   elm_win_autodel_set(win, EINA_TRUE);
+   evas_object_resize(win, 600, 480);
+   evas_object_show(win);
+
+   bg = elm_bg_add(win);
+   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(win, bg);
+   evas_object_show(bg);
+
+   label = elm_label_add(win);
+   elm_label_line_wrap_set(label, ELM_WRAP_CHAR);
+   elm_object_text_set(label, "Getting location ...");
+   evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_label_slide_set(label, EINA_TRUE);
+   evas_object_resize(label, 600, 480);
+   evas_object_show(label);
+
+#ifdef ELM_ELOCATION
+   address = elocation_address_new();
+   position = elocation_position_new();
+
+   ecore_event_handler_add(ELOCATION_EVENT_POSITION, _position_changed, NULL);
+
+   elocation_position_get(position);
+   _print_position(position);
+#endif
+
+   elm_run();
+
+#ifdef ELM_ELOCATION
+   elocation_position_free(position);
+   elocation_address_free(address);
+#endif
+
+   elm_shutdown();
+
+   return 0;
+}
+ELM_MAIN()
+
index 6739579..8787551 100644 (file)
@@ -13,6 +13,7 @@
 @ELM_EDBUS_DEF@ ELM_EDBUS
 @ELM_EDBUS2_DEF@ ELM_EDBUS2
 @ELM_EFREET_DEF@ ELM_EFREET
+@ELM_ELOCATION_DEF@ ELM_ELOCATION
 @ELM_ETHUMB_DEF@ ELM_ETHUMB
 @ELM_WEB_DEF@ ELM_WEB
 @ELM_EMAP_DEF@ ELM_EMAP
 #include <Efreet_Trash.h>
 #endif
 
+#ifdef ELM_ELOCATION
+#include <Elocation.h>
+#endif
+
 #ifdef ELM_ETHUMB
 #include <Ethumb_Client.h>
 #endif
index 528e7b4..8cc584e 100644 (file)
@@ -21,6 +21,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \
@@ -312,6 +313,7 @@ libelementary_la_LIBADD = \
 @ELEMENTARY_EDBUS_LIBS@ \
 @ELEMENTARY_EDBUS2_LIBS@ \
 @ELEMENTARY_EFREET_LIBS@ \
+@ELEMENTARY_ELOCATION_LIBS@ \
 @ELEMENTARY_ETHUMB_LIBS@ \
 @ELEMENTARY_WEB_LIBS@ \
 @ELEMENTARY_EMAP_LIBS@ \
index 1233036..5526e06 100644 (file)
@@ -411,6 +411,32 @@ _elm_unneed_edbus(void)
 #endif
 }
 
+#ifdef ELM_ELOCATION
+static Eina_Bool _elm_need_elocation = EINA_FALSE;
+#endif
+EAPI Eina_Bool
+elm_need_elocation(void)
+{
+#ifdef ELM_ELOCATION
+   if (_elm_need_elocation) return EINA_TRUE;
+   _elm_need_elocation = EINA_TRUE;
+   elocation_init();
+   return EINA_TRUE;
+#else
+   return EINA_FALSE;
+#endif
+}
+
+static void
+_elm_unneed_elocation(void)
+{
+#ifdef ELM_ELOCATION
+   if (!_elm_need_elocation) return;
+   _elm_need_elocation = EINA_FALSE;
+   edbus_shutdown();
+#endif
+}
+
 #ifdef ELM_EFREET
 static Eina_Bool _elm_need_efreet = EINA_FALSE;
 #endif
@@ -627,6 +653,7 @@ elm_quicklaunch_shutdown(void)
    _elm_unneed_efreet();
    _elm_unneed_e_dbus();
    _elm_unneed_edbus();
+   _elm_unneed_elocation();
    _elm_unneed_ethumb();
    _elm_unneed_web();
    ecore_file_shutdown();
index a2f2ec1..f488575 100644 (file)
@@ -57,6 +57,21 @@ EAPI Eina_Bool elm_need_e_dbus(void) EINA_DEPRECATED;
 EAPI Eina_Bool elm_need_edbus(void);
 
 /**
+ * Request that your elementary application needs elocation
+ *
+ * This initializes the elocation library when called and if
+ * support exists it returns EINA_TRUE, otherwise returns
+ * EINA_FALSE. This must be called before any elocation usage.
+ *
+ * @return EINA_TRUE if support exists and initialization succeeded.
+ *
+ * @since 1.8.0
+ *
+ * @ingroup edbus
+ */
+EAPI Eina_Bool elm_need_elocation(void);
+
+/**
  * Request that your elementary application needs ethumb
  *
  * This initializes the Ethumb library when called and if support exists
index e564790..b1c3343 100644 (file)
@@ -18,6 +18,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \
index b8702e4..12c48ac 100644 (file)
@@ -19,6 +19,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \
index 2f1cc43..a819e7a 100644 (file)
@@ -35,6 +35,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \
 @ELEMENTARY_EMAP_CFLAGS@ \
index 536a0c4..b2bbd3d 100644 (file)
@@ -18,6 +18,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \
index 23808b2..35e7e3a 100644 (file)
@@ -18,6 +18,7 @@ AM_CPPFLAGS = \
 @ELEMENTARY_EDBUS_CFLAGS@ \
 @ELEMENTARY_EDBUS2_CFLAGS@ \
 @ELEMENTARY_EFREET_CFLAGS@ \
+@ELEMENTARY_ELOCATION_CFLAGS@ \
 @ELEMENTARY_EWEATHER_CFLAGS@ \
 @ELEMENTARY_ETHUMB_CFLAGS@ \
 @ELEMENTARY_WEB_CFLAGS@ \