summaryrefslogtreecommitdiff
path: root/gtk/gtksearchenginetracker.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-06-18 22:44:11 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-06-18 22:59:44 -0400
commita3a58fa7d9997c2296f7bcfed6169f6b936cb8d1 (patch)
tree0093923f9bc6e6d225bfc3979a24baeb24476490 /gtk/gtksearchenginetracker.c
parent15a41e0bf587b370c52044f12c33e4fae3a76f17 (diff)
downloadgtk+-a3a58fa7d9997c2296f7bcfed6169f6b936cb8d1.tar.gz
GtkSearchEngine: Add recursive flag
Add a flag for recursive search, and implement non-recursive search in both the tracker and simple search engines. This is not currently used in the file chooser.
Diffstat (limited to 'gtk/gtksearchenginetracker.c')
-rw-r--r--gtk/gtksearchenginetracker.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c
index 562b14d646..21b2e326d1 100644
--- a/gtk/gtksearchenginetracker.c
+++ b/gtk/gtksearchenginetracker.c
@@ -327,6 +327,7 @@ gtk_search_engine_tracker_start (GtkSearchEngine *engine)
gchar *search_text;
gchar *location_uri;
GString *sparql;
+ gboolean recursive;
tracker = GTK_SEARCH_ENGINE_TRACKER (engine);
@@ -344,6 +345,7 @@ gtk_search_engine_tracker_start (GtkSearchEngine *engine)
search_text = gtk_query_get_text (tracker->priv->query);
location_uri = gtk_query_get_location (tracker->priv->query);
+ recursive = _gtk_search_engine_get_recursive (engine);
sparql = g_string_new ("SELECT nie:url(?urn) "
"WHERE {"
@@ -356,16 +358,24 @@ gtk_search_engine_tracker_start (GtkSearchEngine *engine)
sparql_append_string_literal (sparql, search_text, TRUE);
#endif
- g_string_append (sparql, ". FILTER (fn:contains(fn:lower-case(nfo:fileName(?urn)),");
+ g_string_append (sparql, ". FILTER (");
+
+ g_string_append (sparql, "fn:contains(fn:lower-case(nfo:fileName(?urn)),");
sparql_append_string_literal_lower_case (sparql, search_text);
+ g_string_append (sparql, ")");
if (location_uri)
{
- g_string_append (sparql, ") && fn:starts-with(nie:url(?urn),");
+ g_string_append (sparql, " && ");
+ if (recursive)
+ g_string_append (sparql, "tracker-uri-is-descendant(");
+ else
+ g_string_append (sparql, "tracker-uri-is-parent(");
sparql_append_string_literal (sparql, location_uri, FALSE);
+ g_string_append (sparql, ",nie:url(?urn))");
}
- g_string_append (sparql, "))");
+ g_string_append (sparql, ")");
#ifdef FTS_MATCHING
g_string_append (sparql, " } ORDER BY DESC(fts:rank(?urn)) DESC(nie:url(?urn))");