Blob Blame History Raw
From 13be8991142fe389a88876eff801413c50c13a84 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Sun, 17 Jan 2021 14:08:46 +0100
Subject: [PATCH 1/3] tracker-search-bar: adapt the queries for tracker 3

Adapt the queries so that they are meaningful on both versions,
accounting for the differences in data layout.
---
 .../tracker-results-window.c                  | 25 +++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/gnome-applets/tracker-search-bar/tracker-results-window.c b/gnome-applets/tracker-search-bar/tracker-results-window.c
index 617754fe3..54a7c354d 100644
--- a/gnome-applets/tracker-search-bar/tracker-results-window.c
+++ b/gnome-applets/tracker-search-bar/tracker-results-window.c
@@ -37,8 +37,9 @@
 	"SELECT" \
 	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
 	"WHERE {" \
-	"  ?urn a nfo:Audio ;" \
-	"  nie:url ?uri ; " \
+	"  ?content a nfo:Audio ;" \
+	"  nie:isStoredAs ?urn ." \
+	"  ?urn nie:url ?uri ; " \
 	"  nfo:fileName ?title ;" \
 	"  nfo:belongsToContainer ?tooltip ." \
 	"  ?urn fts:match \"%s*\" " \
@@ -49,8 +50,9 @@
 	"SELECT" \
 	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
 	"WHERE {" \
-	"  ?urn a nfo:Image ;" \
-	"  nie:url ?uri ; " \
+	"  ?content a nfo:Image ;" \
+	"  nie:isStoredAs ?urn ." \
+	"  ?urn nie:url ?uri ; " \
 	"  nfo:fileName ?title ;" \
 	"  nfo:belongsToContainer ?tooltip ." \
 	"  ?urn fts:match \"%s*\" " \
@@ -61,8 +63,9 @@
 	"SELECT" \
 	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
 	"WHERE {" \
-	"  ?urn a nmm:Video ;" \
-	"  nie:url ?uri ; " \
+	"  ?content a nmm:Video ;" \
+	"  nie:isStoredAs ?urn ." \
+	"  ?urn nie:url ?uri ; " \
 	"  nfo:fileName ?title ;" \
 	"  nfo:belongsToContainer ?tooltip ." \
 	"  ?urn fts:match \"%s*\" " \
@@ -73,8 +76,9 @@
 	"SELECT" \
 	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
 	"WHERE {" \
-	"  ?urn a nfo:Document ;" \
-	"  nie:url ?uri ; " \
+	"  ?content a nfo:Document ;" \
+	"  nie:isStoredAs ?urn ." \
+	"  ?urn nie:url ?uri ; " \
 	"  nfo:fileName ?title ;" \
 	"  nfo:belongsToContainer ?tooltip ." \
 	"  ?urn fts:match \"%s*\" " \
@@ -85,8 +89,9 @@
 	"SELECT" \
 	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
 	"WHERE {" \
-	"  ?urn a nfo:Folder ;" \
-	"  nie:url ?uri ; " \
+	"  ?content a nfo:Folder ;" \
+	"  nie:isStoredAs ?urn ." \
+	"  ?urn nie:url ?uri ; " \
 	"  nfo:fileName ?title ;" \
 	"  nfo:belongsToContainer ?tooltip ." \
 	"  ?urn fts:match \"%s*\" " \
-- 
GitLab


From 792f2b110e1bbb8ea66ec06a2eca45efea39160c Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Sat, 6 Feb 2021 15:12:27 +0100
Subject: [PATCH 2/3] tracker-search-bar: Apply FTS search across content and
 file data

Prior to Tracker 3, there was no split between content and file data,
so fts:match would look across fulltext-search properties on either
side of the split (e.g. text content or filename, indistinctly).

Preserve this same behavior for Tracker 3.x, while keeping queries
compatible with Tracker 2.x (although fairly redundant there). In
exchange for the query complication, the file query had been
generalized so they use a common template.
---
 .../tracker-results-window.c                  | 88 ++++++-------------
 1 file changed, 27 insertions(+), 61 deletions(-)

diff --git a/gnome-applets/tracker-search-bar/tracker-results-window.c b/gnome-applets/tracker-search-bar/tracker-results-window.c
index 54a7c354d..c8b3bbfea 100644
--- a/gnome-applets/tracker-search-bar/tracker-results-window.c
+++ b/gnome-applets/tracker-search-bar/tracker-results-window.c
@@ -33,71 +33,37 @@
 
 #define MAX_ITEMS 10
 
-#define MUSIC_QUERY	  \
-	"SELECT" \
-	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
+#define FILE_SEARCH_QUERY(rdftype) \
+	"SELECT DISTINCT" \
+	"  ?uri ?title ?tooltip ?uri '' " \
 	"WHERE {" \
-	"  ?content a nfo:Audio ;" \
-	"  nie:isStoredAs ?urn ." \
-	"  ?urn nie:url ?uri ; " \
-	"  nfo:fileName ?title ;" \
-	"  nfo:belongsToContainer ?tooltip ." \
-	"  ?urn fts:match \"%s*\" " \
+	"  { " \
+	"    { " \
+	"      ?urn a " #rdftype "; " \
+	"	 nie:isStoredAs ?file . " \
+	"      ?file nie:url ?uri ; " \
+	"	 nfo:belongsToContainer ?tooltip ; " \
+	"	 nfo:fileName ?title . " \
+	"    } UNION { " \
+	"      ?urn a nfo:FileDataObject ; " \
+	"	 nie:url ?uri ; " \
+	"	 nfo:belongsToContainer ?tooltip ; " \
+	"	 nfo:fileName ?title . " \
+	"      ?content a " #rdftype "; " \
+	"	 nie:isStoredAs ?urn . " \
+	"    } " \
+	"  } " \
+	"  ?urn fts:match \"%s*\" . " \
 	"}" \
 	"ORDER BY DESC(fts:rank(?urn)) " \
 	"OFFSET 0 LIMIT %d"
-#define IMAGE_QUERY	  \
-	"SELECT" \
-	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
-	"WHERE {" \
-	"  ?content a nfo:Image ;" \
-	"  nie:isStoredAs ?urn ." \
-	"  ?urn nie:url ?uri ; " \
-	"  nfo:fileName ?title ;" \
-	"  nfo:belongsToContainer ?tooltip ." \
-	"  ?urn fts:match \"%s*\" " \
-	"} " \
-	"ORDER BY DESC(fts:rank(?urn)) " \
-	"OFFSET 0 LIMIT %d"
-#define VIDEO_QUERY	  \
-	"SELECT" \
-	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
-	"WHERE {" \
-	"  ?content a nmm:Video ;" \
-	"  nie:isStoredAs ?urn ." \
-	"  ?urn nie:url ?uri ; " \
-	"  nfo:fileName ?title ;" \
-	"  nfo:belongsToContainer ?tooltip ." \
-	"  ?urn fts:match \"%s*\" " \
-	"} " \
-	"ORDER BY DESC(fts:rank(?urn)) " \
-	"OFFSET 0 LIMIT %d"
-#define DOCUMENT_QUERY	  \
-	"SELECT" \
-	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
-	"WHERE {" \
-	"  ?content a nfo:Document ;" \
-	"  nie:isStoredAs ?urn ." \
-	"  ?urn nie:url ?uri ; " \
-	"  nfo:fileName ?title ;" \
-	"  nfo:belongsToContainer ?tooltip ." \
-	"  ?urn fts:match \"%s*\" " \
-	"} " \
-	"ORDER BY DESC(fts:rank(?urn)) " \
-	"OFFSET 0 LIMIT %d"
-#define FOLDER_QUERY	  \
-	"SELECT" \
-	"  ?uri ?title ?tooltip ?uri fts:rank(?urn) " \
-	"WHERE {" \
-	"  ?content a nfo:Folder ;" \
-	"  nie:isStoredAs ?urn ." \
-	"  ?urn nie:url ?uri ; " \
-	"  nfo:fileName ?title ;" \
-	"  nfo:belongsToContainer ?tooltip ." \
-	"  ?urn fts:match \"%s*\" " \
-	"} " \
-	"ORDER BY DESC(fts:rank(?urn)) " \
-	"OFFSET 0 LIMIT %d"
+
+#define MUSIC_QUERY FILE_SEARCH_QUERY(nfo:Audio)
+#define IMAGE_QUERY FILE_SEARCH_QUERY(nfo:Image)
+#define VIDEO_QUERY FILE_SEARCH_QUERY(nmm:Video)
+#define DOCUMENT_QUERY FILE_SEARCH_QUERY (nfo:Document)
+#define FOLDER_QUERY FILE_SEARCH_QUERY (nfo:Folder)
+
 #define APP_QUERY	  \
 	"SELECT" \
 	"  ?urn ?title ?tooltip ?link fts:rank(?urn) nfo:softwareIcon(?urn)" \
-- 
GitLab


From 4836f6e901e973198b3e114b33a6acc24dfe8e30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= <alberts.muktupavels@gmail.com>
Date: Tue, 29 Dec 2020 19:13:27 +0200
Subject: [PATCH 3/3] tracker-search-bar: port to tracker 3

https://gitlab.gnome.org/GNOME/gnome-applets/-/issues/18
---
 configure.ac                                  | 21 +++++++++++++------
 .../tracker-results-window.c                  |  9 ++++++++
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index a367de762..e16c84f93 100644
--- a/configure.ac
+++ b/configure.ac
@@ -175,11 +175,20 @@ PKG_CHECK_MODULES(XML2, libxml-2.0 >= $LIBXML_REQUIRED)
 PKG_CHECK_MODULES(LIBGWEATHER, gweather-3.0 >= $GWEATHER_REQUIRED)
 
  dnl -- check for tracker-sparql (required for tracker-search-bar) ------------
-TRACKER_SEARCH_BAR_REQUIRED="tracker-sparql-2.0"
-
-PKG_CHECK_MODULES(TRACKER_SEARCH_BAR, [$TRACKER_SEARCH_BAR_REQUIRED],
-                  [have_tracker_search_bar=yes],
-                  [have_tracker_search_bar=no])
+PKG_CHECK_MODULES([TRACKER_SEARCH_BAR], [
+  tracker-sparql-3.0
+], [
+  AC_DEFINE([HAVE_TRACKER3], [1], [Define to 1 if tracker3 is available])
+  have_tracker_search_bar=yes
+], [
+  PKG_CHECK_MODULES([TRACKER_SEARCH_BAR], [
+    tracker-sparql-2.0
+  ], [
+    have_tracker_search_bar=yes
+  ], [
+    have_tracker_search_bar=no
+  ])
+])
 
 dnl -- check for GSettings (required for gweather applet)
 GLIB_GSETTINGS
@@ -286,7 +295,7 @@ AC_ARG_ENABLE([tracker-search-bar],
 
 if test "x$enable_tracker_search_bar" = "xyes" ; then
    if test "x$have_tracker_search_bar" != "xyes"; then
-      AC_MSG_ERROR([Couldn't find tracker-search-bar dependencies ($TRACKER_SEARCH_BAR_REQUIRED).])
+      AC_MSG_ERROR([Couldn't find tracker-search-bar dependencies.])
    fi
 else
    if test "x$enable_tracker_search_bar" = "xno"; then
diff --git a/gnome-applets/tracker-search-bar/tracker-results-window.c b/gnome-applets/tracker-search-bar/tracker-results-window.c
index c8b3bbfea..8bb249ca5 100644
--- a/gnome-applets/tracker-search-bar/tracker-results-window.c
+++ b/gnome-applets/tracker-search-bar/tracker-results-window.c
@@ -359,7 +359,16 @@ tracker_results_window_init (TrackerResultsWindow *self)
 	GError *error = NULL;
 
 	self->cancellable = g_cancellable_new ();
+
+#ifdef HAVE_TRACKER3
+	self->connection = tracker_sparql_connection_bus_new ("org.freedesktop.Tracker3.Miner.Files",
+	                                                      NULL,
+	                                                      NULL,
+	                                                      &error);
+#else
 	self->connection = tracker_sparql_connection_get (self->cancellable, &error);
+#endif
+
 	if (error != NULL) {
 		g_warning ("Cannot connect to tracker: %s\n", error->message);
 		g_error_free (error);
-- 
GitLab