static void auth_cb (PasswdHandler *handler, GError *error, UmPasswordDialog *um) { 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)); } update_sensitivity (um); }
static gboolean validate (GisPasswordPage *page) { GisPasswordPagePrivate *priv = gis_password_page_get_instance_private (page); const gchar *password; const gchar *verify; gint strength_level; const gchar *hint; if (priv->timeout_id != 0) { g_source_remove (priv->timeout_id); priv->timeout_id = 0; } password = gtk_entry_get_text (GTK_ENTRY (priv->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (priv->confirm_entry)); pw_strength (password, NULL, priv->username, &hint, &strength_level); gtk_level_bar_set_value (GTK_LEVEL_BAR (priv->password_strength), strength_level); gtk_label_set_label (GTK_LABEL (priv->password_explanation), hint); gtk_label_set_label (GTK_LABEL (priv->confirm_explanation), ""); priv->valid_confirm = FALSE; priv->valid_password = (strlen (password) && strength_level > 1); if (priv->valid_password) { set_entry_validation_checkmark (GTK_ENTRY (priv->password_entry)); clear_entry_validation_error (GTK_ENTRY (priv->password_entry)); } else { set_entry_validation_error (GTK_ENTRY (priv->password_entry), _("This is a weak password.")); } if (strlen (password) > 0 && strlen (verify) > 0) { priv->valid_confirm = (strcmp (password, verify) == 0); if (!priv->valid_confirm) { gtk_label_set_label (GTK_LABEL (priv->confirm_explanation), _("The passwords do not match.")); } else { set_entry_validation_checkmark (GTK_ENTRY (priv->confirm_entry)); } } update_page_validation (page); return FALSE; }
static void old_password_entry_changed (GtkEntry *entry, GParamSpec *pspec, UmPasswordDialog *um) { if (um->old_password_entry_timeout_id != 0) { g_source_remove (um->old_password_entry_timeout_id); um->old_password_entry_timeout_id = 0; } clear_entry_validation_error (GTK_ENTRY (entry)); 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); }
static void update_password_match (UmPasswordDialog *um) { const char *password; const char *verify; password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); if (strlen (password) > 0 && strlen (verify) > 0) { if (strcmp (password, verify) != 0) { set_entry_validation_error (GTK_ENTRY (um->verify_entry), _("Passwords do not match")); } else { clear_entry_validation_error (GTK_ENTRY (um->verify_entry)); } } }
static gboolean verify_entry_focus_out (GtkWidget *entry, GdkEventFocus *event, UmPasswordDialog *um) { const char *password; const char *verify; password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); if (strlen (password) > 0 && strlen (verify) > 0) { if (strcmp (password, verify) != 0) { set_entry_validation_error (GTK_ENTRY (um->verify_entry), _("Passwords do not match")); } else { clear_entry_validation_error (GTK_ENTRY (um->verify_entry)); } } return FALSE; }