[gnome-control-center] Printers: Add method for authentication of jobs to PpPrinterEntry
- From: Marek Kašík <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] Printers: Add method for authentication of jobs to PpPrinterEntry
- Date: Tue, 20 Feb 2018 00:14:07 +0000 (UTC)
commit 212b8a65044574eeaa3618e39ef044ab7399637b
Author: Marek Kasik <mkasik redhat com>
Date: Fri Feb 16 17:02:19 2018 +0100
Printers: Add method for authentication of jobs to PpPrinterEntry
This commit adds method for triggerring of authentication of print jobs
to PpPrinterEntry. This is needed for asking for authentication of jobs
of a printer from the main panel.
https://bugzilla.gnome.org/show_bug.cgi?id=758170
panels/printers/pp-jobs-dialog.c | 36 ++++++++++++++++++++++++++++++++++++
panels/printers/pp-jobs-dialog.h | 20 +++++++++++---------
panels/printers/pp-printer-entry.c | 28 +++++++++++++++++++++-------
panels/printers/pp-printer-entry.h | 2 ++
4 files changed, 70 insertions(+), 16 deletions(-)
---
diff --git a/panels/printers/pp-jobs-dialog.c b/panels/printers/pp-jobs-dialog.c
index 7b2993114..63120fffc 100644
--- a/panels/printers/pp-jobs-dialog.c
+++ b/panels/printers/pp-jobs-dialog.c
@@ -59,6 +59,8 @@ struct _PpJobsDialog {
gchar *printer_name;
gchar **actual_auth_info_required;
+ gboolean jobs_filled;
+ gboolean pop_up_authentication_popup;
GCancellable *get_jobs_cancellable;
};
@@ -305,6 +307,18 @@ create_listbox_row (gpointer item,
return box;
}
+static void
+pop_up_authentication_popup (PpJobsDialog *dialog)
+{
+ GtkWidget *widget;
+
+ if (dialog->actual_auth_info_required != NULL)
+ {
+ widget = GTK_WIDGET (gtk_builder_get_object (GTK_BUILDER (dialog->builder),
"authenticate-jobs-button"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+ }
+}
+
static void
update_jobs_list_cb (GObject *source_object,
GAsyncResult *result,
@@ -395,6 +409,17 @@ update_jobs_list_cb (GObject *source_object,
g_list_free (jobs);
g_clear_object (&dialog->get_jobs_cancellable);
+
+ if (!dialog->jobs_filled)
+ {
+ if (dialog->pop_up_authentication_popup)
+ {
+ pop_up_authentication_popup (dialog);
+ dialog->pop_up_authentication_popup = FALSE;
+ }
+
+ dialog->jobs_filled = TRUE;
+ }
}
static void
@@ -561,6 +586,8 @@ pp_jobs_dialog_new (GtkWindow *parent,
dialog->user_data = user_data;
dialog->printer_name = g_strdup (printer_name);
dialog->actual_auth_info_required = NULL;
+ dialog->jobs_filled = FALSE;
+ dialog->pop_up_authentication_popup = FALSE;
/* connect signals */
g_signal_connect (dialog->dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);
@@ -653,3 +680,12 @@ pp_jobs_dialog_hide (PpJobsDialog *dialog)
{
gtk_widget_hide (GTK_WIDGET (dialog->dialog));
}
+
+void
+pp_jobs_dialog_authenticate_jobs (PpJobsDialog *dialog)
+{
+ if (dialog->jobs_filled)
+ pop_up_authentication_popup (dialog);
+ else
+ dialog->pop_up_authentication_popup = TRUE;
+}
diff --git a/panels/printers/pp-jobs-dialog.h b/panels/printers/pp-jobs-dialog.h
index 408805de7..492a7c413 100644
--- a/panels/printers/pp-jobs-dialog.h
+++ b/panels/printers/pp-jobs-dialog.h
@@ -28,15 +28,17 @@ G_BEGIN_DECLS
typedef struct _PpJobsDialog PpJobsDialog;
-PpJobsDialog *pp_jobs_dialog_new (GtkWindow *parent,
- UserResponseCallback user_callback,
- gpointer user_data,
- gchar *printer_name);
-void pp_jobs_dialog_update (PpJobsDialog *dialog);
-void pp_jobs_dialog_set_callback (PpJobsDialog *dialog,
- UserResponseCallback user_callback,
- gpointer user_data);
-void pp_jobs_dialog_free (PpJobsDialog *dialog);
+PpJobsDialog *pp_jobs_dialog_new (GtkWindow *parent,
+ UserResponseCallback user_callback,
+ gpointer user_data,
+ gchar *printer_name);
+void pp_jobs_dialog_update (PpJobsDialog *dialog);
+void pp_jobs_dialog_set_callback (PpJobsDialog *dialog,
+ UserResponseCallback user_callback,
+ gpointer user_data);
+void pp_jobs_dialog_free (PpJobsDialog *dialog);
+
+void pp_jobs_dialog_authenticate_jobs (PpJobsDialog *dialog);
G_END_DECLS
diff --git a/panels/printers/pp-printer-entry.c b/panels/printers/pp-printer-entry.c
index 10fc934e0..827ee837a 100644
--- a/panels/printers/pp-printer-entry.c
+++ b/panels/printers/pp-printer-entry.c
@@ -662,17 +662,31 @@ printer_jobs_dialog_free_cb (GtkDialog *dialog,
pp_jobs_dialog_free ((PpJobsDialog *) user_data);
}
+static void
+pp_printer_entry_show_jobs_dialog (PpPrinterEntry *self)
+{
+ if (self->pp_jobs_dialog == NULL)
+ {
+ self->pp_jobs_dialog = pp_jobs_dialog_new (
+ GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))),
+ jobs_dialog_response_cb,
+ self,
+ self->printer_name);
+ }
+}
+
+void
+pp_printer_entry_authenticate_jobs (PpPrinterEntry *self)
+{
+ pp_printer_entry_show_jobs_dialog (self);
+ pp_jobs_dialog_authenticate_jobs (self->pp_jobs_dialog);
+}
+
static void
show_jobs_dialog (GtkButton *button,
gpointer user_data)
{
- PpPrinterEntry *self = PP_PRINTER_ENTRY (user_data);
-
- self->pp_jobs_dialog = pp_jobs_dialog_new (
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))),
- jobs_dialog_response_cb,
- self,
- self->printer_name);
+ pp_printer_entry_show_jobs_dialog (PP_PRINTER_ENTRY (user_data));
}
enum
diff --git a/panels/printers/pp-printer-entry.h b/panels/printers/pp-printer-entry.h
index 05544bc13..e8ea41d94 100644
--- a/panels/printers/pp-printer-entry.h
+++ b/panels/printers/pp-printer-entry.h
@@ -38,4 +38,6 @@ void pp_printer_entry_update_jobs_count (PpPrinterEntry *self);
GSList *pp_printer_entry_get_size_group_widgets (PpPrinterEntry *self);
+void pp_printer_entry_authenticate_jobs (PpPrinterEntry *self);
+
#endif /* PP_PRINTER_ENTRY_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]