printers: Hide header buttons when there's no printer server

There's no reason to "Unlock" the panel and/or "Add" a new printer
if there's no printer server available.

This patch sets the visibility of the "headerbar-buttons" based on
whether the current visible stack page in the panel is the
"no-cups-page".

https://bugzilla.gnome.org/show_bug.cgi?id=778599
This commit is contained in:
Felipe Borges 2017-02-21 14:31:41 +01:00
parent 34565466a2
commit db9017bf30

View file

@ -801,17 +801,24 @@ set_current_page (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
GtkWidget *widget = GTK_WIDGET (user_data);
PpCups *cups = PP_CUPS (source_object);
gboolean success;
CcPrintersPanelPrivate *priv;
CcPrintersPanel *self = (CcPrintersPanel *) user_data;
GtkWidget *widget;
PpCups *cups = PP_CUPS (source_object);
gboolean success;
priv = PRINTERS_PANEL_PRIVATE (self);
success = pp_cups_connection_test_finish (cups, result);
g_object_unref (source_object);
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "main-vbox");
if (success)
gtk_stack_set_visible_child_name (GTK_STACK (widget), "empty-state");
else
gtk_stack_set_visible_child_name (GTK_STACK (widget), "no-cups-page");
update_sensitivity (user_data);
}
static void
@ -850,7 +857,7 @@ actualize_printers_list_cb (GObject *source_object,
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "main-vbox");
if (priv->num_dests == 0 && !priv->new_printer_name)
pp_cups_connection_test_async (g_object_ref (cups), set_current_page, widget);
pp_cups_connection_test_async (g_object_ref (cups), set_current_page, self);
else
gtk_stack_set_visible_child_name (GTK_STACK (widget), "printers-list");
@ -874,6 +881,8 @@ actualize_printers_list_cb (GObject *source_object,
add_printer_entry (self, priv->dests[i]);
}
update_sensitivity (user_data);
}
static void
@ -1027,6 +1036,15 @@ update_sensitivity (gpointer user_data)
cups_server[0] != '/')
local_server = FALSE;
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "headerbar-buttons");
gtk_widget_set_visible (widget, !no_cups);
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "search-button");
gtk_widget_set_visible (widget, !no_cups);
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "search-bar");
gtk_widget_set_visible (widget, !no_cups);
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "printer-add-button");
gtk_widget_set_sensitive (widget, local_server && priv->is_authorized && !no_cups && !priv->new_printer_name);