adding support for elocation

SVN revision: 80657
This commit is contained in:
Flavio Vinicius Alvares Ceolin 2012-12-11 14:05:48 +00:00
parent 5a7e0de603
commit b470aaa0f2
16 changed files with 194 additions and 0 deletions

View File

@ -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:

View 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}"

View 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@ \

View 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@ \

View 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@ \

View 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 \

View File

@ -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()

View 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
@ -87,6 +88,10 @@
#include <Efreet_Trash.h>
#endif
#ifdef ELM_ELOCATION
#include <Elocation.h>
#endif
#ifdef ELM_ETHUMB
#include <Ethumb_Client.h>
#endif

View 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@ \

View 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();

View File

@ -56,6 +56,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
*

View 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@ \

View 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@ \

View 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@ \

View 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@ \

View 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@ \