printers: Use CcPermissionInfobar

This makes the Printers panel consistent with the mockups at
https://gitlab.gnome.org/Teams/Design/settings-mockups/blob/master/users/users.png

See #685, #771 and !671
This commit is contained in:
Felipe Borges 2020-01-13 11:41:33 +01:00 committed by Georges Basile Stavracas Neto
parent 4897c6d8e3
commit c9eb8ebf41
2 changed files with 27 additions and 43 deletions

View file

@ -42,6 +42,7 @@
#include "pp-printer-entry.h"
#include "pp-job.h"
#include "cc-permission-infobar.h"
#include "cc-util.h"
#define RENEW_INTERVAL 500
@ -76,6 +77,7 @@ struct _CcPrintersPanel
gboolean is_authorized;
GSettings *lockdown_settings;
CcPermissionInfobar *permission_infobar;
PpNewPrinterDialog *pp_new_printer_dialog;
PpPPDSelectionDialog *pp_ppd_selection_dialog;
@ -88,7 +90,6 @@ struct _CcPrintersPanel
guint dbus_subscription_id;
guint remove_printer_timeout_id;
GtkWidget *headerbar_buttons;
GtkRevealer *notification;
PPDList *all_ppds_list;
GCancellable *get_all_ppds_cancellable;
@ -117,9 +118,6 @@ struct _CcPrintersPanel
CC_PANEL_REGISTER (CcPrintersPanel, cc_printers_panel)
#define PAGE_LOCK "_lock"
#define PAGE_ADDPRINTER "_addprinter"
typedef struct
{
gchar *printer_name;
@ -242,11 +240,10 @@ cc_printers_panel_constructed (GObject *object)
G_OBJECT_CLASS (cc_printers_panel_parent_class)->constructed (object);
shell = cc_panel_get_shell (CC_PANEL (self));
cc_shell_embed_widget_in_header (shell, self->headerbar_buttons, GTK_POS_RIGHT);
widget = (GtkWidget*)
gtk_builder_get_object (self->builder, "lock-button");
gtk_lock_button_set_permission (GTK_LOCK_BUTTON (widget), self->permission);
gtk_builder_get_object (self->builder, "printer-add-button");
cc_shell_embed_widget_in_header (shell, widget, GTK_POS_RIGHT);
widget = (GtkWidget*)
gtk_builder_get_object (self->builder, "search-button");
@ -1003,9 +1000,6 @@ update_sensitivity (gpointer user_data)
self->lockdown_settings &&
!g_settings_get_boolean (self->lockdown_settings, "disable-print-setup");
gtk_stack_set_visible_child_name (GTK_STACK (self->headerbar_buttons),
self->is_authorized ? PAGE_ADDPRINTER : PAGE_LOCK);
widget = (GtkWidget*) gtk_builder_get_object (self->builder, "main-vbox");
if (g_strcmp0 (gtk_stack_get_visible_child_name (GTK_STACK (widget)), "no-cups-page") == 0)
no_cups = TRUE;
@ -1018,9 +1012,6 @@ update_sensitivity (gpointer user_data)
cups_server[0] != '/')
local_server = FALSE;
widget = (GtkWidget*) gtk_builder_get_object (self->builder, "headerbar-buttons");
gtk_widget_set_visible (widget, !no_cups);
widget = (GtkWidget*) gtk_builder_get_object (self->builder, "search-button");
gtk_widget_set_visible (widget, !no_cups);
@ -1028,7 +1019,7 @@ update_sensitivity (gpointer user_data)
gtk_widget_set_visible (widget, !no_cups);
widget = (GtkWidget*) gtk_builder_get_object (self->builder, "printer-add-button");
gtk_widget_set_sensitive (widget, local_server && self->is_authorized && !no_cups && !self->new_printer_name);
gtk_widget_set_visible (widget, local_server && self->is_authorized && !no_cups && !self->new_printer_name);
widget = (GtkWidget*) gtk_builder_get_object (self->builder, "printer-add-button2");
gtk_widget_set_sensitive (widget, local_server && self->is_authorized && !no_cups && !self->new_printer_name);
@ -1191,7 +1182,7 @@ cc_printers_panel_init (CcPrintersPanel *self)
GtkWidget *widget;
PpCups *cups;
g_autoptr(GError) error = NULL;
gchar *objects[] = { "overlay", "headerbar-buttons", "search-button", NULL };
gchar *objects[] = { "overlay", "permission-infobar", "printer-add-button", "search-button", NULL };
guint builder_result;
g_resources_register (cc_printers_get_resource ());
@ -1236,6 +1227,8 @@ cc_printers_panel_init (CcPrintersPanel *self)
self->cups_status_check_cancellable = g_cancellable_new ();
self->get_job_attributes_cancellable = g_cancellable_new ();
g_type_ensure (CC_TYPE_PERMISSION_INFOBAR);
builder_result = gtk_builder_add_objects_from_resource (self->builder,
"/org/gnome/control-center/printers/printers.ui",
objects, &error);
@ -1247,10 +1240,6 @@ cc_printers_panel_init (CcPrintersPanel *self)
return;
}
widget = (GtkWidget*)
gtk_builder_get_object (self->builder, "headerbar-buttons");
self->headerbar_buttons = widget;
self->notification = (GtkRevealer*)
gtk_builder_get_object (self->builder, "notification");
@ -1262,6 +1251,9 @@ cc_printers_panel_init (CcPrintersPanel *self)
gtk_builder_get_object (self->builder, "notification-dismiss-button");
g_signal_connect (widget, "clicked", G_CALLBACK (on_notification_dismissed), self);
self->permission_infobar = (CcPermissionInfobar*)
gtk_builder_get_object (self->builder, "permission-infobar");
/* add the top level widget */
top_widget = (GtkWidget*)
gtk_builder_get_object (self->builder, "overlay");
@ -1304,6 +1296,10 @@ cc_printers_panel_init (CcPrintersPanel *self)
G_CALLBACK (on_permission_changed),
self,
G_CONNECT_AFTER);
cc_permission_infobar_set_permission (self->permission_infobar,
self->permission);
on_permission_changed (self->permission, NULL, self);
}
else

View file

@ -1,31 +1,14 @@
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="3.12"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkStack" id="headerbar-buttons">
<object class="GtkButton" id="printer-add-button">
<property name="visible">True</property>
<child>
<object class="GtkLockButton" id="lock-button">
<property name="visible">True</property>
</object>
<packing>
<property name="name">_lock</property>
</packing>
</child>
<child>
<object class="GtkButton" id="printer-add-button">
<property name="visible">True</property>
<property name="sensitive">True</property>
<property name="use_underline">True</property>
<property name="label" translatable="yes" comments="Translators: This button adds new printer.">Add…</property>
<style>
<class name="suggested-action"/>
</style>
</object>
<packing>
<property name="name">_addprinter</property>
</packing>
</child>
<property name="sensitive">True</property>
<property name="use_underline">True</property>
<property name="label" translatable="yes" comments="Translators: This button adds new printer.">Add…</property>
<style>
<class name="suggested-action"/>
</style>
</object>
<object class="GtkToggleButton" id="search-button">
@ -112,6 +95,11 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">GTK_ORIENTATION_VERTICAL</property>
<child>
<object class="CcPermissionInfobar" id="permission-infobar">
<property name="visible">True</property>
</object>
</child>
<child>
<object class="GtkSearchBar" id="search-bar">
<property name="visible">True</property>