[gnome-control-center] printers: Separate canonicalization of device name
- From: Marek Kašík <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] printers: Separate canonicalization of device name
- Date: Thu, 31 Jul 2014 09:46:07 +0000 (UTC)
commit 375c5b0086d376393d788965bce307fb91424d72
Author: Marek Kasik <mkasik redhat com>
Date: Tue Jul 29 16:47:14 2014 +0200
printers: Separate canonicalization of device name
Move code for canonicalization of device names to
a separate function for reusability.
https://bugzilla.gnome.org/show_bug.cgi?id=695564
panels/printers/pp-new-printer-dialog.c | 100 +++----------------------------
panels/printers/pp-utils.c | 88 +++++++++++++++++++++++++++
panels/printers/pp-utils.h | 6 ++
3 files changed, 102 insertions(+), 92 deletions(-)
---
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c
index c2800ff..fdfefd2 100644
--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -604,14 +604,7 @@ add_device_to_list (PpNewPrinterDialog *dialog,
{
PpNewPrinterDialogPrivate *priv = dialog->priv;
PpPrintDevice *store_device;
- PpPrintDevice *item;
- gboolean already_present;
- GList *iter;
- gchar *name = NULL;
- gchar *canonized_name = NULL;
- gchar *new_name;
- gchar *new_canonized_name = NULL;
- gint name_index, j;
+ gchar *canonicalized_name = NULL;
if (device)
{
@@ -631,93 +624,16 @@ add_device_to_list (PpNewPrinterDialog *dialog,
store_device->network_device = g_strcmp0 (device->device_class, "network") == 0;
store_device->show = TRUE;
- if (device->device_id)
- {
- name = get_tag_value (device->device_id, "mdl");
- if (!name)
- name = get_tag_value (device->device_id, "model");
- }
-
- if (!name &&
- device->device_make_and_model &&
- device->device_make_and_model[0] != '\0')
- {
- name = g_strdup (device->device_make_and_model);
- }
-
- if (!name &&
- device->device_name &&
- device->device_name[0] != '\0')
- {
- name = g_strdup (device->device_name);
- }
-
- if (!name &&
- device->device_info &&
- device->device_info[0] != '\0')
- {
- name = g_strdup (device->device_info);
- }
-
- g_strstrip (name);
-
- name_index = 2;
- already_present = FALSE;
- do
- {
- if (already_present)
- {
- new_name = g_strdup_printf ("%s %d", name, name_index);
- name_index++;
- }
- else
- {
- new_name = g_strdup (name);
- }
-
- if (new_name)
- {
- new_canonized_name = g_strcanon (g_strdup (new_name), ALLOWED_CHARACTERS, '-');
- }
-
- already_present = FALSE;
- for (j = 0; j < priv->num_of_dests; j++)
- if (g_strcmp0 (priv->dests[j].name, new_canonized_name) == 0)
- already_present = TRUE;
-
- for (iter = priv->devices; iter; iter = iter->next)
- {
- item = (PpPrintDevice *) iter->data;
- if (g_strcmp0 (item->device_name, new_canonized_name) == 0)
- already_present = TRUE;
- }
-
- for (iter = priv->new_devices; iter; iter = iter->next)
- {
- item = (PpPrintDevice *) iter->data;
- if (g_strcmp0 (item->device_name, new_canonized_name) == 0)
- already_present = TRUE;
- }
-
- if (already_present)
- {
- g_free (new_name);
- g_free (new_canonized_name);
- }
- else
- {
- g_free (name);
- g_free (canonized_name);
- name = new_name;
- canonized_name = new_canonized_name;
- }
- } while (already_present);
+ canonicalized_name = canonicalize_device_name (priv->devices,
+ priv->new_devices,
+ priv->dests,
+ priv->num_of_dests,
+ store_device);
g_free (store_device->display_name);
- store_device->display_name = g_strdup (canonized_name);
+ store_device->display_name = g_strdup (canonicalized_name);
g_free (store_device->device_name);
- store_device->device_name = canonized_name;
- g_free (name);
+ store_device->device_name = canonicalized_name;
if (new_device)
priv->new_devices = g_list_append (priv->new_devices, store_device);
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index 250040f..6730c6e 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -4146,3 +4146,91 @@ guess_device_hostname (PpPrintDevice *device)
return result;
}
+
+gchar *
+canonicalize_device_name (GList *devices,
+ GList *new_devices,
+ cups_dest_t *dests,
+ gint num_of_dests,
+ PpPrintDevice *device)
+{
+ PpPrintDevice *item;
+ gboolean already_present;
+ GList *iter;
+ gchar *name = NULL;
+ gchar *new_name;
+ gint name_index, j;
+
+ if (device->device_id != NULL)
+ {
+ name = get_tag_value (device->device_id, "mdl");
+ if (name == NULL)
+ name = get_tag_value (device->device_id, "model");
+ }
+
+ if (name == NULL &&
+ device->device_make_and_model != NULL &&
+ device->device_make_and_model[0] != '\0')
+ {
+ name = g_strdup (device->device_make_and_model);
+ }
+
+ if (name == NULL &&
+ device->device_original_name != NULL &&
+ device->device_original_name[0] != '\0')
+ {
+ name = g_strdup (device->device_original_name);
+ }
+
+ if (name == NULL &&
+ device->device_info != NULL &&
+ device->device_info[0] != '\0')
+ {
+ name = g_strdup (device->device_info);
+ }
+
+ g_strstrip (name);
+ g_strcanon (name, ALLOWED_CHARACTERS, '-');
+
+ name_index = 2;
+ already_present = FALSE;
+ do
+ {
+ if (already_present)
+ {
+ new_name = g_strdup_printf ("%s-%d", name, name_index);
+ name_index++;
+ }
+ else
+ {
+ new_name = g_strdup (name);
+ }
+
+ already_present = FALSE;
+ for (j = 0; j < num_of_dests; j++)
+ if (g_strcmp0 (dests[j].name, new_name) == 0)
+ already_present = TRUE;
+
+ for (iter = devices; iter; iter = iter->next)
+ {
+ item = (PpPrintDevice *) iter->data;
+ if (g_strcmp0 (item->device_original_name, new_name) == 0)
+ already_present = TRUE;
+ }
+
+ for (iter = new_devices; iter; iter = iter->next)
+ {
+ item = (PpPrintDevice *) iter->data;
+ if (g_strcmp0 (item->device_original_name, new_name) == 0)
+ already_present = TRUE;
+ }
+
+ if (already_present)
+ g_free (new_name);
+
+ } while (already_present);
+
+ g_free (name);
+
+ return new_name;
+}
diff --git a/panels/printers/pp-utils.h b/panels/printers/pp-utils.h
index f9bfd6e..11bc75c 100644
--- a/panels/printers/pp-utils.h
+++ b/panels/printers/pp-utils.h
@@ -308,6 +308,12 @@ void get_cups_devices_async (GCancellable *cancellable,
gchar *guess_device_hostname (PpPrintDevice *device);
+gchar *canonicalize_device_name (GList *devices,
+ GList *new_devices,
+ cups_dest_t *dests,
+ gint num_of_dests,
+ PpPrintDevice *device);
+
G_END_DECLS
#endif /* __PP_UTILS_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]