static guint get_num_active_admin (ActUserManager *um) { GSList *list; GSList *l; guint num_admin = 0; list = act_user_manager_list_users (um); for (l = list; l != NULL; l = l->next) { ActUser *u = l->data; if (act_user_get_account_type (u) == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR && !act_user_get_locked (u)) { num_admin++; } } g_slist_free (list); return num_admin; }
static void users_loaded (ActUserManager *manager, GParamSpec *pspec, Accounts *accounts) { if (act_user_manager_no_service (manager)) g_warning ("Can't contact accountsservice"); GSList *list = act_user_manager_list_users (accounts->um); g_signal_connect (accounts->um, "user-changed", G_CALLBACK (user_changed), accounts); g_signal_connect (accounts->um, "user-is-logged-in-changed", G_CALLBACK (user_changed), accounts); g_signal_connect (accounts->um, "user-added", G_CALLBACK (user_added), accounts); g_signal_connect (accounts->um, "user-removed", G_CALLBACK (user_removed), accounts); for (GSList *l = list; l; l = l->next) { ActUser *user = l->data; user_added (accounts->um, user, accounts); } g_slist_free (list); }
void um_photo_dialog_set_user (UmPhotoDialog *um, ActUser *user) { ActUserManager *manager; GSList *list, *l; ActUser *u; GIcon *icon; GEmblem *emblem; GList *children, *c; g_return_if_fail (um != NULL); if (um->user) { g_object_unref (um->user); um->user = NULL; } um->user = user; if (um->user) { g_object_ref (um->user); children = gtk_container_get_children (GTK_CONTAINER (um->photo_popup)); g_list_foreach (children, (GFunc) clear_tip, NULL); manager = act_user_manager_get_default (); list = act_user_manager_list_users (manager); icon = g_themed_icon_new ("avatar-default"); emblem = g_emblem_new (icon); g_object_unref (icon); for (l = list; l; l = l->next) { const char *filename; u = l->data; if (u == user) continue; filename = act_user_get_icon_file (u); if (filename == NULL) continue; for (c = children; c; c = c->next) { const char *f; f = g_object_get_data (G_OBJECT (c->data), "filename"); if (f == NULL) continue; if (strcmp (f, filename) == 0) { char *tip; tip = g_strdup_printf (_("Used by %s"), act_user_get_real_name (u)); set_tip (GTK_WIDGET (c->data), tip, emblem); g_free (tip); break; } } } g_slist_free (list); g_object_unref (emblem); } }