diff options
author | Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | 2014-03-21 16:39:40 +0000 |
---|---|---|
committer | Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | 2014-03-21 16:42:46 +0000 |
commit | a80a5416c25dda1662935616f2c2088449a826d1 (patch) | |
tree | 61f06535fc91a24f0596e6d38e0fd7fec925f231 /demo/gclue-service-agent.c | |
parent | 7773368526278a4bfd9dcc2a6f3ef91d5c5b8b64 (diff) | |
download | geoclue-a80a5416c25dda1662935616f2c2088449a826d1.tar.gz |
demo: Agent prints 'geolocation in use' info
https://bugs.freedesktop.org/show_bug.cgi?id=76268
Diffstat (limited to 'demo/gclue-service-agent.c')
-rw-r--r-- | demo/gclue-service-agent.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/demo/gclue-service-agent.c b/demo/gclue-service-agent.c index fa8d1c4..5b51c23 100644 --- a/demo/gclue-service-agent.c +++ b/demo/gclue-service-agent.c @@ -160,6 +160,43 @@ on_add_agent_ready (GObject *source_object, } static void +print_in_use_info (GDBusProxy *manager_proxy) +{ + GVariant *variant; + + variant = g_dbus_proxy_get_cached_property (manager_proxy, "InUse"); + + if (g_variant_get_boolean (variant)) + g_print (_("Geolocation service in use\n")); + else + g_print (_("Geolocation service not in use\n")); +} + +static void +on_manager_props_changed (GDBusProxy *manager_proxy, + GVariant *changed_properties, + GStrv invalidated_properties, + gpointer user_data) +{ + GVariantIter *iter; + GVariant *value; + gchar *key; + + if (g_variant_n_children (changed_properties) < 0) + return; + + g_variant_get (changed_properties, "a{sv}", &iter); + while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) { + if (strcmp (key, "InUse") != 0) + continue; + + print_in_use_info (manager_proxy); + break; + } + g_variant_iter_free (iter); +} + +static void on_manager_proxy_ready (GObject *source_object, GAsyncResult *res, gpointer user_data) @@ -188,6 +225,11 @@ on_manager_proxy_ready (GObject *source_object, g_task_get_cancellable (task), on_add_agent_ready, task); + print_in_use_info (proxy); + g_signal_connect (proxy, + "g-properties-changed", + G_CALLBACK (on_manager_props_changed), + agent); } static void |