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 user_added (UmUserManager *um, UmUser *user, UmLoginOptions *d) { GtkComboBox *combo; GtkListStore *store; GtkTreeIter iter; g_debug ("adding user '%s', %d", um_user_get_user_name (user), um_user_get_automatic_login (user)); combo = GTK_COMBO_BOX (d->autologin_combo); store = (GtkListStore*)gtk_combo_box_get_model (combo); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, AUTOLOGIN_NAME_COL, um_user_get_display_name (user), AUTOLOGIN_USER_COL, user, -1); if (um_user_get_automatic_login (user)) { gtk_combo_box_set_active_iter (combo, &iter); } }
static void user_changed (UmUserManager *um, UmUser *user, UmUserPanelPrivate *d) { GtkTreeView *tv; GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; UmUser *current; GdkPixbuf *pixbuf; char *text; gboolean is_autologin; tv = (GtkTreeView *)get_widget (d, "list-treeview"); model = gtk_tree_view_get_model (tv); selection = gtk_tree_view_get_selection (tv); gtk_tree_model_get_iter_first (model, &iter); do { gtk_tree_model_get (model, &iter, USER_COL, ¤t, -1); if (current == user) { pixbuf = um_user_render_icon (user, TRUE, 48); text = get_name_col_str (user); is_autologin = um_user_get_automatic_login (user); gtk_list_store_set (GTK_LIST_STORE (model), &iter, USER_COL, user, FACE_COL, pixbuf, NAME_COL, text, AUTOLOGIN_COL, is_autologin, -1); g_object_unref (pixbuf); g_free (text); g_object_unref (current); break; } if (current) g_object_unref (current); } while (gtk_tree_model_iter_next (model, &iter)); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, USER_COL, ¤t, -1); if (current == user) { show_user (user, d); } if (current) g_object_unref (current); } }
static void user_added (UmUserManager *um, UmUser *user, UmUserPanelPrivate *d) { GtkWidget *widget; GtkTreeModel *model; GtkListStore *store; GtkTreeIter iter; GtkTreeIter dummy; GdkPixbuf *pixbuf; gchar *text; GtkTreeSelection *selection; gint sort_key; gboolean is_autologin; g_debug ("user added: %d %s\n", um_user_get_uid (user), um_user_get_real_name (user)); widget = get_widget (d, "list-treeview"); model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); store = GTK_LIST_STORE (model); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)); pixbuf = um_user_render_icon (user, TRUE, 48); text = get_name_col_str (user); is_autologin = um_user_get_automatic_login (user); if (um_user_get_uid (user) == getuid ()) { sort_key = 1; } else { sort_key = 3; } gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, USER_COL, user, FACE_COL, pixbuf, NAME_COL, text, USER_ROW_COL, TRUE, TITLE_COL, NULL, HEADING_ROW_COL, FALSE, SORT_KEY_COL, sort_key, AUTOLOGIN_COL, is_autologin, -1); g_object_unref (pixbuf); g_free (text); if (sort_key == 1 && !gtk_tree_selection_get_selected (selection, &model, &dummy)) { gtk_tree_selection_select_iter (selection, &iter); } }
static void show_user (UmUser *user, UmUserPanelPrivate *d) { GtkWidget *image; GtkWidget *label; GtkWidget *label2; GtkWidget *label3; GdkPixbuf *pixbuf; gchar *lang; GtkWidget *widget; GtkTreeModel *model; GtkTreeIter iter; pixbuf = um_user_render_icon (user, FALSE, 48); image = get_widget (d, "user-icon-image"); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); image = get_widget (d, "user-icon-image2"); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); g_object_unref (pixbuf); um_photo_dialog_set_user (d->photo_dialog, user); widget = get_widget (d, "full-name-entry"); cc_editable_entry_set_text (CC_EDITABLE_ENTRY (widget), um_user_get_real_name (user)); gtk_widget_set_tooltip_text (widget, um_user_get_user_name (user)); widget = get_widget (d, "account-type-combo"); um_editable_combo_set_active (UM_EDITABLE_COMBO (widget), um_user_get_account_type (user)); widget = get_widget (d, "account-password-button"); um_editable_button_set_text (UM_EDITABLE_BUTTON (widget), get_password_mode_text (user)); widget = get_widget (d, "autologin-switch"); g_signal_handlers_block_by_func (widget, autologin_changed, d); gtk_switch_set_active (GTK_SWITCH (widget), um_user_get_automatic_login (user)); g_signal_handlers_unblock_by_func (widget, autologin_changed, d); gtk_widget_set_sensitive (widget, !um_user_get_locked (user)); widget = get_widget (d, "account-language-combo"); model = um_editable_combo_get_model (UM_EDITABLE_COMBO (widget)); cc_add_user_languages (model); lang = g_strdup (um_user_get_language (user)); if (!lang) lang = cc_common_language_get_current_language (); cc_common_language_get_iter_for_language (model, lang, &iter); um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter); g_free (lang); widget = get_widget (d, "account-fingerprint-notebook"); label = get_widget (d, "account-fingerprint-label"); label2 = get_widget (d, "account-fingerprint-value-label"); label3 = get_widget (d, "account-fingerprint-button-label"); if (um_user_get_uid (user) != getuid() || !set_fingerprint_label (label2, label3)) { gtk_widget_hide (label); gtk_widget_hide (widget); } else { gtk_widget_show (label); gtk_widget_show (widget); } }