From fd47e6726c2a6d44414d0116a54729dbc9d5729a Mon Sep 17 00:00:00 2001 From: "Zeeshan Ali (Khattak)" Date: Thu, 3 Dec 2009 18:14:09 +0200 Subject: [PATCH] tracker: Means to create title from value Provide API for users of MetadataValues to be able to create title from values. --- src/plugins/tracker/rygel-tracker-metadata-values.vala | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/plugins/tracker/rygel-tracker-metadata-values.vala b/src/plugins/tracker/rygel-tracker-metadata-values.vala index 5c1de92..cad91b8 100644 --- a/src/plugins/tracker/rygel-tracker-metadata-values.vala +++ b/src/plugins/tracker/rygel-tracker-metadata-values.vala @@ -34,12 +34,15 @@ public class Rygel.TrackerMetadataValues : Rygel.SimpleContainer { private const string RESOURCES_PATH = "/org/freedesktop/Tracker1/Resources"; private const string ITEM_VARIABLE = "?item"; + public delegate string TitleFunc (string value); + private TrackerItemFactory item_factory; // In tracker 0.7, we might don't get values of keys in place so you need a // chain of keys to reach to final destination. For instances: // nmm:Performer -> nmm:artistName public string[] key_chain; + public TitleFunc title_func; private TrackerResourcesIface resources; @@ -47,11 +50,14 @@ public class Rygel.TrackerMetadataValues : Rygel.SimpleContainer { MediaContainer parent, string title, TrackerItemFactory item_factory, - string[] key_chain) { + string[] key_chain, + TitleFunc? title_func = + default_title_func) { base (id, parent, title); this.item_factory = item_factory; this.key_chain = key_chain; + this.title_func = title_func; try { this.create_proxies (); @@ -128,6 +134,8 @@ public class Rygel.TrackerMetadataValues : Rygel.SimpleContainer { continue; } + var title = this.title_func (value); + // The child container can use the same mandatory triplets we used // in our query except that last value is now fixed var child_mandatory = new TrackerQueryTriplets.clone (mandatory); @@ -135,7 +143,7 @@ public class Rygel.TrackerMetadataValues : Rygel.SimpleContainer { var container = new TrackerSearchContainer (value, this, - value, + title, this.item_factory, child_mandatory, null); @@ -146,6 +154,10 @@ public class Rygel.TrackerMetadataValues : Rygel.SimpleContainer { this.updated (); } + public static string default_title_func (string value) { + return value; + } + private void create_proxies () throws DBus.Error { DBus.Connection connection = DBus.Bus.get (DBus.BusType.SESSION); -- 2.7.4