diff options
author | Ondrej Holy <oholy@redhat.com> | 2013-07-23 13:22:49 +0200 |
---|---|---|
committer | Stef Walter <stefw@redhat.com> | 2013-08-16 21:56:28 +0200 |
commit | aaf25450ee60dba6e6c4bb046076282c8ad028b1 (patch) | |
tree | 9c378afd03b9a2121a55d0ca403bc1aee5212570 | |
parent | 0395197d37c73baedfd84838841f5488086f3fe9 (diff) | |
download | gnome-control-center-aaf25450ee60dba6e6c4bb046076282c8ad028b1.tar.gz |
user-accounts: add positive confirmation to the password dialog
Add checkmarks, remove exclam icons, remove tooltips, change
password hints and decrese timeout (by design).
https://bugzilla.gnome.org/show_bug.cgi?id=702476
-rw-r--r-- | panels/user-accounts/data/password-dialog.ui | 12 | ||||
-rw-r--r-- | panels/user-accounts/pw-utils.c | 3 | ||||
-rw-r--r-- | panels/user-accounts/um-password-dialog.c | 31 | ||||
-rw-r--r-- | panels/user-accounts/um-utils.c | 8 | ||||
-rw-r--r-- | panels/user-accounts/um-utils.h | 1 |
5 files changed, 26 insertions, 29 deletions
diff --git a/panels/user-accounts/data/password-dialog.ui b/panels/user-accounts/data/password-dialog.ui index cb23bc4ad..47ca93ee6 100644 --- a/panels/user-accounts/data/password-dialog.ui +++ b/panels/user-accounts/data/password-dialog.ui @@ -220,18 +220,6 @@ <property name="width">3</property> </packing> </child> - <child> - <object class="GtkImage" id="old-password-checkmark"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-apply</property> - <property name="halign">start</property> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">3</property> - </packing> - </child> </object> <packing> <property name="position">0</property> diff --git a/panels/user-accounts/pw-utils.c b/panels/user-accounts/pw-utils.c index bc265a726..591373e90 100644 --- a/panels/user-accounts/pw-utils.c +++ b/panels/user-accounts/pw-utils.c @@ -115,8 +115,9 @@ pw_error_hint (gint error) case PWQ_ERROR_MIN_LENGTH: return C_("Password hint", "Try to add more letters, numbers and symbols."); case PWQ_ERROR_EMPTY_PASSWORD: - default: return C_("Password hint", "Mix uppercase and lowercase and use a number or two."); + default: + return C_("Password hint", "Good password! Adding more letters, numbers and punctuation will make it stronger."); } } diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c index 5ced5c0ed..0e267bb70 100644 --- a/panels/user-accounts/um-password-dialog.c +++ b/panels/user-accounts/um-password-dialog.c @@ -36,7 +36,7 @@ #include "run-passwd.h" #include "pw-utils.h" -#define PASSWORD_CHECK_TIMEOUT 1000 +#define PASSWORD_CHECK_TIMEOUT 600 struct _UmPasswordDialog { GtkWidget *dialog; @@ -56,7 +56,6 @@ struct _UmPasswordDialog { GtkWidget *old_password_label; GtkWidget *old_password_entry; - GtkWidget *old_password_checkmark; gboolean old_password_ok; gint old_password_entry_timeout_id; @@ -101,6 +100,12 @@ update_password_strength (UmPasswordDialog *um) gtk_widget_set_sensitive (um->verify_entry, strength_level > 0); } + if (strength_level > 0) { + set_entry_validation_checkmark (GTK_ENTRY (um->password_entry)); + } else { + clear_entry_validation_error (GTK_ENTRY (um->password_entry)); + } + return strength_level; } @@ -293,11 +298,9 @@ update_password_match (UmPasswordDialog *um) if (strcmp (password, verify) != 0) { gtk_label_set_label (GTK_LABEL (um->password_hint), _("The passwords do not match.")); - set_entry_validation_error (GTK_ENTRY (um->verify_entry), - _("Passwords do not match")); } else { - clear_entry_validation_error (GTK_ENTRY (um->verify_entry)); + set_entry_validation_checkmark (GTK_ENTRY (um->verify_entry)); } } } @@ -325,6 +328,8 @@ password_entry_changed (GtkEntry *entry, } clear_entry_validation_error (GTK_ENTRY (entry)); + clear_entry_validation_error (GTK_ENTRY (um->verify_entry)); + gtk_widget_set_sensitive (um->ok_button, FALSE); um->password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT, (GSourceFunc) password_entry_timeout, @@ -353,13 +358,10 @@ auth_cb (PasswdHandler *handler, { if (error) { um->old_password_ok = FALSE; - set_entry_validation_error (GTK_ENTRY (um->old_password_entry), - _("Wrong password")); } else { um->old_password_ok = TRUE; - clear_entry_validation_error (GTK_ENTRY (um->old_password_entry)); - gtk_widget_show (um->old_password_checkmark); + set_entry_validation_checkmark (GTK_ENTRY (um->old_password_entry)); } update_sensitivity (um); @@ -370,6 +372,8 @@ old_password_entry_timeout (UmPasswordDialog *um) { const char *text; + update_sensitivity (um); + text = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry)); if (strlen (text) > 0 && !um->old_password_ok) { passwd_authenticate (um->passwd_handler, text, (PasswdCallback)auth_cb, um); @@ -405,11 +409,10 @@ old_password_entry_changed (GtkEntry *entry, um->old_password_entry_timeout_id = 0; } - gtk_widget_hide (um->old_password_checkmark); clear_entry_validation_error (GTK_ENTRY (entry)); - um->old_password_ok = FALSE; - update_sensitivity (um); + gtk_widget_set_sensitive (um->ok_button, FALSE); + um->old_password_ok = FALSE; um->old_password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT, (GSourceFunc) old_password_entry_timeout, um); @@ -485,8 +488,6 @@ um_password_dialog_new (void) G_CALLBACK (old_password_entry_changed), um); um->old_password_entry = widget; um->old_password_label = (GtkWidget *) gtk_builder_get_object (builder, "old-password-label"); - um->old_password_checkmark = (GtkWidget *) gtk_builder_get_object (builder, "old-password-checkmark"); - um->old_password_entry_timeout_id = 0; widget = (GtkWidget *) gtk_builder_get_object (builder, "verify-entry"); g_signal_connect (widget, "notify::text", @@ -494,7 +495,6 @@ um_password_dialog_new (void) g_signal_connect_after (widget, "focus-out-event", G_CALLBACK (password_entry_focus_out), um); um->verify_entry = widget; - um->password_entry_timeout_id = 0; widget = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator-label"); len = pw_strength_hint_get_width_chars (); @@ -549,7 +549,6 @@ um_password_dialog_set_user (UmPasswordDialog *um, gtk_entry_set_text (GTK_ENTRY (um->password_entry), ""); gtk_entry_set_text (GTK_ENTRY (um->verify_entry), ""); gtk_entry_set_text (GTK_ENTRY (um->old_password_entry), ""); - gtk_widget_hide (um->old_password_checkmark); if (act_user_get_uid (um->user) == getuid ()) { mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR); diff --git a/panels/user-accounts/um-utils.c b/panels/user-accounts/um-utils.c index 529812c7a..a411f92cd 100644 --- a/panels/user-accounts/um-utils.c +++ b/panels/user-accounts/um-utils.c @@ -301,6 +301,14 @@ set_entry_validation_error (GtkEntry *entry, } void +set_entry_validation_checkmark (GtkEntry *entry) +{ + g_object_set (entry, "caps-lock-warning", FALSE, NULL); + gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "object-select-symbolic"); + gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, FALSE); +} + +void clear_entry_validation_error (GtkEntry *entry) { gboolean warning; diff --git a/panels/user-accounts/um-utils.h b/panels/user-accounts/um-utils.h index 71f712a18..e15a2de52 100644 --- a/panels/user-accounts/um-utils.h +++ b/panels/user-accounts/um-utils.h @@ -40,6 +40,7 @@ void setup_tooltip_with_embedded_icon (GtkWidget *widget, gboolean show_tooltip_now (GtkWidget *widget, GdkEvent *event); +void set_entry_validation_checkmark (GtkEntry *entry); void set_entry_validation_error (GtkEntry *entry, const gchar *text); void clear_entry_validation_error (GtkEntry *entry); |