tracker: Provide UPnP class for artists and albums
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Mon, 20 Sep 2010 16:11:07 +0000 (19:11 +0300)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Fri, 24 Sep 2010 17:59:57 +0000 (20:59 +0300)
Provide specific UPnP class for artist and album containers so that they
could be searched by this property. This should fix music browsing on XBox
360.

src/plugins/tracker/rygel-tracker-albums.vala
src/plugins/tracker/rygel-tracker-artists.vala
src/plugins/tracker/rygel-tracker-metadata-values.vala

index a9e5d23..8fcee2d 100644 (file)
@@ -34,7 +34,8 @@ public class Rygel.Tracker.Albums : MetadataValues {
               parent,
               _("Albums"),
               parent.item_factory,
-              key_chain);
+              key_chain,
+              MediaContainer.MUSIC_ALBUM);
     }
 }
 
index 451800a..646b4ab 100644 (file)
@@ -34,7 +34,8 @@ public class Rygel.Tracker.Artists : MetadataValues {
               parent,
               _("Artists"),
               parent.item_factory,
-              key_chain);
+              key_chain,
+              MediaContainer.MUSIC_ARTIST);
     }
 }
 
index aa2dc74..4a6ff61 100644 (file)
@@ -41,6 +41,8 @@ public abstract class Rygel.Tracker.MetadataValues : Rygel.SimpleContainer {
     // nmm:Performer -> nmm:artistName
     public string[] key_chain;
 
+    private string child_class;
+
     private ResourcesIface resources;
     private ResourcesClassIface resources_class;
 
@@ -48,11 +50,13 @@ public abstract class Rygel.Tracker.MetadataValues : Rygel.SimpleContainer {
                            MediaContainer parent,
                            string         title,
                            ItemFactory    item_factory,
-                           string[]       key_chain) {
+                           string[]       key_chain,
+                           string?        child_class = null) {
         base (id, parent, title);
 
         this.item_factory = item_factory;
         this.key_chain = key_chain;
+        this.child_class = child_class;
 
         try {
             this.create_proxies ();
@@ -146,6 +150,9 @@ public abstract class Rygel.Tracker.MetadataValues : Rygel.SimpleContainer {
                                                  this.item_factory,
                                                  child_triplets,
                                                  filters);
+            if (this.child_class != null) {
+                container.upnp_class = child_class;
+            }
 
             this.add_child (container);
         }