[gnome-control-center/wip/feborges/user-accounts-ui-improvements: 2/4] user-accounts: UI style improvements



commit 127bf308bfdf599f64adffc35a572cb692364fb8
Author: Felipe Borges <felipeborges gnome org>
Date:   Mon Jan 13 15:35:09 2020 +0100

    user-accounts: UI style improvements
    
    According to the mockups at
    https://gitlab.gnome.org/Teams/Design/settings-mockups/raw/master/users/users.png
    
    Fixes #771

 panels/user-accounts/cc-user-panel.c         | 169 +++---
 panels/user-accounts/cc-user-panel.ui        | 770 ++++++++++++++-------------
 panels/user-accounts/um-fingerprint-dialog.c |  27 +-
 panels/user-accounts/um-fingerprint-dialog.h |   4 +-
 4 files changed, 512 insertions(+), 458 deletions(-)
---
diff --git a/panels/user-accounts/cc-user-panel.c b/panels/user-accounts/cc-user-panel.c
index 248920e96..49eea54bf 100644
--- a/panels/user-accounts/cc-user-panel.c
+++ b/panels/user-accounts/cc-user-panel.c
@@ -54,6 +54,7 @@
 #include "cc-common-language.h"
 #include "cc-permission-infobar.h"
 #include "cc-util.h"
+#include "list-box-helper.h"
 
 #define USER_ACCOUNTS_PERMISSION "org.gnome.controlcenter.user-accounts.administration"
 
@@ -65,31 +66,29 @@ struct _CcUserPanel {
         GSettings *login_screen_settings;
 
         GtkBox          *accounts_box;
-        GtkRadioButton  *account_type_admin_button;
-        GtkBox          *account_type_box;
-        GtkLabel        *account_type_label;
-        GtkRadioButton  *account_type_standard_button;
+        GtkBox          *account_settings_box;
+        GtkListBox      *account_settings_listbox;
+        GtkListBox      *authentication_and_login_listbox;
+        GtkListBoxRow   *account_type_row;
+        GtkSwitch       *account_type_switch;
         GtkButton       *add_user_button;
-        GtkBox          *autologin_box;
-        GtkLabel        *autologin_label;
+        GtkListBoxRow   *autologin_row;
         GtkSwitch       *autologin_switch;
         CcCarousel      *carousel;
-        GtkButton       *fingerprint_button;
-        GtkLabel        *fingerprint_label;
+        GtkLabel        *fingerprint_state_label;
+        GtkListBoxRow   *fingerprint_row;
         GtkStack        *full_name_stack;
         GtkLabel        *full_name_label;
         GtkToggleButton *full_name_edit_button;
         GtkEntry        *full_name_entry;
-        GtkButton       *language_button;
         GtkLabel        *language_button_label;
-        GtkLabel        *language_label;
-        GtkButton       *last_login_button;
+        GtkListBoxRow   *language_row;
         GtkLabel        *last_login_button_label;
-        GtkLabel        *last_login_label;
+        GtkListBoxRow   *last_login_row;
         GtkBox          *no_users_box;
         GtkRevealer     *notification_revealer;
-        GtkButton       *password_button;
         GtkLabel        *password_button_label;
+        GtkListBoxRow   *password_row;
         CcPermissionInfobar *permission_infobar;
         GtkButton       *remove_user_button;
         GtkStack        *stack;
@@ -820,15 +819,12 @@ show_user (ActUser *user, CcUserPanel *self)
         gtk_toggle_button_set_active (self->full_name_edit_button, FALSE);
         g_signal_handlers_unblock_by_func (self->full_name_edit_button, full_name_edit_button_toggled, self);
 
-        if (act_user_get_account_type (user) == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR)
-                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->account_type_admin_button), TRUE);
-        else
-                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->account_type_standard_button), TRUE);
+        enable = (act_user_get_account_type (user) == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR);
+        gtk_switch_set_active (self->account_type_switch, enable);
 
         /* Do not show the "Account Type" option when there's a single user account. */
         show = (self->other_accounts != 0);
-        gtk_widget_set_visible (GTK_WIDGET (self->account_type_label), show);
-        gtk_widget_set_visible (GTK_WIDGET (self->account_type_box), show);
+        gtk_widget_set_visible (GTK_WIDGET (self->account_settings_box), show);
 
         gtk_label_set_label (self->password_button_label, get_password_mode_text (user));
         enable = act_user_is_local_account (user);
@@ -857,19 +853,16 @@ show_user (ActUser *user, CcUserPanel *self)
                 act_user_is_local_account (user) &&
                 (self->login_screen_settings &&
                  g_settings_get_boolean (self->login_screen_settings, "enable-fingerprint-authentication")) 
&&
-                set_fingerprint_label (self->fingerprint_button));
-        gtk_widget_set_visible (GTK_WIDGET (self->fingerprint_label), show);
-        gtk_widget_set_visible (GTK_WIDGET (self->fingerprint_button), show);
+                set_fingerprint_label (self->fingerprint_state_label));
+        gtk_widget_set_visible (GTK_WIDGET (self->fingerprint_row), show);
 
         /* Autologin: show when local account */
         show = act_user_is_local_account (user);
-        gtk_widget_set_visible (GTK_WIDGET (self->autologin_box), show);
-        gtk_widget_set_visible (GTK_WIDGET (self->autologin_label), show);
+        gtk_widget_set_visible (GTK_WIDGET (self->autologin_row), show);
 
         /* Language: do not show for current user */
         show = act_user_get_uid (user) != getuid();
-        gtk_widget_set_visible (GTK_WIDGET (self->language_button), show);
-        gtk_widget_set_visible (GTK_WIDGET (self->language_label), show);
+        gtk_widget_set_visible (GTK_WIDGET (self->language_row), show);
 
         /* Last login: show when administrator or current user */
         current = act_user_manager_get_user_by_id (self->um, getuid ());
@@ -880,11 +873,10 @@ show_user (ActUser *user, CcUserPanel *self)
                 gtk_label_set_label (self->last_login_button_label, text);
                 g_free (text);
         }
-        gtk_widget_set_visible (GTK_WIDGET (self->last_login_button), show);
-        gtk_widget_set_visible (GTK_WIDGET (self->last_login_label), show);
+        gtk_widget_set_visible (GTK_WIDGET (self->last_login_row), show);
 
         enable = act_user_get_login_history (user) != NULL;
-        gtk_widget_set_sensitive (GTK_WIDGET (self->last_login_button), enable);
+        gtk_widget_set_sensitive (GTK_WIDGET (self->last_login_row), enable);
 
         if (self->permission != NULL)
                 on_permission_changed (self);
@@ -941,14 +933,15 @@ static void
 account_type_changed (CcUserPanel *self)
 {
         ActUser *user;
-        gint account_type;
         gboolean self_selected;
+        gboolean is_admin;
+        ActUserAccountType account_type;
 
         user = get_selected_user (self);
         self_selected = act_user_get_uid (user) == geteuid ();
+        is_admin = gtk_switch_get_active (self->account_type_switch);
 
-        account_type = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->account_type_standard_button)) 
?  ACT_USER_ACCOUNT_TYPE_STANDARD : ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR;
-
+        account_type = is_admin ? ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR : ACT_USER_ACCOUNT_TYPE_STANDARD;
         if (account_type != act_user_get_account_type (user)) {
                 act_user_set_account_type (user, account_type);
 
@@ -1091,7 +1084,7 @@ change_fingerprint (CcUserPanel *self)
 
         g_assert (g_strcmp0 (g_get_user_name (), act_user_get_user_name (user)) == 0);
 
-        fingerprint_button_clicked (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))), 
self->fingerprint_button, user);
+        fingerprint_button_clicked (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))), 
self->fingerprint_state_label, user);
 }
 
 static void
@@ -1115,6 +1108,23 @@ show_history (CcUserPanel *self)
         gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
+static void
+activate_row (GtkListBox *box, GtkListBoxRow *row, CcUserPanel *self)
+{
+        if (!gtk_widget_get_sensitive (GTK_WIDGET (row)))
+                return;
+
+        if (row == self->language_row) {
+                change_language (self);
+        } else if (row == self->password_row) {
+                change_password (self);
+        } else if (row == self->fingerprint_row) {
+                change_fingerprint (self);
+        } else if (row == self->last_login_row) {
+                show_history (self);
+        }
+}
+
 static void
 users_loaded (CcUserPanel *self)
 {
@@ -1271,31 +1281,31 @@ on_permission_changed (CcUserPanel *self)
         }
 
         if (!act_user_is_local_account (user)) {
-                gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_box), FALSE);
-                remove_unlock_tooltip (GTK_WIDGET (self->account_type_box));
-                gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_switch), FALSE);
-                remove_unlock_tooltip (GTK_WIDGET (self->autologin_switch));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_row), FALSE);
+                remove_unlock_tooltip (GTK_WIDGET (self->account_type_row));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_row), FALSE);
+                remove_unlock_tooltip (GTK_WIDGET (self->autologin_row));
 
         } else if (is_authorized && act_user_is_local_account (user)) {
                 if (would_demote_only_admin (user)) {
-                        gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_box), FALSE);
+                        gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_row), FALSE);
                 } else {
-                        gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_box), TRUE);
+                        gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_row), TRUE);
                 }
-                remove_unlock_tooltip (GTK_WIDGET (self->account_type_box));
+                remove_unlock_tooltip (GTK_WIDGET (self->account_type_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_switch), get_autologin_possible 
(user));
-                remove_unlock_tooltip (GTK_WIDGET (self->autologin_switch));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_row), get_autologin_possible (user));
+                remove_unlock_tooltip (GTK_WIDGET (self->autologin_row));
         }
         else {
-                gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_box), FALSE);
+                gtk_widget_set_sensitive (GTK_WIDGET (self->account_type_row), FALSE);
                 if (would_demote_only_admin (user)) {
-                        remove_unlock_tooltip (GTK_WIDGET (self->account_type_box));
+                        remove_unlock_tooltip (GTK_WIDGET (self->account_type_row));
                 } else {
-                        add_unlock_tooltip (GTK_WIDGET (self->account_type_box));
+                        add_unlock_tooltip (GTK_WIDGET (self->account_type_row));
                 }
-                gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_switch), FALSE);
-                add_unlock_tooltip (GTK_WIDGET (self->autologin_switch));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->autologin_row), FALSE);
+                add_unlock_tooltip (GTK_WIDGET (self->autologin_row));
         }
 
         /* The full name entry: insensitive if remote or not authorized and not self */
@@ -1315,32 +1325,32 @@ on_permission_changed (CcUserPanel *self)
         if (is_authorized || self_selected) {
                 gtk_stack_set_visible_child (self->user_icon_stack, GTK_WIDGET (self->user_icon_button));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->language_button), TRUE);
-                remove_unlock_tooltip (GTK_WIDGET (self->language_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->language_row), TRUE);
+                remove_unlock_tooltip (GTK_WIDGET (self->language_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->password_button), TRUE);
-                remove_unlock_tooltip (GTK_WIDGET (self->password_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->password_row), TRUE);
+                remove_unlock_tooltip (GTK_WIDGET (self->password_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->fingerprint_button), TRUE);
-                remove_unlock_tooltip (GTK_WIDGET (self->fingerprint_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->fingerprint_row), TRUE);
+                remove_unlock_tooltip (GTK_WIDGET (self->fingerprint_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->last_login_button), TRUE);
-                remove_unlock_tooltip (GTK_WIDGET (self->last_login_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->last_login_row), TRUE);
+                remove_unlock_tooltip (GTK_WIDGET (self->last_login_row));
         }
         else {
                 gtk_stack_set_visible_child (self->user_icon_stack, GTK_WIDGET (self->user_icon_image));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->language_button), FALSE);
-                add_unlock_tooltip (GTK_WIDGET (self->language_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->language_row), FALSE);
+                add_unlock_tooltip (GTK_WIDGET (self->language_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->password_button), FALSE);
-                add_unlock_tooltip (GTK_WIDGET (self->password_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->password_row), FALSE);
+                add_unlock_tooltip (GTK_WIDGET (self->password_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->fingerprint_button), FALSE);
-                add_unlock_tooltip (GTK_WIDGET (self->fingerprint_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->fingerprint_row), FALSE);
+                add_unlock_tooltip (GTK_WIDGET (self->fingerprint_row));
 
-                gtk_widget_set_sensitive (GTK_WIDGET (self->last_login_button), FALSE);
-                add_unlock_tooltip (GTK_WIDGET (self->last_login_button));
+                gtk_widget_set_sensitive (GTK_WIDGET (self->last_login_row), FALSE);
+                add_unlock_tooltip (GTK_WIDGET (self->last_login_row));
         }
 }
 
@@ -1385,6 +1395,13 @@ setup_main_window (CcUserPanel *self)
                 users_loaded (self);
         else
                 g_signal_connect_object (self->um, "notify::is-loaded", G_CALLBACK (users_loaded), self, 
G_CONNECT_SWAPPED);
+
+        gtk_list_box_set_header_func (self->account_settings_listbox,
+                                      cc_list_box_update_header_func,
+                                      NULL, NULL);
+        gtk_list_box_set_header_func (self->authentication_and_login_listbox,
+                                      cc_list_box_update_header_func,
+                                      NULL, NULL);
 }
 
 static GSettings *
@@ -1491,31 +1508,29 @@ cc_user_panel_class_init (CcUserPanelClass *klass)
         gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/control-center/user-accounts/cc-user-panel.ui");
 
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, accounts_box);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_type_admin_button);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_type_box);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_type_label);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_type_standard_button);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_settings_box);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_settings_listbox);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, authentication_and_login_listbox);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_type_row);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, account_type_switch);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, add_user_button);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, autologin_box);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, autologin_label);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, autologin_row);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, autologin_switch);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, carousel);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, fingerprint_button);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, fingerprint_label);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, fingerprint_state_label);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, fingerprint_row);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, full_name_stack);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, full_name_label);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, full_name_edit_button);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, full_name_entry);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, language_button);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, language_button_label);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, language_label);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, last_login_button);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, language_row);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, last_login_button_label);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, last_login_label);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, last_login_row);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, no_users_box);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, notification_revealer);
-        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, password_button);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, password_button_label);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, password_row);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, permission_infobar);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, remove_user_button);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, stack);
@@ -1526,6 +1541,7 @@ cc_user_panel_class_init (CcUserPanelClass *klass)
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, users_overlay);
 
         gtk_widget_class_bind_template_callback (widget_class, account_type_changed);
+        gtk_widget_class_bind_template_callback (widget_class, activate_row);
         gtk_widget_class_bind_template_callback (widget_class, add_user);
         gtk_widget_class_bind_template_callback (widget_class, autologin_changed);
         gtk_widget_class_bind_template_callback (widget_class, change_fingerprint);
@@ -1538,5 +1554,4 @@ cc_user_panel_class_init (CcUserPanelClass *klass)
         gtk_widget_class_bind_template_callback (widget_class, dismiss_notification);
         gtk_widget_class_bind_template_callback (widget_class, restart_now);
         gtk_widget_class_bind_template_callback (widget_class, set_selected_user);
-        gtk_widget_class_bind_template_callback (widget_class, show_history);
 }
diff --git a/panels/user-accounts/cc-user-panel.ui b/panels/user-accounts/cc-user-panel.ui
index e9fa0ccf8..4fa5fe0eb 100644
--- a/panels/user-accounts/cc-user-panel.ui
+++ b/panels/user-accounts/cc-user-panel.ui
@@ -102,393 +102,452 @@
                     <property name="expand">False</property>
                   </packing>
                 </child>
+
                 <child>
-                  <object class="GtkGrid">
+                  <object class="GtkScrolledWindow">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="column_spacing">10</property>
-                    <property name="row_spacing">10</property>
-                    <property name="margin_top">40</property>
-                    <property name="margin-start">12</property>
-                    <property name="margin-end">12</property>
-                    <property name="halign">GTK_ALIGN_CENTER</property>
-                    <property name="height_request">300</property>
-                    <child>
-                      <object class="GtkButton" id="fingerprint_button">
-                        <property name="visible">True</property>
-                        <property name="hexpand">True</property>
-                        <signal name="clicked" handler="change_fingerprint" object="CcUserPanel" 
swapped="yes"/>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">5</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox" id="account_type_box">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="sensitive">False</property>
-                        <style>
-                          <class name="linked"/>
-                        </style>
-                        <child>
-                          <object class="GtkRadioButton" id="account_type_standard_button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">Standard</property>
-                            <property name="draw_indicator">False</property>
-                            <property name="hexpand">True</property>
-                            <signal name="toggled" handler="account_type_changed" object="CcUserPanel" 
swapped="yes"/>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" id="account_type_admin_button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">Administrator</property>
-                            <property name="draw_indicator">False</property>
-                            <property name="group">account_type_standard_button</property>
-                            <property name="hexpand">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">1</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="account_type_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">Account _Type</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">account_type_box</property>
-                        <style>
-                          <class name="dim-label"/>
-                        </style>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">1</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
+                    <property name="expand">True</property>
+                    <property name="hscrollbar-policy">GTK_POLICY_NEVER</property>
+
                     <child>
                       <object class="GtkBox">
                         <property name="visible">True</property>
-                        <property name="valign">GTK_ALIGN_CENTER</property>
-                        <property name="spacing">10</property>
+                        <property name="halign">GTK_ALIGN_CENTER</property>
+                        <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+                        <property name="spacing">20</property>
+                        <property name="margin-top">30</property>
+                        <property name="margin-bottom">30</property>
+
                         <child>
-                          <object class="GtkStack" id="full_name_stack">
+                          <object class="GtkBox">
                             <property name="visible">True</property>
+                            <property name="valign">GTK_ALIGN_CENTER</property>
+                            <property name="spacing">10</property>
+                            <property name="margin-top">10</property>
+                            <property name="margin-bottom">10</property>
                             <child>
-                              <object class="GtkLabel" id="full_name_label">
+                              <object class="GtkStack" id="user_icon_stack">
                                 <property name="visible">True</property>
-                                <property name="halign">GTK_ALIGN_START</property>
-                                <property name="ellipsize">PANGO_ELLIPSIZE_END</property>
-                                <property name="width-chars">18</property>
-                                <property name="max-width-chars">30</property>
-                                <attributes>
-                                  <attribute name="scale" value="1.2"/>
-                                  <attribute name="weight" value="bold"/>
-                                </attributes>
+                                <property name="halign">GTK_ALIGN_END</property>
+                                <child>
+                                  <object class="CcUserImage" id="user_icon_image">
+                                    <property name="visible">True</property>
+                                    <property name="icon_name">avatar-default</property>
+                                    <property name="pixel_size">96</property>
+                                    <property name="halign">GTK_ALIGN_END</property>
+                                    <child internal-child="accessible">
+                                      <object class="AtkObject">
+                                        <property name="accessible-name" translatable="yes">User 
Icon</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkToggleButton" id="user_icon_button">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <style>
+                                      <class name="user-icon-button"/>
+                                    </style>
+                                    <child internal-child="accessible">
+                                      <object class="AtkObject">
+                                        <property name="accessible-name" translatable="yes">User 
Icon</property>
+                                      </object>
+                                    </child>
+                                    <child>
+                                      <object class="CcUserImage" id="user_icon_image2">
+                                        <property name="visible">True</property>
+                                        <property name="icon_name">avatar-default</property>
+                                        <property name="pixel_size">96</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+
+                            <child>
+                              <object class="GtkStack" id="full_name_stack">
+                                <property name="visible">True</property>
+                                <child>
+                                  <object class="GtkLabel" id="full_name_label">
+                                    <property name="visible">True</property>
+                                    <property name="halign">GTK_ALIGN_START</property>
+                                    <property name="ellipsize">PANGO_ELLIPSIZE_END</property>
+                                    <property name="width-chars">18</property>
+                                    <property name="max-width-chars">30</property>
+                                    <property name="xalign">0</property>
+                                    <attributes>
+                                      <attribute name="scale" value="1.2"/>
+                                      <attribute name="weight" value="bold"/>
+                                    </attributes>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" id="full_name_entry">
+                                    <property name="visible">True</property>
+                                    <property name="max-length">255</property>
+                                    <property name="width-chars">18</property>
+                                    <property name="max-width-chars">30</property>
+                                    <property name="valign">GTK_ALIGN_CENTER</property>
+                                    <signal name="activate" handler="full_name_entry_activate" 
object="CcUserPanel" swapped="yes"/>
+                                    <signal name="key-press-event" handler="full_name_entry_key_press_cb" 
object="CcUserPanel" swapped="yes"/>
+                                  </object>
+                                </child>
                               </object>
                             </child>
                             <child>
-                              <object class="GtkEntry" id="full_name_entry">
+                              <object class="GtkToggleButton" id="full_name_edit_button">
                                 <property name="visible">True</property>
-                                <property name="max-length">255</property>
-                                <property name="width-chars">18</property>
-                                <property name="max-width-chars">30</property>
+                                <signal name="toggled" handler="full_name_edit_button_toggled" 
object="CcUserPanel" swapped="yes"/>
                                 <property name="valign">GTK_ALIGN_CENTER</property>
-                                <signal name="activate" handler="full_name_entry_activate" 
object="CcUserPanel" swapped="yes"/>
-                                <signal name="key-press-event" handler="full_name_entry_key_press_cb" 
object="CcUserPanel" swapped="yes"/>
+                                <style>
+                                  <class name="circular"/>
+                                </style>
+                                <child>
+                                  <object class="GtkImage">
+                                    <property name="visible">True</property>
+                                    <property name="margin">5</property>
+                                    <property name="icon-name">document-edit-symbolic</property>
+                                  </object>
+                                </child>
                               </object>
+                              <packing>
+                                <property name="pack_type">end</property>
+                              </packing>
                             </child>
                           </object>
                         </child>
+
                         <child>
-                          <object class="GtkToggleButton" id="full_name_edit_button">
+                          <object class="GtkBox" id="account_settings_box">
                             <property name="visible">True</property>
-                            <signal name="toggled" handler="full_name_edit_button_toggled" 
object="CcUserPanel" swapped="yes"/>
-                            <style>
-                              <class name="circular"/>
-                            </style>
+                            <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+                            <property name="spacing">10</property>
                             <child>
-                              <object class="GtkImage">
+                              <object class="GtkLabel">
                                 <property name="visible">True</property>
-                                <property name="margin">5</property>
-                                <property name="icon-name">document-edit-symbolic</property>
+                                <property name="label" translatable="yes">Account Settings</property>
+                                <property name="halign">GTK_ALIGN_START</property>
+                                <attributes>
+                                  <attribute name="weight" value="bold"/>
+                                </attributes>
                               </object>
                             </child>
-                          </object>
-                          <packing>
-                            <property name="pack_type">end</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">0</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="password_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">_Password</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">password_button</property>
-                        <style>
-                          <class name="dim-label"/>
-                        </style>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">3</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" id="password_button">
-                        <property name="visible">True</property>
-                        <property name="hexpand">True</property>
-                        <signal name="clicked" handler="change_password" object="CcUserPanel" swapped="yes"/>
-                        <style>
-                          <class name="text-button"/>
-                        </style>
-                        <child>
-                          <object class="GtkLabel" id="password_button_label">
-                            <property name="visible">True</property>
-                            <property name="halign">GTK_ALIGN_START</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">3</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="autologin_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">A_utomatic Login</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">autologin_switch</property>
-                        <style>
-                          <class name="dim-label"/>
-                        </style>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">4</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox" id="autologin_box">
-                        <property name="visible">True</property>
-                        <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-                        <child>
-                          <object class="GtkSwitch" id="autologin_switch">
-                            <property name="visible">True</property>
-                            <property name="valign">GTK_ALIGN_CENTER</property>
-                            <signal name="notify::active" handler="autologin_changed" object="CcUserPanel" 
swapped="yes"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">4</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="fingerprint_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">_Fingerprint Login</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">fingerprint_button</property>
-                        <style>
-                          <class name="dim-label"/>
-                        </style>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">5</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkStack" id="user_icon_stack">
-                        <property name="visible">True</property>
-                        <property name="halign">GTK_ALIGN_END</property>
-                        <child>
-                          <object class="CcUserImage" id="user_icon_image">
-                            <property name="visible">True</property>
-                            <property name="icon_name">avatar-default</property>
-                            <property name="pixel_size">96</property>
-                            <property name="halign">GTK_ALIGN_END</property>
-                            <child internal-child="accessible">
-                              <object class="AtkObject">
-                                <property name="accessible-name" translatable="yes">User Icon</property>
+                            <child>
+                              <object class="GtkListBox" id="account_settings_listbox">
+                                <property name="visible">True</property>
+                                <property name="selection-mode">GTK_SELECTION_NONE</property>
+                                <signal name="row-activated" handler="activate_row"/>
+                                <style>
+                                  <class name="frame"/>
+                                </style>
+                                <child>
+                                  <object class="GtkListBoxRow" id="account_type_row">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkGrid">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="border-width">10</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="halign">GTK_ALIGN_START</property>
+                                            <property name="label" 
translatable="yes">_Administrator</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="mnemonic_widget">account_type_switch</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkSwitch" id="account_type_switch">
+                                            <property name="visible">True</property>
+                                            <signal name="notify::active" handler="account_type_changed" 
object="CcUserPanel" swapped="yes"/>
+                                          </object>
+                                          <packing>
+                                            <property name="left_attach">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="wrap">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="max-width-chars">48</property>
+                                            <property name="label" translatable="yes">Administrators can add 
and remove other users, and can change settings for all users.</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                            <attributes>
+                                              <attribute name="scale" value="0.9"/>
+                                            </attributes>
+                                          </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkListBoxRow" id="language_row">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkBox">
+                                        <property name="visible">True</property>
+                                        <property name="border-width">10</property>
+                                        <property name="spacing">10</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">_Language</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="mnemonic_widget">language_button_label</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkImage">
+                                            <property name="visible">True</property>
+                                            <property name="icon-name">go-next-symbolic</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="language_button_label">
+                                            <property name="visible">True</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
                               </object>
                             </child>
                           </object>
                         </child>
+
                         <child>
-                          <object class="GtkToggleButton" id="user_icon_button">
+                          <object class="GtkBox" id="authentication_and_login_box">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="relief">GTK_RELIEF_NORMAL</property>
-                            <style>
-                              <class name="user-icon-button"/>
-                            </style>
-                            <child internal-child="accessible">
-                              <object class="AtkObject">
-                                <property name="accessible-name" translatable="yes">User Icon</property>
+                            <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+                            <property name="spacing">10</property>
+                            <property name="margin-top">10</property>
+                            <child>
+                              <object class="GtkLabel">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Authentication &amp; 
Login</property>
+                                <property name="halign">GTK_ALIGN_START</property>
+                                <attributes>
+                                  <attribute name="weight" value="bold"/>
+                                </attributes>
                               </object>
                             </child>
                             <child>
-                              <object class="CcUserImage" id="user_icon_image2">
+                              <object class="GtkListBox" id="authentication_and_login_listbox">
                                 <property name="visible">True</property>
-                                <property name="icon_name">avatar-default</property>
-                                <property name="pixel_size">96</property>
+                                <property name="selection-mode">GTK_SELECTION_NONE</property>
+                                <signal name="row-activated" handler="activate_row"/>
+                                <style>
+                                  <class name="frame"/>
+                                </style>
+                                <child>
+                                  <object class="GtkListBoxRow" id="password_row">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkBox">
+                                        <property name="visible">True</property>
+                                        <property name="border-width">10</property>
+                                        <property name="spacing">10</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">_Password</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="mnemonic_widget">password_button_label</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkImage">
+                                            <property name="visible">True</property>
+                                            <property name="icon-name">go-next-symbolic</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="password_button_label">
+                                            <property name="visible">True</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkListBoxRow" id="fingerprint_row">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkBox">
+                                        <property name="visible">True</property>
+                                        <property name="border-width">10</property>
+                                        <property name="spacing">10</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">_Fingerprint 
Login</property>
+                                            <property name="use_underline">True</property>
+                                            <property 
name="mnemonic_widget">fingerprint_state_label</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkImage">
+                                            <property name="visible">True</property>
+                                            <property name="icon-name">go-next-symbolic</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="fingerprint_state_label">
+                                            <property name="visible">True</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkListBoxRow" id="autologin_row">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkBox">
+                                        <property name="visible">True</property>
+                                        <property name="border-width">10</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">A_utomatic 
Login</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="mnemonic_widget">autologin_switch</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkSwitch" id="autologin_switch">
+                                            <property name="visible">True</property>
+                                            <signal name="notify::active" handler="autologin_changed" 
object="CcUserPanel" swapped="yes"/>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkListBoxRow" id="last_login_row">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkBox">
+                                        <property name="visible">True</property>
+                                        <property name="border-width">10</property>
+                                        <property name="spacing">10</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="xalign">1</property>
+                                            <property name="label" translatable="yes">Last Login</property>
+                                            <property name="use_underline">True</property>
+                                            <property 
name="mnemonic_widget">last_login_button_label</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkImage">
+                                            <property name="visible">True</property>
+                                            <property name="icon-name">go-next-symbolic</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="last_login_button_label">
+                                            <property name="visible">True</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+                                          </object>
+                                          <packing>
+                                            <property name="pack_type">end</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
                               </object>
                             </child>
                           </object>
                         </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">0</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="language_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">_Language</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">language_button</property>
-                        <style>
-                          <class name="dim-label"/>
-                        </style>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">2</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" id="language_button">
-                        <property name="visible">True</property>
-                        <property name="hexpand">True</property>
-                        <signal name="clicked" handler="change_language" object="CcUserPanel" swapped="yes"/>
-                        <style>
-                          <class name="text-button"/>
-                        </style>
                         <child>
-                          <object class="GtkLabel" id="language_button_label">
+                          <object class="GtkButton" id="remove_user_button">
                             <property name="visible">True</property>
-                            <property name="halign">GTK_ALIGN_START</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">2</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="last_login_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">Last Login</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">last_login_button</property>
-                        <style>
-                          <class name="dim-label"/>
-                        </style>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">6</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" id="last_login_button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <signal name="clicked" handler="show_history" object="CcUserPanel" swapped="yes"/>
-                        <style>
-                          <class name="text-button"/>
-                        </style>
-                        <child>
-                          <object class="GtkLabel" id="last_login_button_label">
-                            <property name="visible">True</property>
-                            <property name="halign">GTK_ALIGN_START</property>
+                            <property name="can_focus">True</property>
+                            <property name="halign">GTK_ALIGN_END</property>
+                            <property name="label" translatable="yes">Remove User…</property>
+                            <property name="margin-top">10</property>
+                            <property name="margin-bottom">10</property>
+                            <signal name="clicked" handler="delete_user" object="CcUserPanel" swapped="yes"/>
+                            <style>
+                              <class name="destructive-action"/>
+                            </style>
                           </object>
+                          <packing>
+                            <property name="pack_type">end</property>
+                          </packing>
                         </child>
                       </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">6</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
-                      </packing>
                     </child>
                   </object>
                 </child>
-                <child>
-                  <object class="GtkButton" id="remove_user_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="vexpand">True</property>
-                    <property name="halign">GTK_ALIGN_END</property>
-                    <property name="valign">GTK_ALIGN_END</property>
-                    <property name="margin_bottom">20</property>
-                    <property name="margin_top">20</property>
-                    <property name="margin_end">20</property>
-                    <property name="label" translatable="yes">Remove User…</property>
-                    <signal name="clicked" handler="delete_user" object="CcUserPanel" swapped="yes"/>
-                    <style>
-                      <class name="destructive-action"/>
-                    </style>
-                  </object>
-                </child>
               </object>
             </child>
           </object>
@@ -540,30 +599,11 @@
   <object class="GtkSizeGroup">
     <property name="mode">both</property>
     <widgets>
-      <widget name="fingerprint_label"/>
-      <widget name="language_label"/>
-      <widget name="password_label"/>
-      <widget name="account_type_label"/>
-      <widget name="autologin_label"/>
-      <widget name="last_login_label"/>
-    </widgets>
-  </object>
-  <object class="GtkSizeGroup">
-    <property name="mode">both</property>
-    <widgets>
-      <widget name="fingerprint_button"/>
-      <widget name="language_button"/>
-      <widget name="password_button"/>
-      <widget name="account_type_box"/>
-      <widget name="autologin_box"/>
-      <widget name="last_login_button"/>
-    </widgets>
-  </object>
-  <object class="GtkSizeGroup">
-    <property name="mode">both</property>
-    <widgets>
-      <widget name="account_type_standard_button"/>
-      <widget name="account_type_admin_button"/>
+      <widget name="language_row"/>
+      <widget name="password_row"/>
+      <widget name="fingerprint_row"/>
+      <widget name="autologin_row"/>
+      <widget name="last_login_row"/>
     </widgets>
   </object>
 </interface>
diff --git a/panels/user-accounts/um-fingerprint-dialog.c b/panels/user-accounts/um-fingerprint-dialog.c
index f3903cb9d..ccbec54b4 100644
--- a/panels/user-accounts/um-fingerprint-dialog.c
+++ b/panels/user-accounts/um-fingerprint-dialog.c
@@ -45,7 +45,7 @@ enum {
 };
 
 typedef struct {
-        GtkButton *editable_button;
+        GtkLabel *state_label;
 
         GtkWidget *ass;
         GtkBuilder *dialog;
@@ -177,7 +177,7 @@ get_error_dialog (const char *title,
 }
 
 gboolean
-set_fingerprint_label (GtkButton *editable_button)
+set_fingerprint_label (GtkLabel *state_label)
 {
         GDBusProxy *device;
         GVariant *result;
@@ -208,12 +208,11 @@ set_fingerprint_label (GtkButton *editable_button)
 
         if (fingers == NULL || g_variant_iter_n_children (fingers) == 0) {
                 is_disable = FALSE;
-                gtk_button_set_label (editable_button, _("Disabled"));
+                gtk_label_set_text (state_label, _("Disabled"));
         } else {
                 is_disable = TRUE;
-                gtk_button_set_label (editable_button, _("Enabled"));
+                gtk_label_set_text (state_label, _("Enabled"));
         }
-        gtk_widget_set_halign (gtk_bin_get_child (GTK_BIN (editable_button)), GTK_ALIGN_START);
 
         if (result != NULL)
                 g_variant_unref (result);
@@ -247,7 +246,7 @@ delete_fingerprints (void)
 
 static void
 delete_fingerprints_question (GtkWindow *parent,
-                              GtkButton *editable_button,
+                              GtkLabel  *state_label,
                               ActUser   *user)
 {
         GtkWidget *question;
@@ -272,7 +271,7 @@ delete_fingerprints_question (GtkWindow *parent,
 
         if (gtk_dialog_run (GTK_DIALOG (question)) == GTK_RESPONSE_OK) {
                 delete_fingerprints ();
-                set_fingerprint_label (editable_button);
+                set_fingerprint_label (state_label);
         }
 
         gtk_widget_destroy (question);
@@ -414,10 +413,10 @@ finger_combobox_changed (GtkComboBox *combobox, EnrollData *data)
 static void
 assistant_cancelled (GtkAssistant *ass, EnrollData *data)
 {
-        GtkButton *editable_button = data->editable_button;
+        GtkLabel *state_label = data->state_label;
 
         enroll_data_destroy (data);
-        set_fingerprint_label (editable_button);
+        set_fingerprint_label (state_label);
 }
 
 static void
@@ -607,7 +606,7 @@ assistant_prepare (GtkAssistant *ass, GtkWidget *page, EnrollData *data)
 
 static void
 enroll_fingerprints (GtkWindow *parent,
-                     GtkButton *editable_button,
+                     GtkLabel  *state_label,
                      ActUser   *user)
 {
         GDBusProxy *device = NULL;
@@ -635,7 +634,7 @@ enroll_fingerprints (GtkWindow *parent,
 
         data = g_new0 (EnrollData, 1);
         data->device = device;
-        data->editable_button = editable_button;
+        data->state_label = state_label;
 
         /* Get some details about the device */
         result = g_dbus_connection_call_sync (connection,
@@ -735,16 +734,16 @@ enroll_fingerprints (GtkWindow *parent,
 
 void
 fingerprint_button_clicked (GtkWindow *parent,
-                            GtkButton *editable_button,
+                            GtkLabel  *state_label,
                             ActUser   *user)
 {
         bindtextdomain ("fprintd", GNOMELOCALEDIR);
         bind_textdomain_codeset ("fprintd", "UTF-8");
 
         if (is_disable != FALSE) {
-                delete_fingerprints_question (parent, editable_button, user);
+                delete_fingerprints_question (parent, state_label, user);
         } else {
-                enroll_fingerprints (parent, editable_button, user);
+                enroll_fingerprints (parent, state_label, user);
         }
 }
 
diff --git a/panels/user-accounts/um-fingerprint-dialog.h b/panels/user-accounts/um-fingerprint-dialog.h
index 83015c331..a1f6afc8b 100644
--- a/panels/user-accounts/um-fingerprint-dialog.h
+++ b/panels/user-accounts/um-fingerprint-dialog.h
@@ -20,7 +20,7 @@
 #include <gtk/gtk.h>
 #include <act/act.h>
 
-gboolean set_fingerprint_label (GtkButton *editable_button);
+gboolean set_fingerprint_label (GtkLabel   *state_label);
 void fingerprint_button_clicked (GtkWindow *parent,
-                                 GtkButton *editable_button,
+                                 GtkLabel  *state_label,
                                  ActUser   *user);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]