[rygel] tracker: Clean-up alternative property keys



commit 691b63777cf122863f7b7b43ea4c732c04c57dec
Author: Jens Georg <mail jensge org>
Date:   Sat Dec 17 14:06:25 2011 +0100

    tracker: Clean-up alternative property keys

 .../tracker/rygel-tracker-key-chain-map.vala       |   27 +++++++++++++++----
 1 files changed, 21 insertions(+), 6 deletions(-)
---
diff --git a/src/plugins/tracker/rygel-tracker-key-chain-map.vala b/src/plugins/tracker/rygel-tracker-key-chain-map.vala
index 4b829d2..ba24066 100644
--- a/src/plugins/tracker/rygel-tracker-key-chain-map.vala
+++ b/src/plugins/tracker/rygel-tracker-key-chain-map.vala
@@ -52,12 +52,10 @@ public class Rygel.Tracker.KeyChainMap : Object {
         add_key_chain ("dc:title", "nie:title");
         add_key_chain ("dlnaProfile", "nmm:dlnaProfile");
         add_key_chain ("mimeType", "nie:mimeType");
-        add_function ("res size",
-                      "tracker:coalesce(nfo:fileSize(%1$s)," +
-                      "nie:byteSize(%1$s),\"\")");
-        add_function ("date",
-                      "tracker:coalesce(nie:contentCreated(%1$s)," +
-                      "nfo:fileLastModified(%1$s))");
+        this.add_alternative ("res size", "nfo:fileSize", "nie:byteSize");
+        this.add_alternative ("date",
+                              "nie:contentCreated",
+                              "nfo:fileLastModified");
 
         // Music Item
         add_key_chain ("res duration", "nfo:duration");
@@ -108,5 +106,22 @@ public class Rygel.Tracker.KeyChainMap : Object {
     private void add_function (string property, string function) {
         this.functions[property] = function;
     }
+
+    private void add_alternative (string property, ...) {
+        var list = va_list ();
+
+        var str = new StringBuilder ("tracker:coalesce(");
+
+        string alternative = list.arg ();
+        while (alternative != null) {
+            str.append_printf ("%s(%%1$s),", alternative);
+            alternative = list.arg ();
+        }
+
+        str.truncate (str.len - 1);
+        str.append (")");
+
+        this.add_function (property, str.str);
+    }
 }
 



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