static void autologin_changed (GObject *object, GParamSpec *pspec, UmUserPanelPrivate *d) { gboolean active; UmUser *user; active = gtk_switch_get_active (GTK_SWITCH (object)); user = get_selected_user (d); if (active != um_user_get_automatic_login (user)) { um_user_set_automatic_login (user, active); if (um_user_get_automatic_login (user)) { GSList *list; GSList *l; list = um_user_manager_list_users (d->um); for (l = list; l != NULL; l = l->next) { UmUser *u = l->data; if (um_user_get_uid (u) != um_user_get_uid (user)) { um_user_set_automatic_login (user, FALSE); } } g_slist_free (list); } } g_object_unref (user); }
static void users_loaded (UmUserManager *manager, UmLoginOptions *d) { GSList *list, *l; UmUser *user; list = um_user_manager_list_users (manager); for (l = list; l; l = l->next) { user = l->data; user_added (manager, user, d); } g_slist_free (list); g_signal_connect (manager, "user-added", G_CALLBACK (user_added), d); g_signal_connect (manager, "user-removed", G_CALLBACK (user_removed), d); g_signal_connect (manager, "user-changed", G_CALLBACK (user_changed), d); }
static void users_loaded (UmUserManager *manager, UmUserPanelPrivate *d) { GSList *list, *l; UmUser *user; GtkWidget *dialog; if (um_user_manager_no_service (d->um)) { dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (d->main_box)), GTK_DIALOG_MODAL, GTK_MESSAGE_OTHER, GTK_BUTTONS_CLOSE, _("Failed to contact the accounts service")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("Please make sure that the AccountService is installed and enabled.")); g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); gtk_widget_show (dialog); gtk_widget_set_sensitive (d->main_box, FALSE); } list = um_user_manager_list_users (d->um); g_debug ("Got %d users\n", g_slist_length (list)); g_signal_connect (d->um, "user-changed", G_CALLBACK (user_changed), d); for (l = list; l; l = l->next) { user = l->data; g_debug ("adding user %s\n", um_user_get_real_name (user)); user_added (d->um, user, d); } g_slist_free (list); g_signal_connect (d->um, "user-added", G_CALLBACK (user_added), d); g_signal_connect (d->um, "user-removed", G_CALLBACK (user_removed), d); }
void um_add_user_languages (GtkWidget *combo) { GHashTable *seen; GSList *users, *l; UmUser *user; const char *lang; char *name; char *language; GtkTreeIter iter; UmUserManager *manager; GtkTreeModel *model; GtkListStore *store; model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); store = GTK_LIST_STORE (model); gtk_list_store_clear (store); seen = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); manager = um_user_manager_ref_default (); users = um_user_manager_list_users (manager); g_object_unref (manager); for (l = users; l; l = l->next) { user = l->data; lang = um_user_get_language (user); if (!lang || !language_has_font (lang)) { continue; } name = gdm_normalize_language_name (lang); if (g_hash_table_lookup (seen, name)) { g_free (name); continue; } g_hash_table_insert (seen, name, GINT_TO_POINTER (TRUE)); language = gdm_get_language_from_name (name, NULL); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, LOCALE_COL, name, DISPLAY_LOCALE_COL, language, -1); g_free (language); } g_slist_free (users); /* Make sure the current locale is present */ lang = (const gchar *) setlocale (LC_MESSAGES, NULL); name = gdm_normalize_language_name (lang); if (!g_hash_table_lookup (seen, name)) { language = gdm_get_language_from_name (name, NULL); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, LOCALE_COL, name, DISPLAY_LOCALE_COL, language, -1); g_free (language); } g_free (name); g_hash_table_destroy (seen); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other..."), -1); }
void um_photo_dialog_set_user (UmPhotoDialog *um, UmUser *user) { UmUserManager *manager; GSList *list, *l; UmUser *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 = um_user_manager_ref_default (); list = um_user_manager_list_users (manager); g_object_unref (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 = um_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"), um_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); } }