From eb9c110646de07127b934c82a76c0f3265d6e207 Mon Sep 17 00:00:00 2001 From: Felipe Borges Date: Wed, 20 Jul 2016 14:20:34 +0200 Subject: [PATCH] user-accounts: Move "Add User" button to header bar This also introduces a change to the Lock/Unlock logic. From now on, Unlocking the panel causes the "Lock" button to turn into the "Add User" button. https://bugzilla.gnome.org/show_bug.cgi?id=767065 --- .../data/user-accounts-dialog.ui | 55 +++++++++---------- panels/user-accounts/um-user-panel.c | 35 +++++++++--- 2 files changed, 53 insertions(+), 37 deletions(-) diff --git a/panels/user-accounts/data/user-accounts-dialog.ui b/panels/user-accounts/data/user-accounts-dialog.ui index b71b22d53..d3e8f29f6 100644 --- a/panels/user-accounts/data/user-accounts-dialog.ui +++ b/panels/user-accounts/data/user-accounts-dialog.ui @@ -1,6 +1,33 @@ + + True + False + + + True + True + + + _lock + + + + + True + True + _Add User… + True + + + + _adduser + + + @@ -52,34 +79,6 @@ 0 - - - True - 1 - True - icons - - - - True - False - list-add-symbolic - Add User Account - - - False - True - - - - - False - False - 1 - - True diff --git a/panels/user-accounts/um-user-panel.c b/panels/user-accounts/um-user-panel.c index bf4d9427a..dd02c0f87 100644 --- a/panels/user-accounts/um-user-panel.c +++ b/panels/user-accounts/um-user-panel.c @@ -73,6 +73,7 @@ struct _CcUserPanelPrivate { GtkWidget *notification; GSettings *login_screen_settings; + GtkWidget *headerbar_buttons; GtkWidget *main_box; GPermission *permission; GtkWidget *language_chooser; @@ -93,6 +94,9 @@ get_widget (CcUserPanelPrivate *d, const char *name) return (GtkWidget *)gtk_builder_get_object (d->builder, name); } +#define PAGE_LOCK "_lock" +#define PAGE_ADDUSER "_adduser" + enum { USER_COL, NAME_COL, @@ -1357,6 +1361,8 @@ on_permission_changed (GPermission *permission, is_authorized = g_permission_get_allowed (G_PERMISSION (d->permission)); self_selected = act_user_get_uid (user) == geteuid (); + gtk_stack_set_visible_child_name (GTK_STACK (d->headerbar_buttons), is_authorized ? PAGE_ADDUSER : PAGE_LOCK); + widget = get_widget (d, "add-user-toolbutton"); gtk_widget_set_sensitive (widget, is_authorized); if (is_authorized) { @@ -1723,6 +1729,24 @@ settings_or_null (const gchar *schema) return settings; } +static void +cc_user_panel_constructed (GObject *object) +{ + CcUserPanelPrivate *d; + CcUserPanel *self = UM_USER_PANEL (object); + GtkWidget *button; + CcShell *shell; + + G_OBJECT_CLASS (cc_user_panel_parent_class)->constructed (object); + d = self->priv; + + shell = cc_panel_get_shell (CC_PANEL (self)); + cc_shell_embed_widget_in_header (shell, d->headerbar_buttons); + + button = get_widget (d, "lock-button"); + gtk_lock_button_set_permission (GTK_LOCK_BUTTON (button), d->permission); +} + static void cc_user_panel_init (CcUserPanel *self) { @@ -1756,6 +1780,7 @@ cc_user_panel_init (CcUserPanel *self) return; } + d->headerbar_buttons = get_widget (d, "headerbar-buttons"); d->login_screen_settings = settings_or_null ("org.gnome.login-screen"); d->password_dialog = um_password_dialog_new (); @@ -1821,14 +1846,6 @@ cc_user_panel_dispose (GObject *object) G_OBJECT_CLASS (cc_user_panel_parent_class)->dispose (object); } -static GPermission * -cc_user_panel_get_permission (CcPanel *panel) -{ - CcUserPanelPrivate *priv = UM_USER_PANEL (panel)->priv; - - return priv->permission; -} - static const char * cc_user_panel_get_help_uri (CcPanel *panel) { @@ -1842,8 +1859,8 @@ cc_user_panel_class_init (CcUserPanelClass *klass) CcPanelClass *panel_class = CC_PANEL_CLASS (klass); object_class->dispose = cc_user_panel_dispose; + object_class->constructed = cc_user_panel_constructed; - panel_class->get_permission = cc_user_panel_get_permission; panel_class->get_help_uri = cc_user_panel_get_help_uri; g_type_class_add_private (klass, sizeof (CcUserPanelPrivate));