user-accounts: Convert UmPasswordDialog to GtkTemplate
This commit is contained in:
parent
ae90438bc8
commit
ad44ad4367
7 changed files with 222 additions and 302 deletions
|
@ -99,7 +99,6 @@ struct _CcUserPanel {
|
||||||
GPermission *permission;
|
GPermission *permission;
|
||||||
CcLanguageChooser *language_chooser;
|
CcLanguageChooser *language_chooser;
|
||||||
|
|
||||||
UmPasswordDialog *password_dialog;
|
|
||||||
UmPhotoDialog *photo_dialog;
|
UmPhotoDialog *photo_dialog;
|
||||||
UmHistoryDialog *history_dialog;
|
UmHistoryDialog *history_dialog;
|
||||||
|
|
||||||
|
@ -1044,12 +1043,17 @@ static void
|
||||||
change_password (CcUserPanel *self)
|
change_password (CcUserPanel *self)
|
||||||
{
|
{
|
||||||
ActUser *user;
|
ActUser *user;
|
||||||
|
UmPasswordDialog *dialog;
|
||||||
|
GtkWindow *parent;
|
||||||
|
|
||||||
user = get_selected_user (self);
|
user = get_selected_user (self);
|
||||||
|
dialog = um_password_dialog_new (user);
|
||||||
|
|
||||||
um_password_dialog_set_user (self->password_dialog, user);
|
parent = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)));
|
||||||
um_password_dialog_show (self->password_dialog,
|
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
|
||||||
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
|
|
||||||
|
gtk_dialog_run (GTK_DIALOG (dialog));
|
||||||
|
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1372,7 +1376,6 @@ cc_user_panel_init (CcUserPanel *self)
|
||||||
|
|
||||||
self->login_screen_settings = settings_or_null ("org.gnome.login-screen");
|
self->login_screen_settings = settings_or_null ("org.gnome.login-screen");
|
||||||
|
|
||||||
self->password_dialog = um_password_dialog_new ();
|
|
||||||
self->photo_dialog = um_photo_dialog_new (GTK_WIDGET (self->user_icon_button));
|
self->photo_dialog = um_photo_dialog_new (GTK_WIDGET (self->user_icon_button));
|
||||||
self->history_dialog = um_history_dialog_new ();
|
self->history_dialog = um_history_dialog_new ();
|
||||||
setup_main_window (self);
|
setup_main_window (self);
|
||||||
|
@ -1388,7 +1391,6 @@ cc_user_panel_dispose (GObject *object)
|
||||||
|
|
||||||
g_clear_object (&self->login_screen_settings);
|
g_clear_object (&self->login_screen_settings);
|
||||||
|
|
||||||
g_clear_pointer (&self->password_dialog, um_password_dialog_free);
|
|
||||||
g_clear_pointer (&self->history_dialog, um_history_dialog_free);
|
g_clear_pointer (&self->history_dialog, um_history_dialog_free);
|
||||||
if (self->account_dialog) {
|
if (self->account_dialog) {
|
||||||
gtk_dialog_response (GTK_DIALOG (self->account_dialog), GTK_RESPONSE_DELETE_EVENT);
|
gtk_dialog_response (GTK_DIALOG (self->account_dialog), GTK_RESPONSE_DELETE_EVENT);
|
||||||
|
|
|
@ -120,8 +120,8 @@ resource_data = files(
|
||||||
'data/carousel.ui',
|
'data/carousel.ui',
|
||||||
'data/history-dialog.ui',
|
'data/history-dialog.ui',
|
||||||
'data/join-dialog.ui',
|
'data/join-dialog.ui',
|
||||||
'data/password-dialog.ui',
|
|
||||||
'data/user-accounts-dialog.css',
|
'data/user-accounts-dialog.css',
|
||||||
|
'um-password-dialog.ui',
|
||||||
)
|
)
|
||||||
|
|
||||||
common_sources += gnome.compile_resources(
|
common_sources += gnome.compile_resources(
|
||||||
|
|
|
@ -31,36 +31,42 @@
|
||||||
#include <act/act.h>
|
#include <act/act.h>
|
||||||
|
|
||||||
#include "um-password-dialog.h"
|
#include "um-password-dialog.h"
|
||||||
|
#include "um-resources.h"
|
||||||
#include "um-utils.h"
|
#include "um-utils.h"
|
||||||
#include "run-passwd.h"
|
#include "run-passwd.h"
|
||||||
#include "pw-utils.h"
|
#include "pw-utils.h"
|
||||||
|
|
||||||
#define PASSWORD_CHECK_TIMEOUT 600
|
#define PASSWORD_CHECK_TIMEOUT 600
|
||||||
|
|
||||||
struct _UmPasswordDialog {
|
struct _UmPasswordDialog
|
||||||
GtkWidget *dialog;
|
{
|
||||||
GtkWidget *action_radio_box;
|
GtkDialog parent_instance;
|
||||||
GtkWidget *action_now_radio;
|
|
||||||
GtkWidget *action_login_radio;
|
GtkBox *action_radio_box;
|
||||||
GtkWidget *password_entry;
|
GtkRadioButton *action_now_radio;
|
||||||
GtkWidget *verify_entry;
|
GtkRadioButton *action_login_radio;
|
||||||
|
GtkButton *ok_button;
|
||||||
|
GtkLabel *old_password_label;
|
||||||
|
GtkEntry *old_password_entry;
|
||||||
|
GtkEntry *password_entry;
|
||||||
|
GtkLabel *password_hint_label;
|
||||||
|
GtkLevelBar *strength_indicator;
|
||||||
|
GtkEntry *verify_entry;
|
||||||
|
GtkLabel *verify_hint_label;
|
||||||
|
|
||||||
gint password_entry_timeout_id;
|
gint password_entry_timeout_id;
|
||||||
GtkWidget *strength_indicator;
|
|
||||||
GtkWidget *ok_button;
|
|
||||||
GtkWidget *password_hint;
|
|
||||||
GtkWidget *verify_hint;
|
|
||||||
|
|
||||||
ActUser *user;
|
ActUser *user;
|
||||||
ActUserPasswordMode password_mode;
|
ActUserPasswordMode password_mode;
|
||||||
|
|
||||||
GtkWidget *old_password_label;
|
|
||||||
GtkWidget *old_password_entry;
|
|
||||||
gboolean old_password_ok;
|
gboolean old_password_ok;
|
||||||
gint old_password_entry_timeout_id;
|
gint old_password_entry_timeout_id;
|
||||||
|
|
||||||
PasswdHandler *passwd_handler;
|
PasswdHandler *passwd_handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (UmPasswordDialog, um_password_dialog, GTK_TYPE_DIALOG)
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
update_password_strength (UmPasswordDialog *um)
|
update_password_strength (UmPasswordDialog *um)
|
||||||
{
|
{
|
||||||
|
@ -71,63 +77,32 @@ update_password_strength (UmPasswordDialog *um)
|
||||||
const gchar *hint;
|
const gchar *hint;
|
||||||
const gchar *verify;
|
const gchar *verify;
|
||||||
|
|
||||||
if (um->user == NULL) {
|
password = gtk_entry_get_text (um->password_entry);
|
||||||
return 0;
|
old_password = gtk_entry_get_text (um->old_password_entry);
|
||||||
}
|
|
||||||
|
|
||||||
password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
|
|
||||||
old_password = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry));
|
|
||||||
username = act_user_get_user_name (um->user);
|
username = act_user_get_user_name (um->user);
|
||||||
|
|
||||||
pw_strength (password, old_password, username,
|
pw_strength (password, old_password, username,
|
||||||
&hint, &strength_level);
|
&hint, &strength_level);
|
||||||
|
|
||||||
gtk_level_bar_set_value (GTK_LEVEL_BAR (um->strength_indicator), strength_level);
|
gtk_level_bar_set_value (um->strength_indicator, strength_level);
|
||||||
gtk_label_set_label (GTK_LABEL (um->password_hint), hint);
|
gtk_label_set_label (um->password_hint_label, hint);
|
||||||
|
|
||||||
if (strength_level > 1) {
|
if (strength_level > 1) {
|
||||||
set_entry_validation_checkmark (GTK_ENTRY (um->password_entry));
|
set_entry_validation_checkmark (um->password_entry);
|
||||||
} else if (strlen (password) == 0) {
|
} else if (strlen (password) == 0) {
|
||||||
set_entry_generation_icon (GTK_ENTRY (um->password_entry));
|
set_entry_generation_icon (um->password_entry);
|
||||||
} else {
|
} else {
|
||||||
clear_entry_validation_error (GTK_ENTRY (um->password_entry));
|
clear_entry_validation_error (um->password_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry));
|
verify = gtk_entry_get_text (um->verify_entry);
|
||||||
if (strlen (verify) == 0) {
|
if (strlen (verify) == 0) {
|
||||||
gtk_widget_set_sensitive (um->verify_entry, strength_level > 1);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->verify_entry), strength_level > 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return strength_level;
|
return strength_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
finish_password_change (UmPasswordDialog *um)
|
|
||||||
{
|
|
||||||
gtk_widget_hide (um->dialog);
|
|
||||||
|
|
||||||
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), "");
|
|
||||||
|
|
||||||
um_password_dialog_set_user (um, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
cancel_password_dialog (GtkButton *button,
|
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
|
||||||
finish_password_change (um);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
dialog_closed (GtkWidget *dialog,
|
|
||||||
gint response_id,
|
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
|
||||||
gtk_widget_destroy (dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
password_changed_cb (PasswdHandler *handler,
|
password_changed_cb (PasswdHandler *handler,
|
||||||
GError *error,
|
GError *error,
|
||||||
|
@ -137,11 +112,11 @@ password_changed_cb (PasswdHandler *handler,
|
||||||
const gchar *primary_text;
|
const gchar *primary_text;
|
||||||
const gchar *secondary_text;
|
const gchar *secondary_text;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (um->dialog, TRUE);
|
gtk_widget_set_sensitive (GTK_WIDGET (um), TRUE);
|
||||||
gdk_window_set_cursor (gtk_widget_get_window (um->dialog), NULL);
|
gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (um)), NULL);
|
||||||
|
|
||||||
if (!error) {
|
if (!error) {
|
||||||
finish_password_change (um);
|
gtk_dialog_response (GTK_DIALOG (um), GTK_RESPONSE_ACCEPT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,43 +124,40 @@ password_changed_cb (PasswdHandler *handler,
|
||||||
primary_text = error->message;
|
primary_text = error->message;
|
||||||
secondary_text = _("Please choose another password.");
|
secondary_text = _("Please choose another password.");
|
||||||
|
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->password_entry), "");
|
gtk_entry_set_text (um->password_entry, "");
|
||||||
gtk_widget_grab_focus (um->password_entry);
|
gtk_widget_grab_focus (GTK_WIDGET (um->password_entry));
|
||||||
|
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->verify_entry), "");
|
gtk_entry_set_text (um->verify_entry, "");
|
||||||
}
|
}
|
||||||
else if (error->code == PASSWD_ERROR_AUTH_FAILED) {
|
else if (error->code == PASSWD_ERROR_AUTH_FAILED) {
|
||||||
primary_text = error->message;
|
primary_text = error->message;
|
||||||
secondary_text = _("Please type your current password again.");
|
secondary_text = _("Please type your current password again.");
|
||||||
|
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->old_password_entry), "");
|
gtk_entry_set_text (um->old_password_entry, "");
|
||||||
gtk_widget_grab_focus (um->old_password_entry);
|
gtk_widget_grab_focus (GTK_WIDGET (um->old_password_entry));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
primary_text = _("Password could not be changed");
|
primary_text = _("Password could not be changed");
|
||||||
secondary_text = error->message;
|
secondary_text = error->message;
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog = gtk_message_dialog_new (GTK_WINDOW (um->dialog),
|
dialog = gtk_message_dialog_new (GTK_WINDOW (um),
|
||||||
GTK_DIALOG_MODAL,
|
GTK_DIALOG_MODAL,
|
||||||
GTK_MESSAGE_ERROR,
|
GTK_MESSAGE_ERROR,
|
||||||
GTK_BUTTONS_CLOSE,
|
GTK_BUTTONS_CLOSE,
|
||||||
"%s", primary_text);
|
"%s", primary_text);
|
||||||
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
|
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
|
||||||
"%s", secondary_text);
|
"%s", secondary_text);
|
||||||
g_signal_connect (dialog, "response",
|
gtk_dialog_run (GTK_DIALOG (dialog));
|
||||||
G_CALLBACK (dialog_closed), um);
|
gtk_widget_destroy (dialog);
|
||||||
gtk_window_present (GTK_WINDOW (dialog));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
accept_password_dialog (GtkButton *button,
|
ok_button_clicked_cb (UmPasswordDialog *um)
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
const gchar *password;
|
const gchar *password;
|
||||||
|
|
||||||
password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
|
password = gtk_entry_get_text (um->password_entry);
|
||||||
|
|
||||||
switch (um->password_mode) {
|
switch (um->password_mode) {
|
||||||
case ACT_USER_PASSWORD_MODE_REGULAR:
|
case ACT_USER_PASSWORD_MODE_REGULAR:
|
||||||
|
@ -199,10 +171,10 @@ accept_password_dialog (GtkButton *button,
|
||||||
*/
|
*/
|
||||||
passwd_change_password (um->passwd_handler, password,
|
passwd_change_password (um->passwd_handler, password,
|
||||||
(PasswdCallback) password_changed_cb, um);
|
(PasswdCallback) password_changed_cb, um);
|
||||||
gtk_widget_set_sensitive (um->dialog, FALSE);
|
gtk_widget_set_sensitive (GTK_WIDGET (um), FALSE);
|
||||||
display = gtk_widget_get_display (um->dialog);
|
display = gtk_widget_get_display (GTK_WIDGET (um));
|
||||||
cursor = gdk_cursor_new_for_display (display, GDK_WATCH);
|
cursor = gdk_cursor_new_for_display (display, GDK_WATCH);
|
||||||
gdk_window_set_cursor (gtk_widget_get_window (um->dialog), cursor);
|
gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (um)), cursor);
|
||||||
gdk_display_flush (display);
|
gdk_display_flush (display);
|
||||||
g_object_unref (cursor);
|
g_object_unref (cursor);
|
||||||
return;
|
return;
|
||||||
|
@ -221,7 +193,7 @@ accept_password_dialog (GtkButton *button,
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
finish_password_change (um);
|
gtk_dialog_response (GTK_DIALOG (um), GTK_RESPONSE_ACCEPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -231,19 +203,19 @@ update_sensitivity (UmPasswordDialog *um)
|
||||||
gboolean can_change;
|
gboolean can_change;
|
||||||
int strength;
|
int strength;
|
||||||
|
|
||||||
password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
|
password = gtk_entry_get_text (um->password_entry);
|
||||||
verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry));
|
verify = gtk_entry_get_text (um->verify_entry);
|
||||||
|
|
||||||
if (um->password_mode == ACT_USER_PASSWORD_MODE_REGULAR) {
|
if (um->password_mode == ACT_USER_PASSWORD_MODE_REGULAR) {
|
||||||
strength = update_password_strength (um);
|
strength = update_password_strength (um);
|
||||||
can_change = strength > 1 && strcmp (password, verify) == 0 &&
|
can_change = strength > 1 && strcmp (password, verify) == 0 &&
|
||||||
(um->old_password_ok || !gtk_widget_get_visible (um->old_password_entry));
|
(um->old_password_ok || !gtk_widget_get_visible (GTK_WIDGET (um->old_password_entry)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
can_change = TRUE;
|
can_change = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_set_sensitive (um->ok_button, can_change);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->ok_button), can_change);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -253,10 +225,10 @@ mode_change (UmPasswordDialog *um,
|
||||||
gboolean active;
|
gboolean active;
|
||||||
|
|
||||||
active = (mode == ACT_USER_PASSWORD_MODE_REGULAR);
|
active = (mode == ACT_USER_PASSWORD_MODE_REGULAR);
|
||||||
gtk_widget_set_sensitive (um->password_entry, active);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->password_entry), active);
|
||||||
gtk_widget_set_sensitive (um->verify_entry, active);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->verify_entry), active);
|
||||||
gtk_widget_set_sensitive (um->old_password_entry, active);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->old_password_entry), active);
|
||||||
gtk_widget_set_sensitive (um->password_hint, active);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->password_hint_label), active);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (um->action_now_radio), active);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (um->action_now_radio), active);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (um->action_login_radio), !active);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (um->action_login_radio), !active);
|
||||||
|
|
||||||
|
@ -265,13 +237,12 @@ mode_change (UmPasswordDialog *um,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
action_changed (GtkRadioButton *radio,
|
action_now_radio_toggled_cb (UmPasswordDialog *um)
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
gint active;
|
gint active;
|
||||||
ActUserPasswordMode mode;
|
ActUserPasswordMode mode;
|
||||||
|
|
||||||
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio));
|
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (um->action_now_radio));
|
||||||
mode = active ? ACT_USER_PASSWORD_MODE_REGULAR : ACT_USER_PASSWORD_MODE_SET_AT_LOGIN;
|
mode = active ? ACT_USER_PASSWORD_MODE_REGULAR : ACT_USER_PASSWORD_MODE_SET_AT_LOGIN;
|
||||||
mode_change (um, mode);
|
mode_change (um, mode);
|
||||||
}
|
}
|
||||||
|
@ -283,18 +254,18 @@ update_password_match (UmPasswordDialog *um)
|
||||||
const char *verify;
|
const char *verify;
|
||||||
const char *message = "";
|
const char *message = "";
|
||||||
|
|
||||||
password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
|
password = gtk_entry_get_text (um->password_entry);
|
||||||
verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry));
|
verify = gtk_entry_get_text (um->verify_entry);
|
||||||
|
|
||||||
if (strlen (verify) > 0) {
|
if (strlen (verify) > 0) {
|
||||||
if (strcmp (password, verify) != 0) {
|
if (strcmp (password, verify) != 0) {
|
||||||
message = _("The passwords do not match.");
|
message = _("The passwords do not match.");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
set_entry_validation_checkmark (GTK_ENTRY (um->verify_entry));
|
set_entry_validation_checkmark (um->verify_entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gtk_label_set_label (GTK_LABEL (um->verify_hint), message);
|
gtk_label_set_label (um->verify_hint_label, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -310,9 +281,9 @@ password_entry_timeout (UmPasswordDialog *um)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
password_entry_changed (GtkEntry *entry,
|
password_entry_changed (UmPasswordDialog *um,
|
||||||
GParamSpec *pspec,
|
GParamSpec *pspec,
|
||||||
UmPasswordDialog *um)
|
GtkEntry *entry)
|
||||||
{
|
{
|
||||||
const char *password;
|
const char *password;
|
||||||
|
|
||||||
|
@ -321,13 +292,13 @@ password_entry_changed (GtkEntry *entry,
|
||||||
um->password_entry_timeout_id = 0;
|
um->password_entry_timeout_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
clear_entry_validation_error (GTK_ENTRY (entry));
|
clear_entry_validation_error (entry);
|
||||||
clear_entry_validation_error (GTK_ENTRY (um->verify_entry));
|
clear_entry_validation_error (um->verify_entry);
|
||||||
gtk_widget_set_sensitive (um->ok_button, FALSE);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->ok_button), FALSE);
|
||||||
|
|
||||||
password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
|
password = gtk_entry_get_text (um->password_entry);
|
||||||
if (strlen (password) == 0) {
|
if (strlen (password) == 0) {
|
||||||
gtk_entry_set_visibility (GTK_ENTRY (um->password_entry), FALSE);
|
gtk_entry_set_visibility (um->password_entry, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
um->password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
um->password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
||||||
|
@ -336,9 +307,7 @@ password_entry_changed (GtkEntry *entry,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
password_entry_focus_out (GtkWidget *entry,
|
password_entry_focus_out_cb (UmPasswordDialog *um)
|
||||||
GdkEventFocus *event,
|
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
if (um->password_entry_timeout_id != 0) {
|
if (um->password_entry_timeout_id != 0) {
|
||||||
g_source_remove (um->password_entry_timeout_id);
|
g_source_remove (um->password_entry_timeout_id);
|
||||||
|
@ -351,9 +320,8 @@ password_entry_focus_out (GtkWidget *entry,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
password_key_press (GtkEntry *entry,
|
password_entry_key_press_cb (UmPasswordDialog *um,
|
||||||
GdkEvent *event,
|
GdkEvent *event)
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
GdkEventKey *key = (GdkEventKey *)event;
|
GdkEventKey *key = (GdkEventKey *)event;
|
||||||
|
|
||||||
|
@ -373,7 +341,7 @@ auth_cb (PasswdHandler *handler,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
um->old_password_ok = TRUE;
|
um->old_password_ok = TRUE;
|
||||||
set_entry_validation_checkmark (GTK_ENTRY (um->old_password_entry));
|
set_entry_validation_checkmark (um->old_password_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
update_sensitivity (um);
|
update_sensitivity (um);
|
||||||
|
@ -386,7 +354,7 @@ old_password_entry_timeout (UmPasswordDialog *um)
|
||||||
|
|
||||||
update_sensitivity (um);
|
update_sensitivity (um);
|
||||||
|
|
||||||
text = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry));
|
text = gtk_entry_get_text (um->old_password_entry);
|
||||||
if (!um->old_password_ok) {
|
if (!um->old_password_ok) {
|
||||||
passwd_authenticate (um->passwd_handler, text, (PasswdCallback)auth_cb, um);
|
passwd_authenticate (um->passwd_handler, text, (PasswdCallback)auth_cb, um);
|
||||||
}
|
}
|
||||||
|
@ -397,9 +365,7 @@ old_password_entry_timeout (UmPasswordDialog *um)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
old_password_entry_focus_out (GtkWidget *entry,
|
old_password_entry_focus_out_cb (UmPasswordDialog *um)
|
||||||
GdkEventFocus *event,
|
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
if (um->old_password_entry_timeout_id != 0) {
|
if (um->old_password_entry_timeout_id != 0) {
|
||||||
g_source_remove (um->old_password_entry_timeout_id);
|
g_source_remove (um->old_password_entry_timeout_id);
|
||||||
|
@ -412,17 +378,15 @@ old_password_entry_focus_out (GtkWidget *entry,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
old_password_entry_changed (GtkEntry *entry,
|
old_password_entry_changed (UmPasswordDialog *um)
|
||||||
GParamSpec *pspec,
|
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
if (um->old_password_entry_timeout_id != 0) {
|
if (um->old_password_entry_timeout_id != 0) {
|
||||||
g_source_remove (um->old_password_entry_timeout_id);
|
g_source_remove (um->old_password_entry_timeout_id);
|
||||||
um->old_password_entry_timeout_id = 0;
|
um->old_password_entry_timeout_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
clear_entry_validation_error (GTK_ENTRY (entry));
|
clear_entry_validation_error (um->old_password_entry);
|
||||||
gtk_widget_set_sensitive (um->ok_button, FALSE);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->ok_button), FALSE);
|
||||||
|
|
||||||
um->old_password_ok = FALSE;
|
um->old_password_ok = FALSE;
|
||||||
um->old_password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
um->old_password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
||||||
|
@ -431,10 +395,7 @@ old_password_entry_changed (GtkEntry *entry,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_generate (GtkEntry *entry,
|
password_entry_icon_press_cb (UmPasswordDialog *um)
|
||||||
GtkEntryIconPosition pos,
|
|
||||||
GdkEventButton *event,
|
|
||||||
UmPasswordDialog *um)
|
|
||||||
{
|
{
|
||||||
gchar *pwd;
|
gchar *pwd;
|
||||||
|
|
||||||
|
@ -442,107 +403,25 @@ on_generate (GtkEntry *entry,
|
||||||
if (pwd == NULL)
|
if (pwd == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->password_entry), pwd);
|
gtk_entry_set_text (um->password_entry, pwd);
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->verify_entry), pwd);
|
gtk_entry_set_text (um->verify_entry, pwd);
|
||||||
gtk_entry_set_visibility (GTK_ENTRY (um->password_entry), TRUE);
|
gtk_entry_set_visibility (um->password_entry, TRUE);
|
||||||
gtk_widget_set_sensitive (um->verify_entry, TRUE);
|
gtk_widget_set_sensitive (GTK_WIDGET (um->verify_entry), TRUE);
|
||||||
|
|
||||||
g_free (pwd);
|
g_free (pwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
UmPasswordDialog *
|
static void
|
||||||
um_password_dialog_new (void)
|
um_password_dialog_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
GtkBuilder *builder;
|
UmPasswordDialog *um = UM_PASSWORD_DIALOG (object);
|
||||||
GError *error;
|
|
||||||
UmPasswordDialog *um;
|
|
||||||
GtkWidget *widget;
|
|
||||||
|
|
||||||
builder = gtk_builder_new ();
|
|
||||||
|
|
||||||
error = NULL;
|
|
||||||
if (!gtk_builder_add_from_resource (builder,
|
|
||||||
"/org/gnome/control-center/user-accounts/password-dialog.ui",
|
|
||||||
&error)) {
|
|
||||||
g_error ("%s", error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
um = g_new0 (UmPasswordDialog, 1);
|
|
||||||
|
|
||||||
um->action_radio_box = (GtkWidget *) gtk_builder_get_object (builder, "action-radio-box");
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "action-now-radio");
|
|
||||||
g_signal_connect (widget, "toggled", G_CALLBACK (action_changed), um);
|
|
||||||
um->action_now_radio = widget;
|
|
||||||
um->action_login_radio = (GtkWidget *) gtk_builder_get_object (builder, "action-login-radio");
|
|
||||||
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "dialog");
|
|
||||||
g_signal_connect (widget, "delete-event",
|
|
||||||
G_CALLBACK (gtk_widget_hide_on_delete), NULL);
|
|
||||||
um->dialog = widget;
|
|
||||||
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "cancel-button");
|
|
||||||
g_signal_connect (widget, "clicked",
|
|
||||||
G_CALLBACK (cancel_password_dialog), um);
|
|
||||||
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "ok-button");
|
|
||||||
g_signal_connect (widget, "clicked",
|
|
||||||
G_CALLBACK (accept_password_dialog), um);
|
|
||||||
gtk_widget_grab_default (widget);
|
|
||||||
um->ok_button = widget;
|
|
||||||
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "password-entry");
|
|
||||||
g_signal_connect (widget, "notify::text",
|
|
||||||
G_CALLBACK (password_entry_changed), um);
|
|
||||||
g_signal_connect_after (widget, "focus-out-event",
|
|
||||||
G_CALLBACK (password_entry_focus_out), um);
|
|
||||||
g_signal_connect (widget, "key-press-event",
|
|
||||||
G_CALLBACK (password_key_press), um);
|
|
||||||
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",
|
|
||||||
G_CALLBACK (old_password_entry_focus_out), um);
|
|
||||||
g_signal_connect (widget, "notify::text",
|
|
||||||
G_CALLBACK (old_password_entry_changed), um);
|
|
||||||
g_signal_connect_swapped (widget, "activate", G_CALLBACK (password_entry_timeout), um);
|
|
||||||
um->old_password_entry = widget;
|
|
||||||
um->old_password_label = (GtkWidget *) gtk_builder_get_object (builder, "old-password-label");
|
|
||||||
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "verify-entry");
|
|
||||||
g_signal_connect (widget, "notify::text",
|
|
||||||
G_CALLBACK (password_entry_changed), um);
|
|
||||||
g_signal_connect_after (widget, "focus-out-event",
|
|
||||||
G_CALLBACK (password_entry_focus_out), um);
|
|
||||||
g_signal_connect_swapped (widget, "activate", G_CALLBACK (password_entry_timeout), um);
|
|
||||||
um->verify_entry = widget;
|
|
||||||
|
|
||||||
um->strength_indicator = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator");
|
|
||||||
|
|
||||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "password-hint");
|
|
||||||
um->password_hint = widget;
|
|
||||||
|
|
||||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "verify-hint");
|
|
||||||
um->verify_hint = widget;
|
|
||||||
|
|
||||||
g_object_unref (builder);
|
|
||||||
|
|
||||||
return um;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
um_password_dialog_free (UmPasswordDialog *um)
|
|
||||||
{
|
|
||||||
gtk_widget_destroy (um->dialog);
|
|
||||||
|
|
||||||
g_clear_object (&um->user);
|
g_clear_object (&um->user);
|
||||||
|
|
||||||
if (um->passwd_handler)
|
if (um->passwd_handler) {
|
||||||
passwd_destroy (um->passwd_handler);
|
passwd_destroy (um->passwd_handler);
|
||||||
|
um->passwd_handler = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (um->old_password_entry_timeout_id != 0) {
|
if (um->old_password_entry_timeout_id != 0) {
|
||||||
g_source_remove (um->old_password_entry_timeout_id);
|
g_source_remove (um->old_password_entry_timeout_id);
|
||||||
|
@ -554,63 +433,91 @@ um_password_dialog_free (UmPasswordDialog *um)
|
||||||
um->password_entry_timeout_id = 0;
|
um->password_entry_timeout_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (um);
|
G_OBJECT_CLASS (um_password_dialog_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
um_password_dialog_set_user (UmPasswordDialog *um,
|
um_password_dialog_class_init (UmPasswordDialogClass *klass)
|
||||||
ActUser *user)
|
|
||||||
{
|
{
|
||||||
gboolean visible;
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||||
|
|
||||||
if (um->user) {
|
object_class->dispose = um_password_dialog_dispose;
|
||||||
g_object_unref (um->user);
|
|
||||||
um->user = NULL;
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/user-accounts/um-password-dialog.ui");
|
||||||
|
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, action_radio_box);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, action_now_radio);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, action_login_radio);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, ok_button);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, old_password_label);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, old_password_entry);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, password_entry);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, password_hint_label);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, strength_indicator);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, verify_entry);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, UmPasswordDialog, verify_hint_label);
|
||||||
|
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, action_now_radio_toggled_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, old_password_entry_changed);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, old_password_entry_focus_out_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, ok_button_clicked_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, password_entry_changed);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, password_entry_focus_out_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, password_entry_icon_press_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, password_entry_key_press_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, password_entry_timeout);
|
||||||
}
|
}
|
||||||
if (user) {
|
|
||||||
|
static void
|
||||||
|
um_password_dialog_init (UmPasswordDialog *um)
|
||||||
|
{
|
||||||
|
g_resources_register (um_get_resource ());
|
||||||
|
|
||||||
|
gtk_widget_init_template (GTK_WIDGET (um));
|
||||||
|
}
|
||||||
|
|
||||||
|
UmPasswordDialog *
|
||||||
|
um_password_dialog_new (ActUser *user)
|
||||||
|
{
|
||||||
|
UmPasswordDialog *um;
|
||||||
|
|
||||||
|
g_return_val_if_fail (ACT_IS_USER (user), NULL);
|
||||||
|
|
||||||
|
um = g_object_new (UM_TYPE_PASSWORD_DIALOG,
|
||||||
|
"use-header-bar", 1,
|
||||||
|
NULL);
|
||||||
|
|
||||||
um->user = g_object_ref (user);
|
um->user = g_object_ref (user);
|
||||||
|
|
||||||
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_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 ()) {
|
if (act_user_get_uid (um->user) == getuid ()) {
|
||||||
|
gboolean visible;
|
||||||
|
|
||||||
mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR);
|
mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR);
|
||||||
gtk_widget_hide (um->action_radio_box);
|
gtk_widget_hide (GTK_WIDGET (um->action_radio_box));
|
||||||
|
|
||||||
visible = (act_user_get_password_mode (user) != ACT_USER_PASSWORD_MODE_NONE);
|
visible = (act_user_get_password_mode (user) != ACT_USER_PASSWORD_MODE_NONE);
|
||||||
gtk_widget_set_visible (um->old_password_label, visible);
|
gtk_widget_set_visible (GTK_WIDGET (um->old_password_label), visible);
|
||||||
gtk_widget_set_visible (um->old_password_entry, visible);
|
gtk_widget_set_visible (GTK_WIDGET (um->old_password_entry), visible);
|
||||||
um->old_password_ok = !visible;
|
um->old_password_ok = !visible;
|
||||||
|
|
||||||
|
um->passwd_handler = passwd_init ();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mode_change (um, ACT_USER_PASSWORD_MODE_SET_AT_LOGIN);
|
mode_change (um, ACT_USER_PASSWORD_MODE_SET_AT_LOGIN);
|
||||||
gtk_widget_show (um->action_radio_box);
|
gtk_widget_show (GTK_WIDGET (um->action_radio_box));
|
||||||
|
|
||||||
gtk_widget_hide (um->old_password_label);
|
gtk_widget_hide (GTK_WIDGET (um->old_password_label));
|
||||||
gtk_widget_hide (um->old_password_entry);
|
gtk_widget_hide (GTK_WIDGET (um->old_password_entry));
|
||||||
um->old_password_ok = TRUE;
|
um->old_password_ok = TRUE;
|
||||||
}
|
}
|
||||||
if (act_user_get_uid (um->user) == getuid()) {
|
|
||||||
if (um->passwd_handler != NULL)
|
|
||||||
passwd_destroy (um->passwd_handler);
|
|
||||||
um->passwd_handler = passwd_init ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
um_password_dialog_show (UmPasswordDialog *um,
|
|
||||||
GtkWindow *parent)
|
|
||||||
{
|
|
||||||
gtk_window_set_transient_for (GTK_WINDOW (um->dialog), parent);
|
|
||||||
gtk_window_present (GTK_WINDOW (um->dialog));
|
|
||||||
if (um->old_password_ok == FALSE)
|
if (um->old_password_ok == FALSE)
|
||||||
gtk_widget_grab_focus (um->old_password_entry);
|
gtk_widget_grab_focus (GTK_WIDGET (um->old_password_entry));
|
||||||
else
|
else
|
||||||
gtk_widget_grab_focus (um->password_entry);
|
gtk_widget_grab_focus (GTK_WIDGET (um->password_entry));
|
||||||
}
|
|
||||||
|
|
||||||
|
gtk_widget_grab_default (GTK_WIDGET (um->ok_button));
|
||||||
|
|
||||||
|
return um;
|
||||||
|
}
|
||||||
|
|
|
@ -25,13 +25,9 @@
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef struct _UmPasswordDialog UmPasswordDialog;
|
#define UM_TYPE_PASSWORD_DIALOG (um_password_dialog_get_type ())
|
||||||
|
G_DECLARE_FINAL_TYPE (UmPasswordDialog, um_password_dialog, UM, PASSWORD_DIALOG, GtkDialog)
|
||||||
|
|
||||||
UmPasswordDialog *um_password_dialog_new (void);
|
UmPasswordDialog *um_password_dialog_new (ActUser *user);
|
||||||
void um_password_dialog_free (UmPasswordDialog *dialog);
|
|
||||||
void um_password_dialog_set_user (UmPasswordDialog *dialog,
|
|
||||||
ActUser *user);
|
|
||||||
void um_password_dialog_show (UmPasswordDialog *dialog,
|
|
||||||
GtkWindow *parent);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<interface>
|
<interface>
|
||||||
<!-- interface-requires gtk+ 2.12 -->
|
<!-- interface-requires gtk+ 2.12 -->
|
||||||
<!-- interface-naming-policy toplevel-contextual -->
|
<!-- interface-naming-policy toplevel-contextual -->
|
||||||
<object class="GtkDialog" id="dialog">
|
<template class="UmPasswordDialog" parent="GtkDialog">
|
||||||
<property name="border_width">6</property>
|
<property name="border_width">6</property>
|
||||||
<property name="title" translatable="yes">Change Password</property>
|
<property name="title" translatable="yes">Change Password</property>
|
||||||
<property name="resizable">False</property>
|
<property name="resizable">False</property>
|
||||||
|
@ -10,14 +10,13 @@
|
||||||
<property name="window_position">center-on-parent</property>
|
<property name="window_position">center-on-parent</property>
|
||||||
<property name="icon_name">system-users</property>
|
<property name="icon_name">system-users</property>
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<property name="use_header_bar">1</property>
|
|
||||||
<child internal-child="headerbar">
|
<child internal-child="headerbar">
|
||||||
<object class="GtkHeaderBar" id="dialog-header-bar">
|
<object class="GtkHeaderBar" id="dialog-header-bar">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="show_close_button">False</property>
|
<property name="show_close_button">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="cancel-button">
|
<object class="GtkButton" id="cancel_button">
|
||||||
<property name="label" translatable="yes">_Cancel</property>
|
<property name="label" translatable="yes">_Cancel</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -34,7 +33,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="ok-button">
|
<object class="GtkButton" id="ok_button">
|
||||||
<property name="label" translatable="yes">Ch_ange</property>
|
<property name="label" translatable="yes">Ch_ange</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
|
@ -42,6 +41,7 @@
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="valign">center</property>
|
<property name="valign">center</property>
|
||||||
|
<signal name="clicked" handler="ok_button_clicked_cb" object="UmPasswordDialog" swapped="yes"/>
|
||||||
<style>
|
<style>
|
||||||
<class name="text-button"/>
|
<class name="text-button"/>
|
||||||
<class name="suggested-action"/>
|
<class name="suggested-action"/>
|
||||||
|
@ -54,32 +54,35 @@
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="dialog-vbox1">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="spacing">6</property>
|
<property name="spacing">6</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="vbox7">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="border_width">6</property>
|
<property name="border_width">6</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="spacing">6</property>
|
<property name="spacing">6</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid" id="table4">
|
<object class="GtkGrid">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="column_spacing">6</property>
|
<property name="column_spacing">6</property>
|
||||||
<property name="row_spacing">6</property>
|
<property name="row_spacing">6</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="verify-entry">
|
<object class="GtkEntry" id="verify_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="visibility">False</property>
|
<property name="visibility">False</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="activates_default">True</property>
|
<property name="activates_default">True</property>
|
||||||
<property name="input_purpose">password</property>
|
<property name="input_purpose">password</property>
|
||||||
|
<signal name="notify::text" handler="password_entry_changed" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="activate" handler="password_entry_timeout" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="focus-out-event" handler="password_entry_focus_out_cb" after="yes" object="UmPasswordDialog" swapped="yes"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
@ -87,7 +90,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="password-hint">
|
<object class="GtkLabel" id="password_hint_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
|
@ -112,7 +115,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="verify-hint">
|
<object class="GtkLabel" id="verify_hint_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
|
@ -136,12 +139,12 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="password-normal-verify-label">
|
<object class="GtkLabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="label" translatable="yes">_Confirm New Password</property>
|
<property name="label" translatable="yes">_Confirm New Password</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="mnemonic_widget">verify-entry</property>
|
<property name="mnemonic_widget">verify_entry</property>
|
||||||
<property name="margin_start">25</property>
|
<property name="margin_start">25</property>
|
||||||
<style>
|
<style>
|
||||||
<class name="dim-label"/>
|
<class name="dim-label"/>
|
||||||
|
@ -153,12 +156,12 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="password-normal-password-label">
|
<object class="GtkLabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="label" translatable="yes">_New Password</property>
|
<property name="label" translatable="yes">_New Password</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="mnemonic_widget">password-entry</property>
|
<property name="mnemonic_widget">password_entry</property>
|
||||||
<property name="margin_start">25</property>
|
<property name="margin_start">25</property>
|
||||||
<style>
|
<style>
|
||||||
<class name="dim-label"/>
|
<class name="dim-label"/>
|
||||||
|
@ -170,13 +173,18 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="password-entry">
|
<object class="GtkEntry" id="password_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="visibility">False</property>
|
<property name="visibility">False</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="activates_default">True</property>
|
<property name="activates_default">True</property>
|
||||||
<property name="input_purpose">password</property>
|
<property name="input_purpose">password</property>
|
||||||
|
<signal name="notify::text" handler="password_entry_changed" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="activate" handler="password_entry_timeout" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="focus-out-event" handler="password_entry_focus_out_cb" after="yes" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="key-press-event" handler="password_entry_key_press_cb" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="icon-press" handler="password_entry_icon_press_cb" object="UmPasswordDialog" swapped="yes"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
@ -184,7 +192,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLevelBar" id="strength-indicator">
|
<object class="GtkLevelBar" id="strength_indicator">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="mode">discrete</property>
|
<property name="mode">discrete</property>
|
||||||
<property name="max-value">5</property>
|
<property name="max-value">5</property>
|
||||||
|
@ -202,12 +210,12 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="old-password-label">
|
<object class="GtkLabel" id="old_password_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="label" translatable="yes">Current _Password</property>
|
<property name="label" translatable="yes">Current _Password</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="mnemonic_widget">old-password-entry</property>
|
<property name="mnemonic_widget">old_password_entry</property>
|
||||||
<property name="margin_start">25</property>
|
<property name="margin_start">25</property>
|
||||||
<property name="margin_bottom">12</property>
|
<property name="margin_bottom">12</property>
|
||||||
<style>
|
<style>
|
||||||
|
@ -220,7 +228,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="old-password-entry">
|
<object class="GtkEntry" id="old_password_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="visibility">False</property>
|
<property name="visibility">False</property>
|
||||||
|
@ -228,6 +236,9 @@
|
||||||
<property name="activates_default">True</property>
|
<property name="activates_default">True</property>
|
||||||
<property name="margin_bottom">12</property>
|
<property name="margin_bottom">12</property>
|
||||||
<property name="input_purpose">password</property>
|
<property name="input_purpose">password</property>
|
||||||
|
<signal name="notify::text" handler="old_password_entry_changed" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="activate" handler="password_entry_timeout" object="UmPasswordDialog" swapped="yes"/>
|
||||||
|
<signal name="focus-out-event" handler="old_password_entry_focus_out_cb" after="yes" object="UmPasswordDialog" swapped="yes"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
@ -235,11 +246,11 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="action-radio-box">
|
<object class="GtkBox" id="action_radio_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkRadioButton" id="action-login-radio">
|
<object class="GtkRadioButton" id="action_login_radio">
|
||||||
<property name="label" translatable="yes">Allow user to change their password on next login</property>
|
<property name="label" translatable="yes">Allow user to change their password on next login</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
|
@ -252,14 +263,15 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkRadioButton" id="action-now-radio">
|
<object class="GtkRadioButton" id="action_now_radio">
|
||||||
<property name="label" translatable="yes">Set a password now</property>
|
<property name="label" translatable="yes">Set a password now</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="active">True</property>
|
<property name="active">True</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
<property name="group">action-login-radio</property>
|
<property name="group">action_login_radio</property>
|
||||||
|
<signal name="toggled" handler="action_now_radio_toggled_cb" object="UmPasswordDialog" swapped="yes"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
|
@ -286,5 +298,8 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
<action-widgets>
|
||||||
|
<action-widget response="0">cancel_button</action-widget>
|
||||||
|
</action-widgets>
|
||||||
|
</template>
|
||||||
</interface>
|
</interface>
|
|
@ -6,7 +6,6 @@
|
||||||
<file alias="avatar-chooser.ui" preprocess="xml-stripblanks">data/avatar-chooser.ui</file>
|
<file alias="avatar-chooser.ui" preprocess="xml-stripblanks">data/avatar-chooser.ui</file>
|
||||||
<file alias="join-dialog.ui" preprocess="xml-stripblanks">data/join-dialog.ui</file>
|
<file alias="join-dialog.ui" preprocess="xml-stripblanks">data/join-dialog.ui</file>
|
||||||
<file alias="account-fingerprint.ui" preprocess="xml-stripblanks">data/account-fingerprint.ui</file>
|
<file alias="account-fingerprint.ui" preprocess="xml-stripblanks">data/account-fingerprint.ui</file>
|
||||||
<file alias="password-dialog.ui" preprocess="xml-stripblanks">data/password-dialog.ui</file>
|
|
||||||
<file alias="history-dialog.ui" preprocess="xml-stripblanks">data/history-dialog.ui</file>
|
<file alias="history-dialog.ui" preprocess="xml-stripblanks">data/history-dialog.ui</file>
|
||||||
<file alias="user-accounts-dialog.css">data/user-accounts-dialog.css</file>
|
<file alias="user-accounts-dialog.css">data/user-accounts-dialog.css</file>
|
||||||
<file alias="carousel.ui" preprocess="xml-stripblanks">data/carousel.ui</file>
|
<file alias="carousel.ui" preprocess="xml-stripblanks">data/carousel.ui</file>
|
||||||
|
@ -23,5 +22,6 @@
|
||||||
<file alias="right-little-finger.png">data/icons/right-little-finger.png</file>
|
<file alias="right-little-finger.png">data/icons/right-little-finger.png</file>
|
||||||
<file alias="right-ring-finger.png">data/icons/right-ring-finger.png</file>
|
<file alias="right-ring-finger.png">data/icons/right-ring-finger.png</file>
|
||||||
<file alias="right-thumb.png">data/icons/right-thumb.png</file>
|
<file alias="right-thumb.png">data/icons/right-thumb.png</file>
|
||||||
|
<file preprocess="xml-stripblanks">um-password-dialog.ui</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|
|
@ -201,7 +201,6 @@ panels/user-accounts/data/avatar-chooser.ui
|
||||||
panels/user-accounts/data/gnome-user-accounts-panel.desktop.in.in
|
panels/user-accounts/data/gnome-user-accounts-panel.desktop.in.in
|
||||||
panels/user-accounts/data/history-dialog.ui
|
panels/user-accounts/data/history-dialog.ui
|
||||||
panels/user-accounts/data/join-dialog.ui
|
panels/user-accounts/data/join-dialog.ui
|
||||||
panels/user-accounts/data/password-dialog.ui
|
|
||||||
panels/user-accounts/org.gnome.controlcenter.user-accounts.policy.in
|
panels/user-accounts/org.gnome.controlcenter.user-accounts.policy.in
|
||||||
panels/user-accounts/pw-utils.c
|
panels/user-accounts/pw-utils.c
|
||||||
panels/user-accounts/run-passwd.c
|
panels/user-accounts/run-passwd.c
|
||||||
|
@ -210,6 +209,7 @@ panels/user-accounts/um-account-type.c
|
||||||
panels/user-accounts/um-fingerprint-dialog.c
|
panels/user-accounts/um-fingerprint-dialog.c
|
||||||
panels/user-accounts/um-history-dialog.c
|
panels/user-accounts/um-history-dialog.c
|
||||||
panels/user-accounts/um-password-dialog.c
|
panels/user-accounts/um-password-dialog.c
|
||||||
|
panels/user-accounts/um-password-dialog.ui
|
||||||
panels/user-accounts/um-photo-dialog.c
|
panels/user-accounts/um-photo-dialog.c
|
||||||
panels/user-accounts/um-realm-manager.c
|
panels/user-accounts/um-realm-manager.c
|
||||||
panels/user-accounts/um-utils.c
|
panels/user-accounts/um-utils.c
|
||||||
|
|
Loading…
Add table
Reference in a new issue