[gnome-control-center/wip/carlosg/search-tracker3: 4/4] search: Check for either tracker 2.x or 3.x schemas




commit 27e1140c9d4ad852b4dc6a132a14cd5532d52997
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Nov 2 11:07:10 2020 +0100

    search: Check for either tracker 2.x or 3.x schemas
    
    The Tracker3 schema points to the same dconf path and is backwards
    compatible with Tracker 2.x settings. Check for either here, with a
    preference to Tracker 3.x.
    
    Eventually, Tracker 2.x will be fully phased out, and this will not
    be necessary.
    
    Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1173

 panels/search/cc-search-locations-dialog.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/panels/search/cc-search-locations-dialog.c b/panels/search/cc-search-locations-dialog.c
index 48749da5a..764016ffc 100644
--- a/panels/search/cc-search-locations-dialog.c
+++ b/panels/search/cc-search-locations-dialog.c
@@ -24,6 +24,7 @@
 #include <glib/gi18n.h>
 
 #define TRACKER_SCHEMA "org.freedesktop.Tracker.Miner.Files"
+#define TRACKER3_SCHEMA "org.freedesktop.Tracker3.Miner.Files"
 #define TRACKER_KEY_RECURSIVE_DIRECTORIES "index-recursive-directories"
 #define TRACKER_KEY_SINGLE_DIRECTORIES "index-single-directories"
 
@@ -670,12 +671,20 @@ CcSearchLocationsDialog *
 cc_search_locations_dialog_new (CcSearchPanel *panel)
 {
   CcSearchLocationsDialog *self;
+  GSettingsSchemaSource *source;
+  g_autoptr(GSettingsSchema) schema = NULL;
 
   self = g_object_new (CC_SEARCH_LOCATIONS_DIALOG_TYPE,
                        "use-header-bar", TRUE,
                        NULL);
 
-  self->tracker_preferences = g_settings_new (TRACKER_SCHEMA);
+  source = g_settings_schema_source_get_default ();
+  schema = g_settings_schema_source_lookup (source, TRACKER3_SCHEMA, TRUE);
+  if (schema)
+    self->tracker_preferences = g_settings_new (TRACKER3_SCHEMA);
+  else
+    self->tracker_preferences = g_settings_new (TRACKER_SCHEMA);
+
   populate_list_boxes (self);
 
   gtk_list_box_set_sort_func (GTK_LIST_BOX (self->others_list),
@@ -702,8 +711,15 @@ cc_search_locations_dialog_is_available (void)
   if (!source)
     return FALSE;
 
+  schema = g_settings_schema_source_lookup (source, TRACKER3_SCHEMA, TRUE);
+  if (schema)
+    return TRUE;
+
   schema = g_settings_schema_source_lookup (source, TRACKER_SCHEMA, TRUE);
-  return schema != NULL;
+  if (schema)
+    return TRUE;
+
+  return FALSE;
 }
 
 static void


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