summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2013-07-23 13:22:49 +0200
committerStef Walter <stefw@redhat.com>2013-08-16 21:56:28 +0200
commitaaf25450ee60dba6e6c4bb046076282c8ad028b1 (patch)
tree9c378afd03b9a2121a55d0ca403bc1aee5212570
parent0395197d37c73baedfd84838841f5488086f3fe9 (diff)
downloadgnome-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.ui12
-rw-r--r--panels/user-accounts/pw-utils.c3
-rw-r--r--panels/user-accounts/um-password-dialog.c31
-rw-r--r--panels/user-accounts/um-utils.c8
-rw-r--r--panels/user-accounts/um-utils.h1
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);