[gnome-control-center] printers: Merge TDevice into PpPrintDevice



commit 190d27b8aa1638254282564a4ce3d4494f8e4d42
Author: Marek Kasik <mkasik redhat com>
Date:   Tue Jul 29 16:44:06 2014 +0200

    printers: Merge TDevice into PpPrintDevice
    
    PpPrintDevice has grown quite a lot since its introduction.
    It contains almost all members of TDevice now.
    Merging members of TDevice into PpPrintDevice saves us some work
    and allows us to process TDevice's data out of pp-new-printer-dialog.c.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=695564

 panels/printers/pp-new-printer-dialog.c |  213 +++++++++----------------------
 panels/printers/pp-utils.c              |   32 +++++
 panels/printers/pp-utils.h              |    7 +-
 3 files changed, 96 insertions(+), 156 deletions(-)
---
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c
index a379c7b..c2800ff 100644
--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -80,28 +80,6 @@ enum
   DEVICE_N_COLUMNS
 };
 
-typedef struct
-{
-  gchar    *display_name;
-  gchar    *device_name;
-  gchar    *device_original_name;
-  gchar    *device_info;
-  gchar    *device_location;
-  gchar    *device_make_and_model;
-  gchar    *device_uri;
-  gchar    *device_id;
-  gchar    *device_ppd;
-  gchar    *host_name;
-  gint      host_port;
-  gboolean  network_device;
-  gint      acquisition_method;
-  gboolean  is_authenticated_server;
-  gboolean  show;
-} TDevice;
-
-static void     t_device_free (gpointer data);
-static TDevice *t_device_copy (TDevice *device);
-
 struct _PpNewPrinterDialogPrivate
 {
   GtkBuilder *builder;
@@ -124,7 +102,7 @@ struct _PpNewPrinterDialogPrivate
 
   PpPPDSelectionDialog *ppd_selection_dialog;
 
-  TDevice *new_device;
+  PpPrintDevice *new_device;
 
   PPDList *list;
 
@@ -529,10 +507,10 @@ pp_new_printer_dialog_finalize (GObject *object)
   if (priv->builder)
     g_clear_object (&priv->builder);
 
-  g_list_free_full (priv->devices, t_device_free);
+  g_list_free_full (priv->devices, (GDestroyNotify) pp_print_device_free);
   priv->devices = NULL;
 
-  g_list_free_full (priv->new_devices, t_device_free);
+  g_list_free_full (priv->new_devices, (GDestroyNotify) pp_print_device_free);
   priv->new_devices = NULL;
 
   if (priv->num_of_dests > 0)
@@ -603,16 +581,16 @@ remove_device_from_list (PpNewPrinterDialog *dialog,
                          const gchar        *device_name)
 {
   PpNewPrinterDialogPrivate *priv = dialog->priv;
-  TDevice                   *device;
+  PpPrintDevice             *device;
   GList                     *iter;
 
   for (iter = priv->devices; iter; iter = iter->next)
     {
-      device = (TDevice *) iter->data;
+      device = (PpPrintDevice *) iter->data;
       if (g_strcmp0 (device->device_name, device_name) == 0)
         {
           priv->devices = g_list_remove_link (priv->devices, iter);
-          t_device_free (iter->data);
+          pp_print_device_free (iter->data);
           g_list_free (iter);
           break;
         }
@@ -625,16 +603,15 @@ add_device_to_list (PpNewPrinterDialog *dialog,
                     gboolean            new_device)
 {
   PpNewPrinterDialogPrivate *priv = dialog->priv;
-  gboolean  network_device;
-  gboolean  already_present;
-  TDevice  *store_device;
-  TDevice  *item;
-  GList    *iter;
-  gchar    *name = NULL;
-  gchar    *canonized_name = NULL;
-  gchar    *new_name;
-  gchar    *new_canonized_name = NULL;
-  gint      name_index, j;
+  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;
 
   if (device)
     {
@@ -648,24 +625,10 @@ add_device_to_list (PpNewPrinterDialog *dialog,
            device->acquisition_method == ACQUISITION_METHOD_SAMBA_HOST ||
            device->acquisition_method == ACQUISITION_METHOD_SAMBA)
         {
-          network_device = FALSE;
-
-          if (device->device_class &&
-              g_strcmp0 (device->device_class, "network") == 0)
-            network_device = TRUE;
-
-          store_device = g_new0 (TDevice, 1);
+          store_device = pp_print_device_copy (device);
+          g_free (store_device->device_original_name);
           store_device->device_original_name = g_strdup (device->device_name);
-          store_device->device_info = g_strdup (device->device_info);
-          store_device->device_location = g_strdup (device->device_location);
-          store_device->device_make_and_model = g_strdup (device->device_make_and_model);
-          store_device->device_uri = g_strdup (device->device_uri);
-          store_device->device_id = g_strdup (device->device_id);
-          store_device->device_ppd = g_strdup (device->device_ppd);
-          store_device->host_name = g_strdup (device->host_name);
-          store_device->host_port = device->host_port;
-          store_device->network_device = network_device;
-          store_device->acquisition_method = device->acquisition_method;
+          store_device->network_device = g_strcmp0 (device->device_class, "network") == 0;
           store_device->show = TRUE;
 
           if (device->device_id)
@@ -724,14 +687,14 @@ add_device_to_list (PpNewPrinterDialog *dialog,
 
               for (iter = priv->devices; iter; iter = iter->next)
                 {
-                  item = (TDevice *) iter->data;
+                  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 = (TDevice *) iter->data;
+                  item = (PpPrintDevice *) iter->data;
                   if (g_strcmp0 (item->device_name, new_canonized_name) == 0)
                     already_present = TRUE;
                 }
@@ -750,7 +713,9 @@ add_device_to_list (PpNewPrinterDialog *dialog,
                 }
             } while (already_present);
 
+          g_free (store_device->display_name);
           store_device->display_name = g_strdup (canonized_name);
+          g_free (store_device->device_name);
           store_device->device_name = canonized_name;
           g_free (name);
 
@@ -762,7 +727,7 @@ add_device_to_list (PpNewPrinterDialog *dialog,
       else if (device->is_authenticated_server &&
               device->host_name != NULL)
         {
-          store_device = g_new0 (TDevice, 1);
+          store_device = g_new0 (PpPrintDevice, 1);
           store_device->device_name = g_strdup (device->host_name);
           store_device->host_name = g_strdup (device->host_name);
           store_device->is_authenticated_server = device->is_authenticated_server;
@@ -786,16 +751,16 @@ add_devices_to_list (PpNewPrinterDialog  *dialog,
     }
 }
 
-static TDevice *
+static PpPrintDevice *
 device_in_list (gchar *device_uri,
                 GList *device_list)
 {
-  GList   *iter;
-  TDevice *device;
+  PpPrintDevice *device;
+  GList         *iter;
 
   for (iter = device_list; iter; iter = iter->next)
     {
-      device = (TDevice *) iter->data;
+      device = (PpPrintDevice *) iter->data;
       /* GroupPhysicalDevices returns uris without port numbers */
       if (device->device_uri != NULL &&
           g_str_has_prefix (device->device_uri, device_uri))
@@ -806,56 +771,6 @@ device_in_list (gchar *device_uri,
 }
 
 static void
-t_device_free (gpointer data)
-{
-  if (data)
-    {
-      TDevice *device = (TDevice *) data;
-
-      g_free (device->display_name);
-      g_free (device->device_name);
-      g_free (device->device_original_name);
-      g_free (device->device_info);
-      g_free (device->device_location);
-      g_free (device->device_make_and_model);
-      g_free (device->device_uri);
-      g_free (device->device_id);
-      g_free (device->device_ppd);
-      g_free (device->host_name);
-      g_free (device);
-    }
-}
-
-static TDevice *
-t_device_copy (TDevice *device)
-{
-  TDevice *result = NULL;
-
-  if (device)
-    {
-      result = g_new0 (TDevice, 1);
-
-      result->display_name = g_strdup (device->display_name);
-      result->device_name = g_strdup (device->device_name);
-      result->device_original_name = g_strdup (device->device_original_name);
-      result->device_info = g_strdup (device->device_info);
-      result->device_location = g_strdup (device->device_location);
-      result->device_make_and_model = g_strdup (device->device_make_and_model);
-      result->device_uri = g_strdup (device->device_uri);
-      result->device_id = g_strdup (device->device_id);
-      result->device_ppd = g_strdup (device->device_ppd);
-      result->host_name = g_strdup (device->host_name);
-      result->host_port = device->host_port;
-      result->network_device = device->network_device;
-      result->acquisition_method = device->acquisition_method;
-      result->is_authenticated_server = device->is_authenticated_server;
-      result->show = device->show;
-    }
-
-  return result;
-}
-
-static void
 pp_devices_list_free (PpDevicesList *result)
 {
   GList *iter;
@@ -902,7 +817,7 @@ group_physical_devices_cb (gchar    ***device_uris,
 {
   PpNewPrinterDialog        *dialog = (PpNewPrinterDialog *) user_data;
   PpNewPrinterDialogPrivate *priv = dialog->priv;
-  TDevice                   *device, *tmp;
+  PpPrintDevice             *device, *tmp;
   gint                       i, j;
 
   if (device_uris)
@@ -926,7 +841,7 @@ group_physical_devices_cb (gchar    ***device_uris,
                       if (tmp)
                         {
                           priv->new_devices = g_list_remove (priv->new_devices, tmp);
-                          t_device_free (tmp);
+                          pp_print_device_free (tmp);
                         }
                     }
                 }
@@ -944,7 +859,7 @@ group_physical_devices_cb (gchar    ***device_uris,
                             }
                           else
                             {
-                              t_device_free (tmp);
+                              pp_print_device_free (tmp);
                             }
                         }
                     }
@@ -1066,7 +981,7 @@ get_cups_devices_cb (GList    *devices,
   GVariantBuilder             device_hash;
   PpPrintDevice             **all_devices;
   PpPrintDevice              *pp_device;
-  TDevice                    *device;
+  PpPrintDevice              *device;
   GError                     *error = NULL;
   GList                      *iter;
   gint                        length, i;
@@ -1094,32 +1009,32 @@ get_cups_devices_cb (GList    *devices,
               all_devices = g_new0 (PpPrintDevice *, length);
 
               i = 0;
-              for (iter = priv->devices; iter; iter = iter->next)
+              for (iter = priv->devices; iter != NULL; iter = iter->next)
                 {
-                  device = (TDevice *) iter->data;
-                  if (device)
+                  device = (PpPrintDevice *) iter->data;
+                  if (device != NULL)
                     {
                       all_devices[i] = g_new0 (PpPrintDevice, 1);
                       all_devices[i]->device_id = g_strdup (device->device_id);
                       all_devices[i]->device_make_and_model = g_strdup (device->device_make_and_model);
                       all_devices[i]->device_class = device->network_device ? g_strdup ("network") : strdup 
("direct");
                       all_devices[i]->device_uri = g_strdup (device->device_uri);
+                      i++;
                     }
-                  i++;
                 }
 
-              for (iter = devices; iter; iter = iter->next)
+              for (iter = devices; iter != NULL; iter = iter->next)
                 {
                   pp_device = (PpPrintDevice *) iter->data;
-                  if (pp_device)
+                  if (pp_device != NULL)
                     {
                       all_devices[i] = g_new0 (PpPrintDevice, 1);
                       all_devices[i]->device_id = g_strdup (pp_device->device_id);
                       all_devices[i]->device_make_and_model = g_strdup (pp_device->device_make_and_model);
                       all_devices[i]->device_class = g_strdup (pp_device->device_class);
                       all_devices[i]->device_uri = g_strdup (pp_device->device_uri);
+                      i++;
                     }
-                  i++;
                 }
 
               bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
@@ -1179,17 +1094,7 @@ get_cups_devices_cb (GList    *devices,
                 }
 
               for (i = 0; i < length; i++)
-                {
-                  if (all_devices[i])
-                    {
-                      g_free (all_devices[i]->device_id);
-                      g_free (all_devices[i]->device_make_and_model);
-                      g_free (all_devices[i]->device_class);
-                      g_free (all_devices[i]->device_uri);
-                      g_free (all_devices[i]);
-                    }
-                }
-
+                pp_print_device_free (all_devices[i]);
               g_free (all_devices);
             }
           else
@@ -1203,9 +1108,7 @@ get_cups_devices_cb (GList    *devices,
         }
     }
 
-  for (iter = devices; iter; iter = iter->next)
-    pp_print_device_free ((PpPrintDevice *) iter->data);
-  g_list_free (devices);
+  g_list_free_full (devices, (GDestroyNotify) pp_print_device_free);
 }
 
 static void
@@ -1541,9 +1444,9 @@ search_address (const gchar        *text,
                 gboolean            delay_search)
 {
   PpNewPrinterDialogPrivate  *priv = dialog->priv;
+  PpPrintDevice              *device;
   gboolean                    found = FALSE;
   gboolean                    subfound;
-  TDevice                    *device;
   GList                      *iter, *tmp;
   gchar                      *lowercase_name;
   gchar                      *lowercase_location;
@@ -1610,7 +1513,7 @@ search_address (const gchar        *text,
               tmp = iter;
               iter = iter->next;
               priv->devices = g_list_remove_link (priv->devices, tmp);
-              g_list_free_full (tmp, t_device_free);
+              g_list_free_full (tmp, (GDestroyNotify) pp_print_device_free);
             }
           else
             iter = iter->next;
@@ -1628,7 +1531,7 @@ search_address (const gchar        *text,
               tmp = iter;
               iter = iter->next;
               priv->new_devices = g_list_remove_link (priv->new_devices, tmp);
-              g_list_free_full (tmp, t_device_free);
+              g_list_free_full (tmp, (GDestroyNotify) pp_print_device_free);
             }
           else
             iter = iter->next;
@@ -1734,15 +1637,15 @@ static void
 actualize_devices_list (PpNewPrinterDialog *dialog)
 {
   PpNewPrinterDialogPrivate *priv = dialog->priv;
-  GtkTreeSelection  *selection;
-  GtkListStore      *store;
-  GtkTreeView       *treeview;
-  GtkTreeIter        iter;
-  GtkWidget         *widget;
-  gboolean           no_device = TRUE;
-  TDevice           *device;
-  GList             *item;
-  gchar             *description;
+  GtkTreeSelection          *selection;
+  PpPrintDevice             *device;
+  GtkListStore              *store;
+  GtkTreeView               *treeview;
+  GtkTreeIter                iter;
+  GtkWidget                 *widget;
+  gboolean                   no_device = TRUE;
+  GList                     *item;
+  gchar                     *description;
 
   treeview = (GtkTreeView *)
     gtk_builder_get_object (priv->builder, "devices-treeview");
@@ -1754,7 +1657,7 @@ actualize_devices_list (PpNewPrinterDialog *dialog)
 
   for (item = priv->devices; item; item = item->next)
     {
-      device = (TDevice *) item->data;
+      device = (PpPrintDevice *) item->data;
 
       if (device->display_name &&
           (device->device_id ||
@@ -2072,7 +1975,7 @@ ppd_selection_cb (GtkDialog *_dialog,
                                 printer_add_async_cb,
                                 dialog);
 
-      t_device_free (priv->new_device);
+      pp_print_device_free (priv->new_device);
       priv->new_device = NULL;
     }
 }
@@ -2084,11 +1987,11 @@ new_printer_dialog_response_cb (GtkDialog *_dialog,
 {
   PpNewPrinterDialog        *dialog = (PpNewPrinterDialog *) user_data;
   PpNewPrinterDialogPrivate *priv = dialog->priv;
+  PpPrintDevice             *device = NULL;
+  PpPrintDevice             *tmp;
   GtkTreeModel              *model;
   GtkTreeIter                iter;
   GtkWidget                 *treeview;
-  TDevice                   *device = NULL;
-  TDevice                   *tmp;
   GList                     *list_iter;
   gchar                     *device_name = NULL;
 
@@ -2113,7 +2016,7 @@ new_printer_dialog_response_cb (GtkDialog *_dialog,
 
       for (list_iter = priv->devices; list_iter; list_iter = list_iter->next)
         {
-          tmp = (TDevice *) list_iter->data;
+          tmp = (PpPrintDevice *) list_iter->data;
           if (tmp && g_strcmp0 (tmp->device_name, device_name) == 0)
             {
               device = tmp;
@@ -2129,7 +2032,7 @@ new_printer_dialog_response_cb (GtkDialog *_dialog,
           if (device->acquisition_method == ACQUISITION_METHOD_SAMBA ||
               device->acquisition_method == ACQUISITION_METHOD_SAMBA_HOST)
             {
-              priv->new_device = t_device_copy (device);
+              priv->new_device = pp_print_device_copy (device);
               priv->ppd_selection_dialog =
                 pp_ppd_selection_dialog_new (priv->parent,
                                              priv->list,
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index 6c00b40..250040f 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -3777,10 +3777,42 @@ pp_print_device_free (PpPrintDevice *device)
       g_free (device->device_name);
       g_free (device->device_ppd);
       g_free (device->host_name);
+      g_free (device->display_name);
+      g_free (device->device_original_name);
       g_free (device);
     }
 }
 
+PpPrintDevice *
+pp_print_device_copy (PpPrintDevice *device)
+{
+  PpPrintDevice *result = NULL;
+
+  if (device)
+    {
+      result = g_new (PpPrintDevice, 1);
+
+      result->is_authenticated_server = device->is_authenticated_server;
+      result->device_class = g_strdup (device->device_class);
+      result->device_id = g_strdup (device->device_id);
+      result->device_info = g_strdup (device->device_info);
+      result->device_make_and_model = g_strdup (device->device_make_and_model);
+      result->device_uri = g_strdup (device->device_uri);
+      result->device_location = g_strdup (device->device_location);
+      result->device_name = g_strdup (device->device_name);
+      result->device_ppd = g_strdup (device->device_ppd);
+      result->host_name = g_strdup (device->host_name);
+      result->host_port = device->host_port;
+      result->acquisition_method = device->acquisition_method;
+      result->display_name = g_strdup (device->display_name);
+      result->device_original_name = g_strdup (device->device_original_name);
+      result->network_device = device->network_device;
+      result->show = device->show;
+    }
+
+  return result;
+}
+
 typedef struct
 {
   gchar        *printer_name;
diff --git a/panels/printers/pp-utils.h b/panels/printers/pp-utils.h
index ed4b113..f9bfd6e 100644
--- a/panels/printers/pp-utils.h
+++ b/panels/printers/pp-utils.h
@@ -286,9 +286,14 @@ typedef struct
   gchar    *host_name;
   gint      host_port;
   gint      acquisition_method;
+  gchar    *display_name;
+  gchar    *device_original_name;
+  gboolean  network_device;
+  gboolean  show;
 } PpPrintDevice;
 
-void        pp_print_device_free (PpPrintDevice *device);
+void           pp_print_device_free (PpPrintDevice *device);
+PpPrintDevice *pp_print_device_copy (PpPrintDevice *device);
 
 const gchar *get_paper_size_from_locale (void);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]