[gnome-control-center] printers: Filter the printer-location in the search



commit 870b4e71907dd8c54142901edf69312479df93a8
Author: Felipe Borges <felipeborges gnome org>
Date:   Tue Mar 14 12:35:04 2017 +0100

    printers: Filter the printer-location in the search
    
    Show printer search results where the searched string matches
    the printer-location.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=779656

 panels/printers/cc-printers-panel.c |   14 +++++++++++++-
 panels/printers/pp-printer-entry.c  |   18 +++++++++++++++++-
 2 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c
index 7cb001a..4306829 100644
--- a/panels/printers/cc-printers-panel.c
+++ b/panels/printers/cc-printers-panel.c
@@ -948,7 +948,9 @@ filter_function (GtkListBoxRow *row,
   gboolean                retval;
   gchar                  *search;
   gchar                  *name;
+  gchar                  *location;
   gchar                  *printer_name;
+  gchar                  *printer_location;
 
   priv = PRINTERS_PANEL_PRIVATE (self);
 
@@ -958,17 +960,27 @@ filter_function (GtkListBoxRow *row,
   if (gtk_entry_get_text_length (GTK_ENTRY (search_entry)) == 0)
     return TRUE;
 
-  g_object_get (G_OBJECT (row), "printer-name", &printer_name, NULL);
+  g_object_get (G_OBJECT (row),
+                "printer-name", &printer_name,
+                "printer-location", &printer_location,
+                NULL);
+
   name = cc_util_normalize_casefold_and_unaccent (printer_name);
+  location = cc_util_normalize_casefold_and_unaccent (printer_location);
 
   g_free (printer_name);
+  g_free (printer_location);
 
   search = cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (search_entry)));
 
+
   retval = strstr (name, search) != NULL;
+  if (location != NULL)
+      retval = retval || (strstr (location, search) != NULL);
 
   g_free (search);
   g_free (name);
+  g_free (location);
 
   return retval;
 }
diff --git a/panels/printers/pp-printer-entry.c b/panels/printers/pp-printer-entry.c
index 86542b3..88384c4 100644
--- a/panels/printers/pp-printer-entry.c
+++ b/panels/printers/pp-printer-entry.c
@@ -88,6 +88,7 @@ G_DEFINE_TYPE (PpPrinterEntry, pp_printer_entry, GTK_TYPE_LIST_BOX_ROW)
 enum {
   PROP_0,
   PROP_PRINTER_NAME,
+  PROP_PRINTER_LOCATION,
 };
 
 enum {
@@ -110,6 +111,9 @@ pp_printer_entry_get_property (GObject    *object,
       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);
     }
@@ -128,6 +132,9 @@ pp_printer_entry_set_property (GObject      *object,
       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;
@@ -865,8 +872,9 @@ pp_printer_entry_new (cups_dest_t  printer,
   else
     printer_icon_name = g_strdup ("printer-network");
 
+  g_object_set (self, "printer-location", location, NULL);
+
   self->is_accepting_jobs = is_accepting_jobs;
-  self->printer_location = g_strdup (location);
   self->is_authorized = is_authorized;
 
   self->printer_hostname = printer_get_hostname (printer_type, self->printer_uri, printer_uri);
@@ -1003,6 +1011,14 @@ pp_printer_entry_class_init (PpPrinterEntryClass *klass)
                                                         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),


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