{
AccountsUser *user = ACCOUNTS_USER (proxy);
GVariantIter *iter;
- GVariant *item;
+ const gchar *key;
if (changed_properties != NULL)
{
g_variant_get (changed_properties, "a{sv}", &iter);
- while ((item = g_variant_iter_next_value (iter)) != NULL)
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
{
- const gchar *key;
- g_variant_get (item,
- "{sv}",
- &key,
- NULL);
if (g_strcmp0 (key, "AutomaticLogin") == 0)
g_object_notify (G_OBJECT (user), "automatic-login");
else if (g_strcmp0 (key, "RealName") == 0)
else if (g_strcmp0 (key, "UserName") == 0)
g_object_notify (G_OBJECT (user), "user-name");
}
+ g_variant_iter_free (iter);
}
}
if (value != NULL)
{
g_variant_get (value, "(s)", &ret);
- ret = g_strdup (ret);
g_variant_unref (value);
}
return ret;
if (value != NULL)
{
g_variant_get (value, "(s)", &ret);
- ret = g_strdup (ret);
g_variant_unref (value);
}
return ret;
}
/* ---------------------------------------------------------------------------------------------------- */
-/* Example usage of the AccountsUser type */
-/* ---------------------------------------------------------------------------------------------------- */
-
-static void
-print_user (AccountsUser *user)
-{
- g_print (" user-name = `%s'\n", accounts_user_get_user_name (user));
- g_print (" real-name = `%s'\n", accounts_user_get_real_name (user));
- g_print (" automatic-login = %s\n", accounts_user_get_automatic_login (user) ? "true" : "false");
-}
-
-static void
-on_changed (AccountsUser *user,
- gpointer user_data)
-{
- g_print ("+++ Received the AccountsUser::changed signal\n");
- print_user (user);
-}
-
-static void
-on_notify (GObject *object,
- GParamSpec *pspec,
- gpointer user_data)
-{
- AccountsUser *user = ACCOUNTS_USER (object);
- g_print ("+++ Received the GObject::notify signal for property `%s'\n",
- pspec->name);
- print_user (user);
-}
-
-static void
-on_proxy_appeared (GDBusConnection *connection,
- const gchar *name,
- const gchar *name_owner,
- GDBusProxy *proxy,
- gpointer user_data)
-{
- AccountsUser *user = ACCOUNTS_USER (proxy);
-
- g_print ("+++ Acquired proxy for user\n");
- print_user (user);
-
- g_signal_connect (proxy,
- "notify",
- G_CALLBACK (on_notify),
- NULL);
- g_signal_connect (user,
- "changed",
- G_CALLBACK (on_changed),
- NULL);
-}
-
-static void
-on_proxy_vanished (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- g_print ("--- Cannot create proxy for user: no remote object\n");
-}
-
-/* ---------------------------------------------------------------------------------------------------- */
gint
main (gint argc, gchar *argv[])
{
- guint watcher_id;
- GMainLoop *loop;
-
- g_type_init ();
-
- watcher_id = g_bus_watch_proxy (G_BUS_TYPE_SYSTEM,
- "org.freedesktop.Accounts",
- G_BUS_NAME_WATCHER_FLAGS_AUTO_START,
- "/org/freedesktop/Accounts/User500",
- "org.freedesktop.Accounts.User",
- ACCOUNTS_TYPE_USER,
- G_DBUS_PROXY_FLAGS_NONE,
- on_proxy_appeared,
- on_proxy_vanished,
- NULL,
- NULL);
-
- loop = g_main_loop_new (NULL, FALSE);
- g_main_loop_run (loop);
- g_main_loop_unref (loop);
- g_bus_unwatch_proxy (watcher_id);
-
return 0;
}