stefan pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=3e8a6e71279c0bb36b5725a624058a889db3b55e

commit 3e8a6e71279c0bb36b5725a624058a889db3b55e
Author: Stefan Schmidt <ste...@osg.samsung.com>
Date:   Wed Aug 5 17:51:22 2015 +0200

    modules/geolocation: Keep track of accuracy and set lower minimal value
    
    Instead of setting the highest accuracy level as minimum we now set the
    lowest level. By doing so we should get a somewhat accurate location in
    any case. Before this change we would just not get any location
    information at all which was confusing and let people think the module
    did not work.
    We also keep track of the AvailableAccuracyLevel property know.
    
    Fixes T2641
---
 src/modules/geolocation/e_mod_main.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/modules/geolocation/e_mod_main.c 
b/src/modules/geolocation/e_mod_main.c
index aa5d2f1..7e6da0d 100644
--- a/src/modules/geolocation/e_mod_main.c
+++ b/src/modules/geolocation/e_mod_main.c
@@ -40,6 +40,7 @@ struct _Instance
    Evas_Object     *popup_accuracy;
    Evas_Object     *popup_description;
    int             in_use;
+   int             available_accur_level;
    Eldbus_Connection *conn;
    Eldbus_Service_Interface *iface;
    Eldbus_Proxy *manager;
@@ -52,6 +53,11 @@ struct _Instance
    const char *description;
 };
 
+#define GCLUE_ACCURACY_LEVEL_NONE 0;
+#define GCLUE_ACCURACY_LEVEL_COUNTRY 1;
+#define GCLUE_ACCURACY_LEVEL_CITY 4;
+#define GCLUE_ACCURACY_LEVEL_NEIGHBORHOOD 5;
+#define GCLUE_ACCURACY_LEVEL_STREET 6;
 #define GCLUE_ACCURACY_LEVEL_EXACT 8;
 
 static Eina_List *geolocation_instances = NULL;
@@ -327,7 +333,7 @@ cb_client_object_get(Eldbus_Proxy *proxy EINA_UNUSED, void 
*data, Eldbus_Pending
 
    desktopid = "Enlightenment-module";
    geo_clue2_client_desktop_id_propset(inst->client, cb_client_prop_set, inst, 
desktopid);
-   accuracy = GCLUE_ACCURACY_LEVEL_EXACT;
+   accuracy = GCLUE_ACCURACY_LEVEL_NONE;
    geo_clue2_client_requested_accuracy_level_propset(inst->client, 
cb_client_prop_set, inst, (void*)(intptr_t)accuracy);
 
    eldbus_proxy_signal_handler_add(inst->client, "LocationUpdated", 
cb_client_location_updated_signal, inst);
@@ -357,6 +363,14 @@ cb_manager_props_changed(void *data, Eldbus_Proxy *proxy 
EINA_UNUSED, void *even
        else
           edje_object_signal_emit(inst->icon, "e,state,location_off", "e");
      }
+   if (strcmp(ev->name, "AvailableAccuracyLevel") == 0)
+     {
+        eina_value_setup(&v, EINA_VALUE_TYPE_INT);
+        eina_value_convert(ev->value, &v);
+        eina_value_get(&v, &val);
+        inst->available_accur_level = val;
+        DBG("Manager AvailableAccuracyLevel property changed to %i", 
inst->available_accur_level);
+     }
 }
 
 static E_Gadcon_Client *

-- 


Reply via email to