diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-06-18 22:44:11 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-06-18 22:59:44 -0400 |
commit | a3a58fa7d9997c2296f7bcfed6169f6b936cb8d1 (patch) | |
tree | 0093923f9bc6e6d225bfc3979a24baeb24476490 /gtk/gtksearchenginetracker.c | |
parent | 15a41e0bf587b370c52044f12c33e4fae3a76f17 (diff) | |
download | gtk+-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.c | 16 |
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))"); |