[gnome-control-center] user-accounts: Add password generation back to the password dialog
- From: Stefan Walter <stefw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] user-accounts: Add password generation back to the password dialog
- Date: Fri, 16 Aug 2013 21:10:14 +0000 (UTC)
commit a3d0840bdd5e4260a066a83c9a7ed59f1665fe30
Author: Ondrej Holy <oholy redhat com>
Date: Tue Aug 6 15:43:23 2013 +0200
user-accounts: Add password generation back to the password dialog
https://bugzilla.gnome.org/show_bug.cgi?id=706067
panels/user-accounts/um-password-dialog.c | 32 ++++++++++++++++++++++++++++-
panels/user-accounts/um-utils.c | 8 +++++++
panels/user-accounts/um-utils.h | 1 +
3 files changed, 40 insertions(+), 1 deletions(-)
---
diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c
index 4ffb36a..a6d1ac3 100644
--- a/panels/user-accounts/um-password-dialog.c
+++ b/panels/user-accounts/um-password-dialog.c
@@ -88,7 +88,9 @@ update_password_strength (UmPasswordDialog *um)
if (strength_level > 0) {
set_entry_validation_checkmark (GTK_ENTRY (um->password_entry));
- } else {
+ } else if (strlen (password) == 0) {
+ set_entry_generation_icon (GTK_ENTRY (um->password_entry));
+ } else {
clear_entry_validation_error (GTK_ENTRY (um->password_entry));
}
@@ -308,6 +310,8 @@ password_entry_changed (GtkEntry *entry,
GParamSpec *pspec,
UmPasswordDialog *um)
{
+ const char *password;
+
if (um->password_entry_timeout_id != 0) {
g_source_remove (um->password_entry_timeout_id);
um->password_entry_timeout_id = 0;
@@ -317,6 +321,11 @@ password_entry_changed (GtkEntry *entry,
clear_entry_validation_error (GTK_ENTRY (um->verify_entry));
gtk_widget_set_sensitive (um->ok_button, FALSE);
+ password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
+ if (strlen (password) == 0) {
+ gtk_entry_set_visibility (GTK_ENTRY (um->password_entry), FALSE);
+ }
+
um->password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
(GSourceFunc) password_entry_timeout,
um);
@@ -404,6 +413,23 @@ old_password_entry_changed (GtkEntry *entry,
um);
}
+static void
+on_generate (GtkEntry *entry,
+ GtkEntryIconPosition pos,
+ GdkEventButton *event,
+ UmPasswordDialog *um)
+{
+ gchar *pwd;
+
+ pwd = pw_generate ();
+
+ gtk_entry_set_text (GTK_ENTRY (um->password_entry), pwd);
+ gtk_entry_set_text (GTK_ENTRY (um->verify_entry), pwd);
+ gtk_entry_set_visibility (GTK_ENTRY (um->password_entry), TRUE);
+
+ g_free (pwd);
+}
+
UmPasswordDialog *
um_password_dialog_new (void)
{
@@ -454,6 +480,7 @@ um_password_dialog_new (void)
g_signal_connect_swapped (widget, "activate", G_CALLBACK (password_entry_timeout), um);
gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE);
um->password_entry = widget;
+ g_signal_connect (widget, "icon-press", G_CALLBACK (on_generate), um);
widget = (GtkWidget *) gtk_builder_get_object (builder, "old-password-entry");
g_signal_connect_after (widget, "focus-out-event",
@@ -523,6 +550,9 @@ um_password_dialog_set_user (UmPasswordDialog *um,
gtk_entry_set_text (GTK_ENTRY (um->verify_entry), "");
gtk_entry_set_text (GTK_ENTRY (um->old_password_entry), "");
+ gtk_entry_set_visibility (GTK_ENTRY (um->password_entry), FALSE);
+ gtk_entry_set_visibility (GTK_ENTRY (um->verify_entry), FALSE);
+
if (act_user_get_uid (um->user) == getuid ()) {
mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR);
gtk_widget_hide (um->action_radio_box);
diff --git a/panels/user-accounts/um-utils.c b/panels/user-accounts/um-utils.c
index a411f92..b4a9d43 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_generation_icon (GtkEntry *entry)
+{
+ g_object_set (entry, "caps-lock-warning", FALSE, NULL);
+ gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "system-run-symbolic");
+ gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, TRUE);
+}
+
+void
set_entry_validation_checkmark (GtkEntry *entry)
{
g_object_set (entry, "caps-lock-warning", FALSE, NULL);
diff --git a/panels/user-accounts/um-utils.h b/panels/user-accounts/um-utils.h
index e15a2de..90aff72 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_generation_icon (GtkEntry *entry);
void set_entry_validation_checkmark (GtkEntry *entry);
void set_entry_validation_error (GtkEntry *entry,
const gchar *text);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]