tracker: Correct RDF query in 'search'
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Thu, 12 Nov 2009 12:53:37 +0000 (14:53 +0200)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Mon, 16 Nov 2009 14:22:55 +0000 (16:22 +0200)
"File:Path" means path to the directory containing the file rather than
path of the file itself. Full points goes to Mr. Jamie McCracken for
coming-up with this.

src/plugins/tracker/rygel-tracker-search-container.vala

index d4c9f8a..e5a2831 100644 (file)
@@ -214,13 +214,24 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
                                                out parent_id,
                                                out service);
                 if (path != null) {
+                    var dir = Path.get_dirname (path);
+                    var basename = Path.get_basename (path);
+
                     var search_condition =
-                                        "<rdfq:equals>\n" +
-                                            "<rdfq:Property " +
-                                                "name=\"File:Path\" />\n" +
-                                            "<rdf:String>" + path +
-                                            "</rdf:String>\n" +
-                                         "</rdfq:equals>\n";
+                                        "<rdfq:and>\n" +
+                                            "<rdfq:equals>\n" +
+                                                "<rdfq:Property " +
+                                                    "name=\"File:Path\" />\n" +
+                                                    "<rdf:String>" + dir +
+                                                    "</rdf:String>\n" +
+                                            "</rdfq:equals>\n" +
+                                            "<rdfq:equals>\n" +
+                                                "<rdfq:Property " +
+                                                    "name=\"File:Name\" />\n" +
+                                                    "<rdf:String>" + basename +
+                                                    "</rdf:String>\n" +
+                                            "</rdfq:equals>\n" +
+                                        "</rdfq:and>\n";
 
                     if (this.query_condition != "") {
                         query = "<rdfq:Condition>\n" +