core: Filter unsupported sort criterias from XBox
authorJens Georg <mail@jensge.org>
Sun, 27 Nov 2011 18:10:01 +0000 (19:10 +0100)
committerJens Georg <mail@jensge.org>
Sun, 11 Dec 2011 18:11:28 +0000 (19:11 +0100)
This fixes the "Slideshow" option when selected from top-level picture
browsing dialog.

src/rygel/rygel-client-hacks.vala
src/rygel/rygel-media-query-action.vala
src/rygel/rygel-xbox-hacks.vala

index e3944a5..a867d8e 100644 (file)
@@ -97,6 +97,8 @@ internal abstract class Rygel.ClientHacks : GLib.Object {
 
     public virtual void apply (MediaItem item) {}
 
+    public virtual void filter_sort_criteria (ref string sort_criteria) {}
+
     public virtual async MediaObjects? search
                                         (SearchableContainer container,
                                          SearchExpression?   expression,
index 1db1236..417a205 100644 (file)
@@ -130,6 +130,10 @@ internal abstract class Rygel.MediaQueryAction : GLib.Object, StateMachine {
             this.sort_criteria = DEFAULT_SORT_CRITERIA;
         }
 
+        if (this.hacks != null) {
+            hacks.filter_sort_criteria (ref this.sort_criteria);
+        }
+
         this.validate_sort_criteria ();
 
         if (this.hacks != null) {
index 92c4d0c..4030b30 100644 (file)
@@ -98,6 +98,14 @@ internal class Rygel.XBoxHacks : ClientHacks {
         }
     }
 
+    public override void filter_sort_criteria (ref string sort_criteria) {
+        sort_criteria = sort_criteria.replace ("+microsoft:sourceURL", "");
+        sort_criteria = sort_criteria.replace (",,", ",");
+        if (sort_criteria.has_prefix (",")) {
+            sort_criteria = sort_criteria.slice (1, sort_criteria.length);
+        }
+    }
+
     public override async MediaObjects? search
                                         (SearchableContainer container,
                                          SearchExpression?   expression,