diff options
author | Lionel Le Folgoc <mrpouit@ubuntu.com> | 2012-08-30 19:35:47 +0200 |
---|---|---|
committer | Lionel Le Folgoc <mrpouit@ubuntu.com> | 2012-08-30 19:35:47 +0200 |
commit | fdb8e119b9e6365436ecc43c75f5417ec106ddaf (patch) | |
tree | 408c8bf5ec6207c5ed9db9c84295b36b7bf54b44 | |
parent | 70deb6f5c6ea562a5b2cae66329a7996d02d0e15 (diff) | |
download | lightdm-gtk-greeter-fdb8e119b9e6365436ecc43c75f5417ec106ddaf.tar.gz |
Rename the 'Login' button to 'Unlock' when the user is already logged in
-rw-r--r-- | src/lightdm-gtk-greeter.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c index 9a250c3..51c8d22 100644 --- a/src/lightdm-gtk-greeter.c +++ b/src/lightdm-gtk-greeter.c @@ -23,6 +23,7 @@ static LightDMGreeter *greeter; static GKeyFile *state; static gchar *state_filename; static GtkWindow *login_window, *panel_window; +static GtkButton *login_button; static GtkLabel *message_label, *prompt_label; static GtkWidget *login_box, *prompt_box; static GtkEntry *prompt_entry; @@ -144,6 +145,24 @@ set_message_label (const gchar *text) } static void +set_login_button_label (const gchar *username) +{ + LightDMUser *user; + gboolean logged_in = FALSE; + + user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), username); + /* Show 'Unlock' instead of 'Login' for an already logged in user */ + logged_in = user && lightdm_user_get_logged_in (user); + if (logged_in) + gtk_button_set_label (login_button, _("Unlock")); + else + gtk_button_set_label (login_button, _("Login")); + /* and disable the session and language comboboxes */ + gtk_widget_set_sensitive (GTK_WIDGET (session_combo), !logged_in); + gtk_widget_set_sensitive (GTK_WIDGET (language_combo), !logged_in); +} + +static void start_authentication (const gchar *username) { gchar *data; @@ -272,6 +291,7 @@ user_combobox_active_changed_cb (GtkComboBox *widget, LightDMGreeter *greeter) gchar *user; gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 0, &user, -1); + set_login_button_label (user); start_authentication (user); g_free (user); } @@ -634,6 +654,7 @@ load_user_list () if (matched) { gtk_combo_box_set_active_iter (user_combo, &iter); + set_login_button_label (selected_user); start_authentication (selected_user); break; } @@ -855,6 +876,7 @@ main (int argc, char **argv) login_window = GTK_WINDOW (gtk_builder_get_object (builder, "login_window")); login_box = GTK_WIDGET (gtk_builder_get_object (builder, "login_box")); + login_button = GTK_BUTTON (gtk_builder_get_object (builder, "login_button")); prompt_box = GTK_WIDGET (gtk_builder_get_object (builder, "prompt_box")); prompt_label = GTK_LABEL (gtk_builder_get_object (builder, "prompt_label")); prompt_entry = GTK_ENTRY (gtk_builder_get_object (builder, "prompt_entry")); |