static void gdm_user_chooser_widget_init (GdmUserChooserWidget *widget) { widget->priv = GDM_USER_CHOOSER_WIDGET_GET_PRIVATE (widget); gdm_chooser_widget_set_separator_position (GDM_CHOOSER_WIDGET (widget), GDM_CHOOSER_WIDGET_POSITION_BOTTOM); gdm_chooser_widget_set_in_use_message (GDM_CHOOSER_WIDGET (widget), _("Currently logged in")); setup_icons (widget); }
char * gdm_user_chooser_widget_get_chosen_user_name (GdmUserChooserWidget *widget) { g_return_val_if_fail (GDM_IS_USER_CHOOSER_WIDGET (widget), NULL); return gdm_chooser_widget_get_active_item (GDM_CHOOSER_WIDGET (widget)); }
static void gdm_language_chooser_widget_add_language (GdmLanguageChooserWidget *widget, const char *name) { char *language; char *normalized_name; char *readable_language; char *lang_tag; char *tagged; normalized_name = gdm_normalize_language_name (name); gdm_parse_language_name (name, &lang_tag, NULL, NULL, NULL); language = gdm_get_language_from_name (normalized_name, normalized_name); readable_language = gdm_get_language_from_name (normalized_name, NULL); tagged = g_strdup_printf ("<span lang=\"%s\">%s</span>", lang_tag, language); if (language != NULL) { gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget), normalized_name, NULL, tagged, readable_language, 0, FALSE, FALSE, NULL, NULL); g_free (language); } g_free (readable_language); g_free (tagged); g_free (lang_tag); g_free (normalized_name); }
static gboolean load_users (GdmUserChooserWidget *widget) { if (widget->priv->show_normal_users) { widget->priv->manager = gdm_user_manager_ref_default (); g_signal_connect (widget->priv->manager, "user-added", G_CALLBACK (on_user_added), widget); g_signal_connect (widget->priv->manager, "user-removed", G_CALLBACK (on_user_removed), widget); g_signal_connect (widget->priv->manager, "users-loaded", G_CALLBACK (on_users_loaded), widget); g_signal_connect (widget->priv->manager, "user-is-logged-in-changed", G_CALLBACK (on_user_is_logged_in_changed), widget); g_signal_connect (widget->priv->manager, "user-login-frequency-changed", G_CALLBACK (on_user_login_frequency_changed), widget); } else { gdm_chooser_widget_loaded (GDM_CHOOSER_WIDGET (widget)); } widget->priv->load_idle_id = 0; return FALSE; }
void gdm_user_chooser_widget_set_chosen_user_name (GdmUserChooserWidget *widget, const char *name) { g_return_if_fail (GDM_IS_USER_CHOOSER_WIDGET (widget)); gdm_chooser_widget_set_active_item (GDM_CHOOSER_WIDGET (widget), name); }
static void gdm_language_chooser_widget_init (GdmLanguageChooserWidget *widget) { widget->priv = GDM_LANGUAGE_CHOOSER_WIDGET_GET_PRIVATE (widget); gdm_chooser_widget_set_separator_position (GDM_CHOOSER_WIDGET (widget), GDM_CHOOSER_WIDGET_POSITION_TOP); }
void gdm_user_chooser_widget_set_show_only_chosen (GdmUserChooserWidget *widget, gboolean show_only) { g_return_if_fail (GDM_IS_USER_CHOOSER_WIDGET (widget)); gdm_chooser_widget_set_hide_inactive_items (GDM_CHOOSER_WIDGET (widget), show_only); }
void gdm_language_chooser_widget_set_current_language_name (GdmLanguageChooserWidget *widget, const char *lang_name) { char *name; g_return_if_fail (GDM_IS_LANGUAGE_CHOOSER_WIDGET (widget)); if (lang_name == NULL) { gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget), NULL); return; } name = gdm_normalize_language_name (lang_name); gdm_chooser_widget_set_selected_item (GDM_CHOOSER_WIDGET (widget), name); g_free (name); }
static void add_user_other (GdmUserChooserWidget *widget) { gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget), GDM_USER_CHOOSER_USER_OTHER, NULL, _("Other..."), _("Choose a different account"), 0, FALSE, TRUE); }
static void add_user_guest (GdmUserChooserWidget *widget) { gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget), GDM_USER_CHOOSER_USER_GUEST, widget->priv->stock_person_pixbuf, _("Guest"), _("Login as a temporary guest"), 0, FALSE, TRUE); }
static void add_user_auto (GdmUserChooserWidget *widget) { gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget), GDM_USER_CHOOSER_USER_AUTO, NULL, _("Automatic Login"), _("Automatically login to the system after selecting options"), 0, FALSE, TRUE); }
char * gdm_language_chooser_widget_get_current_language_name (GdmLanguageChooserWidget *widget) { char *language_name; g_return_val_if_fail (GDM_IS_LANGUAGE_CHOOSER_WIDGET (widget), NULL); language_name = gdm_chooser_widget_get_selected_item (GDM_CHOOSER_WIDGET (widget)); if (language_name == NULL) { language_name = g_strdup (setlocale (LC_MESSAGES, NULL)); } return language_name; }
static void on_user_login_frequency_changed (GdmUserManager *manager, GdmUser *user, GdmUserChooserWidget *widget) { const char *user_name; gulong freq; g_debug ("GdmUserChooserWidget: User login frequency changed: %s", gdm_user_get_user_name (user)); user_name = gdm_user_get_user_name (user); freq = gdm_user_get_login_frequency (user); gdm_chooser_widget_set_item_priority (GDM_CHOOSER_WIDGET (widget), user_name, freq); }
static void on_user_is_logged_in_changed (GdmUserManager *manager, GdmUser *user, GdmUserChooserWidget *widget) { const char *user_name; gboolean is_logged_in; g_debug ("GdmUserChooserWidget: User logged in changed: %s", gdm_user_get_user_name (user)); user_name = gdm_user_get_user_name (user); is_logged_in = gdm_user_get_num_sessions (user) > 0; gdm_chooser_widget_set_item_in_use (GDM_CHOOSER_WIDGET (widget), user_name, is_logged_in); }
static void on_user_removed (GdmUserManager *manager, GdmUser *user, GdmUserChooserWidget *widget) { const char *user_name; g_debug ("GdmUserChooserWidget: User removed: %s", gdm_user_get_user_name (user)); /* wait for all users to be loaded */ if (! widget->priv->loaded) { return; } user_name = gdm_user_get_user_name (user); gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget), user_name); }
static void add_user (GdmUserChooserWidget *widget, GdmUser *user) { GdkPixbuf *pixbuf; char *tooltip; gboolean is_logged_in; int size; if (!widget->priv->show_normal_users) { return; } size = get_icon_height_for_widget (widget); pixbuf = gdm_user_render_icon (user, size); if (pixbuf == NULL && widget->priv->stock_person_pixbuf != NULL) { pixbuf = g_object_ref (widget->priv->stock_person_pixbuf); } tooltip = g_strdup_printf (_("Log in as %s"), gdm_user_get_user_name (user)); is_logged_in = gdm_user_get_num_sessions (user) > 0; g_debug ("GdmUserChooserWidget: User added name:%s logged-in:%d pixbuf:%p", gdm_user_get_user_name (user), is_logged_in, pixbuf); gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget), gdm_user_get_user_name (user), pixbuf, gdm_user_get_real_name (user), tooltip, gdm_user_get_login_frequency (user), is_logged_in, FALSE); g_free (tooltip); if (pixbuf != NULL) { g_object_unref (pixbuf); } }
static void on_users_loaded (GdmUserManager *manager, GdmUserChooserWidget *widget) { GSList *users; widget->priv->loaded = TRUE; g_debug ("GdmUserChooserWidget: Users loaded"); users = gdm_user_manager_list_users (manager); while (users != NULL) { add_user (widget, users->data); users = g_slist_delete_link (users, users); } gtk_widget_grab_focus (GTK_WIDGET (widget)); gdm_chooser_widget_loaded (GDM_CHOOSER_WIDGET (widget)); }
static void load_icons (GdmUserChooserWidget *widget) { GdkPixbuf *old_pixbuf; IconUpdateData data; if (widget->priv->logged_in_pixbuf != NULL) { g_object_unref (widget->priv->logged_in_pixbuf); } widget->priv->logged_in_pixbuf = get_logged_in_pixbuf (widget); old_pixbuf = widget->priv->stock_person_pixbuf; widget->priv->stock_person_pixbuf = get_stock_person_pixbuf (widget); /* update the icons in the model */ data.old_icon = old_pixbuf; data.new_icon = widget->priv->stock_person_pixbuf; gdm_chooser_widget_update_foreach_item (GDM_CHOOSER_WIDGET (widget), (GdmChooserUpdateForeachFunc)update_icons, &data); if (old_pixbuf != NULL) { g_object_unref (old_pixbuf); } }
static void remove_user_auto (GdmUserChooserWidget *widget) { gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget), GDM_USER_CHOOSER_USER_AUTO); }
static void remove_user_guest (GdmUserChooserWidget *widget) { gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget), GDM_USER_CHOOSER_USER_GUEST); }
static void remove_user_other (GdmUserChooserWidget *widget) { gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget), GDM_USER_CHOOSER_USER_OTHER); }