static void password_entry_changed (GtkEntry *entry, GParamSpec *pspec, UmPasswordDialog *um) { update_password_strength (um); update_sensitivity (um); }
static void verify_entry_changed (GtkEntry *entry, GParamSpec *pspec, UmPasswordDialog *um) { clear_entry_validation_error (GTK_ENTRY (entry)); update_password_strength (um); update_sensitivity (um); }
static void update_sensitivity (UmPasswordDialog *um) { const gchar *password, *verify; const gchar *old_password; const gchar *tooltip; gboolean can_change; int strength_level; password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); old_password = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry)); /* Don't update the password strength if we didn't enter anything */ if (password && *password == '\0' && verify && *verify == '\0' && old_password && *old_password == '\0') return; strength_level = update_password_strength (um); if (strength_level < 1) { can_change = FALSE; if (password[0] == '\0') { tooltip = _("You need to enter a new password"); } else { tooltip = _("The new password is not strong enough"); } } else if (strcmp (password, verify) != 0) { can_change = FALSE; if (verify[0] == '\0') { tooltip = _("You need to confirm the password"); } else { tooltip = _("The passwords do not match"); } } else if (!um->old_password_ok) { can_change = FALSE; if (old_password[0] == '\0') { tooltip = _("You need to enter your current password"); } else { tooltip = _("The current password is not correct"); } } else { can_change = TRUE; tooltip = NULL; } gtk_widget_set_sensitive (um->ok_button, can_change); gtk_widget_set_tooltip_text (um->ok_button, tooltip); }
static gboolean password_entry_timeout (UmPasswordDialog *um) { update_password_strength (um); update_sensitivity (um); update_password_match (um); um->password_entry_timeout_id = 0; return FALSE; }
static void update_sensitivity (UmPasswordDialog *um) { const gchar *password, *verify; gboolean can_change; int strength; password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); if (um->password_mode == ACT_USER_PASSWORD_MODE_REGULAR) { strength = update_password_strength (um); can_change = strength > 0 && strcmp (password, verify) == 0 && (um->old_password_ok || !gtk_widget_get_visible (um->old_password_entry)); } else { can_change = TRUE; } gtk_widget_set_sensitive (um->ok_button, can_change); }