diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2020-10-15 09:57:44 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@gmail.com> | 2020-10-29 20:36:48 +0000 |
commit | 902f90e5eacb6462fd604b45d4a8ae908fd72c75 (patch) | |
tree | 0f6987b65fcb4b047afa938a3b3819c977e12241 | |
parent | 598505e71984ec10ce659cfd9c48a0bf58d566f8 (diff) | |
download | gnome-control-center-902f90e5eacb6462fd604b45d4a8ae908fd72c75.tar.gz |
printers: Add methods for getting printer name and location
Remove the GObject properties that aren't type safe.
-rw-r--r-- | panels/printers/cc-printers-panel.c | 61 | ||||
-rw-r--r-- | panels/printers/pp-printer-entry.c | 95 | ||||
-rw-r--r-- | panels/printers/pp-printer-entry.h | 4 | ||||
-rw-r--r-- | panels/printers/pp-printer.c | 125 | ||||
-rw-r--r-- | panels/printers/pp-printer.h | 2 |
5 files changed, 76 insertions, 211 deletions
diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c index 4ac1dbf4f..fe3e0f890 100644 --- a/panels/printers/cc-printers-panel.c +++ b/panels/printers/cc-printers-panel.c @@ -253,9 +253,7 @@ printer_removed_cb (GObject *source_object, { PpPrinter *printer = PP_PRINTER (source_object); g_autoptr(GError) error = NULL; - g_autofree gchar *printer_name = NULL; - g_object_get (printer, "printer-name", &printer_name, NULL); pp_printer_delete_finish (printer, result, &error); if (user_data != NULL) @@ -269,7 +267,7 @@ printer_removed_cb (GObject *source_object, for (iter = self->deleted_printers; iter != NULL; iter = iter->next) { - if (g_strcmp0 (iter->data, printer_name) == 0) + if (g_strcmp0 (iter->data, pp_printer_get_name (printer)) == 0) { g_free (iter->data); self->deleted_printers = g_list_delete_link (self->deleted_printers, iter); @@ -678,23 +676,18 @@ on_printer_deleted (CcPrintersPanel *self, { GtkLabel *label; g_autofree gchar *notification_message = NULL; - g_autofree gchar *printer_name = NULL; GtkWidget *widget; on_notification_dismissed (self); - g_object_get (printer_entry, - "printer-name", &printer_name, - NULL); - /* Translators: %s is the printer name */ notification_message = g_strdup_printf (_("Printer ā%sā has been deleted"), - printer_name); + pp_printer_entry_get_name (printer_entry)); label = (GtkLabel*) gtk_builder_get_object (self->builder, "notification-label"); gtk_label_set_label (label, notification_message); - self->deleted_printer_name = g_strdup (printer_name); + self->deleted_printer_name = g_strdup (pp_printer_entry_get_name (printer_entry)); widget = (GtkWidget*) gtk_builder_get_object (self->builder, "content"); gtk_list_box_invalidate_filter (GTK_LIST_BOX (widget)); @@ -709,10 +702,7 @@ on_printer_renamed (CcPrintersPanel *self, gchar *new_name, PpPrinterEntry *printer_entry) { - g_object_get (printer_entry, - "printer-name", - &self->old_printer_name, - NULL); + self->old_printer_name = g_strdup (pp_printer_entry_get_name (printer_entry)); self->renamed_printer_name = g_strdup (new_name); } @@ -786,15 +776,12 @@ destroy_nonexisting_entries (PpPrinterEntry *entry, gpointer user_data) { CcPrintersPanel *self = (CcPrintersPanel *) user_data; - g_autofree gchar *printer_name = NULL; gboolean exists = FALSE; gint i; - g_object_get (G_OBJECT (entry), "printer-name", &printer_name, NULL); - for (i = 0; i < self->num_dests; i++) { - if (g_strcmp0 (self->dests[i].name, printer_name) == 0) + if (g_strcmp0 (self->dests[i].name, pp_printer_entry_get_name (entry)) == 0) { exists = TRUE; break; @@ -803,8 +790,8 @@ destroy_nonexisting_entries (PpPrinterEntry *entry, if (!exists) { + g_hash_table_remove (self->printer_entries, pp_printer_entry_get_name (entry)); gtk_widget_destroy (GTK_WIDGET (entry)); - g_hash_table_remove (self->printer_entries, printer_name); } } @@ -1120,20 +1107,14 @@ filter_function (GtkListBoxRow *row, gpointer user_data) { CcPrintersPanel *self = (CcPrintersPanel*) user_data; + PpPrinterEntry *entry = PP_PRINTER_ENTRY (row); GtkWidget *search_entry; gboolean retval; g_autofree gchar *search = NULL; g_autofree gchar *name = NULL; g_autofree gchar *location = NULL; - g_autofree gchar *printer_name = NULL; - g_autofree gchar *printer_location = NULL; GList *iter; - g_object_get (G_OBJECT (row), - "printer-name", &printer_name, - "printer-location", &printer_location, - NULL); - search_entry = (GtkWidget*) gtk_builder_get_object (self->builder, "search-entry"); @@ -1143,8 +1124,8 @@ filter_function (GtkListBoxRow *row, } else { - name = cc_util_normalize_casefold_and_unaccent (printer_name); - location = cc_util_normalize_casefold_and_unaccent (printer_location); + name = cc_util_normalize_casefold_and_unaccent (pp_printer_entry_get_name (entry)); + location = cc_util_normalize_casefold_and_unaccent (pp_printer_entry_get_location (entry)); search = cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (search_entry))); @@ -1154,7 +1135,7 @@ filter_function (GtkListBoxRow *row, } if (self->deleted_printer_name != NULL && - g_strcmp0 (self->deleted_printer_name, printer_name) == 0) + g_strcmp0 (self->deleted_printer_name, pp_printer_entry_get_name (entry)) == 0) { retval = FALSE; } @@ -1163,7 +1144,7 @@ filter_function (GtkListBoxRow *row, { for (iter = self->deleted_printers; iter != NULL; iter = iter->next) { - if (g_strcmp0 (iter->data, printer_name) == 0) + if (g_strcmp0 (iter->data, pp_printer_entry_get_name (entry)) == 0) { retval = FALSE; break; @@ -1179,27 +1160,19 @@ sort_function (GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer user_data) { - g_autofree gchar *printer_name1 = NULL; - g_autofree gchar *printer_name2 = NULL; - - g_object_get (G_OBJECT (row1), - "printer-name", &printer_name1, - NULL); - - g_object_get (G_OBJECT (row2), - "printer-name", &printer_name2, - NULL); + PpPrinterEntry *entry1 = PP_PRINTER_ENTRY (row1); + PpPrinterEntry *entry2 = PP_PRINTER_ENTRY (row2); - if (printer_name1 != NULL) + if (pp_printer_entry_get_name (entry1) != NULL) { - if (printer_name2 != NULL) - return g_ascii_strcasecmp (printer_name1, printer_name2); + if (pp_printer_entry_get_name (entry2) != NULL) + return g_ascii_strcasecmp (pp_printer_entry_get_name (entry1), pp_printer_entry_get_name (entry2)); else return 1; } else { - if (printer_name2 != NULL) + if (pp_printer_entry_get_name (entry2) != NULL) return -1; else return 0; diff --git a/panels/printers/pp-printer-entry.c b/panels/printers/pp-printer-entry.c index ad0db5587..9a2c7cb29 100644 --- a/panels/printers/pp-printer-entry.c +++ b/panels/printers/pp-printer-entry.c @@ -94,12 +94,6 @@ struct _PpPrinterEntryClass G_DEFINE_TYPE (PpPrinterEntry, pp_printer_entry, GTK_TYPE_LIST_BOX_ROW) enum { - PROP_0, - PROP_PRINTER_NAME, - PROP_PRINTER_LOCATION, -}; - -enum { IS_DEFAULT_PRINTER, PRINTER_DELETE, PRINTER_RENAMED, @@ -125,49 +119,6 @@ ink_level_data_free (InkLevelData *data) } static void -pp_printer_entry_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - PpPrinterEntry *self = PP_PRINTER_ENTRY (object); - - switch (prop_id) - { - case PROP_PRINTER_NAME: - g_value_set_string (value, self->printer_name); - break; - case PROP_PRINTER_LOCATION: - g_value_set_string (value, self->printer_location); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - -static void -pp_printer_entry_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - PpPrinterEntry *self = PP_PRINTER_ENTRY (object); - - switch (prop_id) - { - case PROP_PRINTER_NAME: - self->printer_name = g_value_dup_string (value); - break; - case PROP_PRINTER_LOCATION: - self->printer_location = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void pp_printer_entry_init (PpPrinterEntry *self) { gtk_widget_init_template (GTK_WIDGET (self)); @@ -403,16 +354,11 @@ on_printer_rename_cb (GObject *source_object, gpointer user_data) { PpPrinterEntry *self = user_data; - g_autofree gchar *printer_name = NULL; if (!pp_printer_rename_finish (PP_PRINTER (source_object), result, NULL)) return; - g_object_get (PP_PRINTER (source_object), - "printer-name", &printer_name, - NULL); - - g_signal_emit_by_name (self, "printer-renamed", printer_name); + g_signal_emit_by_name (self, "printer-renamed", pp_printer_get_name (PP_PRINTER (source_object))); } static void @@ -691,7 +637,9 @@ pp_printer_entry_new (cups_dest_t printer, { PpPrinterEntry *self; - self = g_object_new (PP_PRINTER_ENTRY_TYPE, "printer-name", printer.name, NULL); + self = g_object_new (PP_PRINTER_ENTRY_TYPE, NULL); + + self->printer_name = g_strdup (printer.name); self->clean_command = pp_maintenance_command_new (self->printer_name, "Clean", @@ -707,6 +655,20 @@ pp_printer_entry_new (cups_dest_t printer, return self; } +const gchar * +pp_printer_entry_get_name (PpPrinterEntry *self) +{ + g_return_val_if_fail (PP_IS_PRINTER_ENTRY (self), NULL); + return self->printer_name; +} + +const gchar * +pp_printer_entry_get_location (PpPrinterEntry *self) +{ + g_return_val_if_fail (PP_IS_PRINTER_ENTRY (self), NULL); + return self->printer_location; +} + void pp_printer_entry_update (PpPrinterEntry *self, cups_dest_t printer, @@ -924,7 +886,8 @@ pp_printer_entry_update (PpPrinterEntry *self, else printer_icon_name = g_strdup ("printer-network"); - g_object_set (self, "printer-location", location, NULL); + g_free (self->printer_location); + self->printer_location = g_strdup (location); self->is_accepting_jobs = is_accepting_jobs; self->is_authorized = is_authorized; @@ -1024,26 +987,8 @@ pp_printer_entry_class_init (PpPrinterEntryClass *klass) gtk_widget_class_bind_template_callback (widget_class, show_jobs_dialog); gtk_widget_class_bind_template_callback (widget_class, restart_printer); - object_class->get_property = pp_printer_entry_get_property; - object_class->set_property = pp_printer_entry_set_property; object_class->dispose = pp_printer_entry_dispose; - g_object_class_install_property (object_class, - PROP_PRINTER_NAME, - g_param_spec_string ("printer-name", - "Printer Name", - "The Printer unique name", - NULL, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_PRINTER_LOCATION, - g_param_spec_string ("printer-location", - "Printer Location", - "Printer location string", - NULL, - G_PARAM_READWRITE)); - signals[IS_DEFAULT_PRINTER] = g_signal_new ("printer-changed", G_TYPE_FROM_CLASS (klass), diff --git a/panels/printers/pp-printer-entry.h b/panels/printers/pp-printer-entry.h index 5db39d9ec..1c6b3dced 100644 --- a/panels/printers/pp-printer-entry.h +++ b/panels/printers/pp-printer-entry.h @@ -28,6 +28,10 @@ G_DECLARE_FINAL_TYPE (PpPrinterEntry, pp_printer_entry, PP, PRINTER_ENTRY, GtkLi PpPrinterEntry *pp_printer_entry_new (cups_dest_t printer, gboolean is_authorized); +const gchar *pp_printer_entry_get_name (PpPrinterEntry *self); + +const gchar *pp_printer_entry_get_location (PpPrinterEntry *self); + void pp_printer_entry_update_jobs_count (PpPrinterEntry *self); GSList *pp_printer_entry_get_size_group_widgets (PpPrinterEntry *self); diff --git a/panels/printers/pp-printer.c b/panels/printers/pp-printer.c index fd478f9ad..67720a82b 100644 --- a/panels/printers/pp-printer.c +++ b/panels/printers/pp-printer.c @@ -34,12 +34,6 @@ struct _PpPrinter G_DEFINE_TYPE (PpPrinter, pp_printer, G_TYPE_OBJECT) -enum -{ - PROP_0 = 0, - PROP_NAME -}; - static void pp_printer_dispose (GObject *object) { @@ -51,60 +45,11 @@ pp_printer_dispose (GObject *object) } static void -pp_printer_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - PpPrinter *self = PP_PRINTER (object); - - switch (property_id) - { - case PROP_NAME: - g_value_set_string (value, self->printer_name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -pp_printer_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - PpPrinter *self = PP_PRINTER (object); - - switch (property_id) - { - case PROP_NAME: - g_free (self->printer_name); - self->printer_name = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } - -} - -static void pp_printer_class_init (PpPrinterClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->set_property = pp_printer_set_property; - gobject_class->get_property = pp_printer_get_property; gobject_class->dispose = pp_printer_dispose; - - g_object_class_install_property (gobject_class, PROP_NAME, - g_param_spec_string ("printer-name", - "Printer name", - "Name of this printer", - NULL, - G_PARAM_READWRITE)); } static void @@ -115,11 +60,20 @@ pp_printer_init (PpPrinter *self) PpPrinter * pp_printer_new (const gchar *name) { - PpPrinter *self = g_object_new (PP_TYPE_PRINTER, "printer-name", name, NULL); + PpPrinter *self = g_object_new (PP_TYPE_PRINTER, NULL); + + self->printer_name = g_strdup (name); return self; } +const gchar * +pp_printer_get_name (PpPrinter *self) +{ + g_return_val_if_fail (PP_IS_PRINTER (self), NULL); + return self->printer_name; +} + static void printer_rename_thread (GTask *task, gpointer source_object, @@ -128,16 +82,14 @@ printer_rename_thread (GTask *task, { PpPrinter *self = PP_PRINTER (source_object); gboolean result; - gchar *new_printer_name = task_data; - g_autofree gchar *old_printer_name = NULL; + const gchar *new_printer_name = task_data; - g_object_get (self, "printer-name", &old_printer_name, NULL); - - result = printer_rename (old_printer_name, new_printer_name); + result = printer_rename (self->printer_name, new_printer_name); if (result) { - g_object_set (self, "printer-name", new_printer_name, NULL); + g_free (self->printer_name); + self->printer_name = g_strdup (new_printer_name); } g_task_return_boolean (task, result); @@ -160,21 +112,20 @@ printer_rename_dbus_cb (GObject *source_object, if (output != NULL) { - g_autofree gchar *old_printer_name = NULL; const gchar *ret_error; self = g_task_get_source_object (task); - g_object_get (self, "printer-name", &old_printer_name, NULL); g_variant_get (output, "(&s)", &ret_error); if (ret_error[0] != '\0') { - g_warning ("cups-pk-helper: renaming of printer %s failed: %s", old_printer_name, ret_error); + g_warning ("cups-pk-helper: renaming of printer %s failed: %s", self->printer_name, ret_error); } else { result = TRUE; - g_object_set (self, "printer-name", g_task_get_task_data (task), NULL); + g_free (self->printer_name); + self->printer_name = g_strdup (g_task_get_task_data (task)); } g_task_return_boolean (task, result); @@ -201,6 +152,7 @@ get_bus_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { + PpPrinter *self; GDBusConnection *bus; g_autoptr(GError) error = NULL; g_autoptr(GTask) task = user_data; @@ -208,18 +160,14 @@ get_bus_cb (GObject *source_object, bus = g_bus_get_finish (res, &error); if (bus != NULL) { - g_autofree gchar *printer_name = NULL; - - g_object_get (g_task_get_source_object (task), - "printer-name", &printer_name, - NULL); + self = g_task_get_source_object (task); g_dbus_connection_call (bus, MECHANISM_BUS, "/", MECHANISM_BUS, "PrinterRename", g_variant_new ("(ss)", - printer_name, + self->printer_name, g_task_get_task_data (task)), G_VARIANT_TYPE ("(s)"), G_DBUS_CALL_FLAGS_NONE, @@ -295,10 +243,8 @@ get_jobs_thread (GTask *task, gint num_jobs; gint i, j; - g_object_get (self, "printer-name", &printer_name, NULL); - num_jobs = cupsGetJobs (&jobs, - printer_name, + self->printer_name, get_jobs_data->myjobs ? 1 : 0, get_jobs_data->which_jobs); @@ -328,7 +274,7 @@ get_jobs_thread (GTask *task, if (auth_info_required == NULL) { - g_autofree gchar *printer_uri = g_strdup_printf ("ipp://localhost/printers/%s", printer_name); + g_autofree gchar *printer_uri = g_strdup_printf ("ipp://localhost/printers/%s", self->printer_name); printer_request = ippNewRequest (IPP_GET_PRINTER_ATTRIBUTES); ippAddString (printer_request, IPP_TAG_OPERATION, IPP_TAG_URI, @@ -408,6 +354,7 @@ pp_printer_delete_dbus_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { + PpPrinter *self; g_autoptr(GVariant) output = NULL; gboolean result = FALSE; g_autoptr(GError) error = NULL; @@ -419,14 +366,13 @@ pp_printer_delete_dbus_cb (GObject *source_object, if (output != NULL) { - g_autofree gchar *printer_name = NULL; const gchar *ret_error; - g_object_get (g_task_get_source_object (task), "printer-name", &printer_name, NULL); + self = g_task_get_source_object (task); g_variant_get (output, "(&s)", &ret_error); if (ret_error[0] != '\0') - g_warning ("cups-pk-helper: removing of printer %s failed: %s", printer_name, ret_error); + g_warning ("cups-pk-helper: removing of printer %s failed: %s", self->printer_name, ret_error); else result = TRUE; @@ -445,6 +391,7 @@ pp_printer_delete_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { + PpPrinter *self; GDBusConnection *bus; g_autoptr(GError) error = NULL; GTask *task = user_data; @@ -452,18 +399,14 @@ pp_printer_delete_cb (GObject *source_object, bus = g_bus_get_finish (res, &error); if (bus != NULL) { - g_autofree gchar *printer_name = NULL; - - g_object_get (g_task_get_source_object (task), - "printer-name", &printer_name, - NULL); + self = g_task_get_source_object (task); g_dbus_connection_call (bus, MECHANISM_BUS, "/", MECHANISM_BUS, "PrinterDelete", - g_variant_new ("(s)", printer_name), + g_variant_new ("(s)", self->printer_name), G_VARIANT_TYPE ("(s)"), G_DBUS_CALL_FLAGS_NONE, -1, @@ -531,14 +474,12 @@ print_file_thread (GTask *task, cups_dest_t *dest = NULL; const gchar *printer_type = NULL; gboolean ret = FALSE; - g_autofree gchar *printer_name = NULL; g_autofree gchar *printer_uri = NULL; g_autofree gchar *resource = NULL; ipp_t *response = NULL; ipp_t *request; - g_object_get (self, "printer-name", &printer_name, NULL); - dest = cupsGetNamedDest (CUPS_HTTP_DEFAULT, printer_name, NULL); + dest = cupsGetNamedDest (CUPS_HTTP_DEFAULT, self->printer_name, NULL); if (dest != NULL) { printer_type = cupsGetOption ("printer-type", @@ -552,13 +493,13 @@ print_file_thread (GTask *task, if (type & CUPS_PRINTER_CLASS) { - printer_uri = g_strdup_printf ("ipp://localhost/classes/%s", printer_name); - resource = g_strdup_printf ("/classes/%s", printer_name); + printer_uri = g_strdup_printf ("ipp://localhost/classes/%s", self->printer_name); + resource = g_strdup_printf ("/classes/%s", self->printer_name); } else { - printer_uri = g_strdup_printf ("ipp://localhost/printers/%s", printer_name); - resource = g_strdup_printf ("/printers/%s", printer_name); + printer_uri = g_strdup_printf ("ipp://localhost/printers/%s", self->printer_name); + resource = g_strdup_printf ("/printers/%s", self->printer_name); } print_file_data = g_task_get_task_data (task); diff --git a/panels/printers/pp-printer.h b/panels/printers/pp-printer.h index 5fac607a7..a63fbb94f 100644 --- a/panels/printers/pp-printer.h +++ b/panels/printers/pp-printer.h @@ -34,6 +34,8 @@ GType pp_printer_get_type (void) G_GNUC_CONST; PpPrinter *pp_printer_new (const gchar *name); +const gchar *pp_printer_get_name (PpPrinter *printer); + void pp_printer_rename_async (PpPrinter *printer, const gchar *new_printer_name, GCancellable *cancellable, |