[rygel] tracker: Adapt to Tracker API changes



commit 13b1229ee2aa9c9738d9239f67d134591c371bef
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Mon Feb 15 15:46:44 2010 +0200

    tracker: Adapt to Tracker API changes
    
    - URLs are not necessarily the same as item IDs (URN) anymore.
    - "nmm:length" has been replaced by "nfo:duration".

 .../tracker/rygel-tracker-music-item-factory.vala  |    2 +-
 .../tracker/rygel-tracker-search-container.vala    |   21 +++++++++++++------
 .../tracker/rygel-tracker-video-item-factory.vala  |    2 +-
 3 files changed, 16 insertions(+), 9 deletions(-)
---
diff --git a/src/plugins/tracker/rygel-tracker-music-item-factory.vala b/src/plugins/tracker/rygel-tracker-music-item-factory.vala
index 7de4e93..b630fd7 100644
--- a/src/plugins/tracker/rygel-tracker-music-item-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-music-item-factory.vala
@@ -48,7 +48,7 @@ public class Rygel.TrackerMusicItemFactory : Rygel.TrackerItemFactory {
             this.key_chains.add (new ArrayList<string> ());
         }
 
-        this.key_chains[MusicMetadata.DURATION].add ("nmm:length");
+        this.key_chains[MusicMetadata.DURATION].add ("nfo:duration");
         this.key_chains[MusicMetadata.AUDIO_ARTIST].add ("nmm:performer");
         this.key_chains[MusicMetadata.AUDIO_ARTIST].add ("nmm:artistName");
         this.key_chains[MusicMetadata.AUDIO_ALBUM].add ("nmm:musicAlbum");
diff --git a/src/plugins/tracker/rygel-tracker-search-container.vala b/src/plugins/tracker/rygel-tracker-search-container.vala
index b9dc6ef..8767f72 100644
--- a/src/plugins/tracker/rygel-tracker-search-container.vala
+++ b/src/plugins/tracker/rygel-tracker-search-container.vala
@@ -36,6 +36,8 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
     private const string ITEM_VARIABLE = "?item";
     private const string MODIFIED_PREDICATE = "nfo:fileLastModified";
     private const string MODIFIED_VARIABLE = "?modified";
+    private const string URL_PREDICATE = "nie:url";
+    private const string URL_VARIABLE = "?url";
 
     public TrackerSelectionQuery query;
     public TrackerItemFactory item_factory;
@@ -54,6 +56,7 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
 
         var variables = new ArrayList<string> ();
         variables.add (ITEM_VARIABLE);
+        variables.add (URL_VARIABLE);
 
         TrackerQueryTriplets our_mandatory;
         if (mandatory != null) {
@@ -70,6 +73,10 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
                                                     MODIFIED_PREDICATE,
                                                     MODIFIED_VARIABLE,
                                                     false));
+        our_mandatory.add (new TrackerQueryTriplet (ITEM_VARIABLE,
+                                                    URL_PREDICATE,
+                                                    URL_VARIABLE,
+                                                    false));
 
         var optional = new TrackerQueryTriplets ();
         foreach (var chain in this.item_factory.key_chains) {
@@ -146,9 +153,9 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
 
         /* Iterate through all items */
         for (uint i = 0; i < query.result.length[0]; i++) {
-            string uri = query.result[i, 0];
-            string[] metadata = this.slice_strvv_tail (query.result, i, 1);
-            var id = this.id + ":" + uri;
+            var id = this.id + ":" + query.result[i, 0];
+            var uri = query.result[i, 1];
+            string[] metadata = this.slice_strvv_tail (query.result, i, 2);
 
             var item = this.item_factory.create (id, uri, this, metadata);
             results.add (item);
@@ -240,13 +247,13 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
             case SearchCriteriaOp.EQ:
                 string parent_id;
 
-                var uri = this.get_item_info (expression.operand2,
+                var urn = this.get_item_info (expression.operand2,
                                               out parent_id);
-                if (uri == null || parent_id == null || parent_id != this.id) {
+                if (urn == null || parent_id == null || parent_id != this.id) {
                     break;
                 }
 
-                filter = ITEM_VARIABLE + " = <" + uri + ">";
+                filter = ITEM_VARIABLE + " = <" + urn + ">";
                 break;
             case SearchCriteriaOp.CONTAINS:
                 filter = "regex(" + ITEM_VARIABLE + ", " +
@@ -258,7 +265,7 @@ public class Rygel.TrackerSearchContainer : Rygel.MediaContainer {
         return filter;
     }
 
-    // Returns the URI and the ID of the parent this item belongs to, or null
+    // Returns the URN and the ID of the parent this item belongs to, or null
     // if item_id is invalid
     private string? get_item_info (string     item_id,
                                    out string parent_id) {
diff --git a/src/plugins/tracker/rygel-tracker-video-item-factory.vala b/src/plugins/tracker/rygel-tracker-video-item-factory.vala
index 0c15907..cd115b7 100644
--- a/src/plugins/tracker/rygel-tracker-video-item-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-video-item-factory.vala
@@ -49,7 +49,7 @@ public class Rygel.TrackerVideoItemFactory : Rygel.TrackerItemFactory {
 
         this.key_chains[VideoMetadata.WIDTH].add ("nfo:width");
         this.key_chains[VideoMetadata.HEIGHT].add ("nfo:height");
-        this.key_chains[VideoMetadata.DURATION].add ("nmm:length");
+        this.key_chains[VideoMetadata.DURATION].add ("nfo:duration");
     }
 
     public override MediaItem create (string                 id,



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