From: Zeeshan Ali (Khattak) Date: Fri, 18 Sep 2009 22:55:56 +0000 (+0300) Subject: tracker: MediaItem provides metadata keys X-Git-Tag: RYGEL_0_4~49 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f5a00335db8973204bf9c8277a5b19e3d18d90a8;p=profile%2Fivi%2Frygel.git tracker: MediaItem provides metadata keys --- diff --git a/src/plugins/tracker/rygel-tracker-image-category.vala b/src/plugins/tracker/rygel-tracker-image-category.vala index 47ba965..0a84975 100644 --- a/src/plugins/tracker/rygel-tracker-image-category.vala +++ b/src/plugins/tracker/rygel-tracker-image-category.vala @@ -30,9 +30,5 @@ public class Rygel.TrackerImageCategory : Rygel.TrackerSearchContainer { string title) { base (id, parent, title, TrackerImageItem.SERVICE); } - - protected override string[] get_metadata_keys () { - return TrackerImageItem.get_metadata_keys (); - } } diff --git a/src/plugins/tracker/rygel-tracker-image-item.vala b/src/plugins/tracker/rygel-tracker-image-item.vala index 6c06628..361ca63 100644 --- a/src/plugins/tracker/rygel-tracker-image-item.vala +++ b/src/plugins/tracker/rygel-tracker-image-item.vala @@ -30,69 +30,30 @@ using DBus; public class Rygel.TrackerImageItem : Rygel.TrackerItem { public const string SERVICE = "Images"; - private enum Metadata { - FILE_NAME, - MIME, - SIZE, - TITLE, - CREATOR, - WIDTH, - HEIGHT, - ALBUM, - IMAGE_DATE, - DATE, - LAST_KEY - } - public TrackerImageItem (string id, string path, TrackerSearchContainer parent, string[] metadata) { base (id, path, parent, MediaItem.IMAGE_CLASS, metadata); - } - - public static string[] get_metadata_keys () { - string[] keys = new string[Metadata.LAST_KEY]; - keys[Metadata.FILE_NAME] = "File:Name"; - keys[Metadata.MIME] = "File:Mime"; - keys[Metadata.SIZE] = "File:Size"; - keys[Metadata.TITLE] = "Video:Title"; - keys[Metadata.CREATOR] = "Image:Creator"; - keys[Metadata.WIDTH] = "Image:Width"; - keys[Metadata.HEIGHT] = "Image:Height"; - keys[Metadata.ALBUM] = "Image:Album"; - keys[Metadata.IMAGE_DATE] = "Image:Date"; - keys[Metadata.DATE] = "DC:Date"; - return keys; - } - - protected override void init_from_metadata (string[] values) { - if (values[Metadata.TITLE] != "") - this.title = values[Metadata.TITLE]; + if (metadata[Metadata.IMAGE_TITLE] != "") + this.title = metadata[Metadata.IMAGE_TITLE]; else /* If title wasn't provided, use filename instead */ - this.title = values[Metadata.FILE_NAME]; - - if (values[Metadata.SIZE] != "") - this.size = values[Metadata.SIZE].to_int (); + this.title = metadata[Metadata.FILE_NAME]; - if (values[Metadata.WIDTH] != "") - this.width = values[Metadata.WIDTH].to_int (); + if (metadata[Metadata.IMAGE_WIDTH] != "") + this.width = metadata[Metadata.IMAGE_WIDTH].to_int (); - if (values[Metadata.HEIGHT] != "") - this.height = values[Metadata.HEIGHT].to_int (); + if (metadata[Metadata.IMAGE_HEIGHT] != "") + this.height = metadata[Metadata.IMAGE_HEIGHT].to_int (); - if (values[Metadata.DATE] != "") { - this.date = seconds_to_iso8601 (values[Metadata.DATE]); - } else { - this.date = seconds_to_iso8601 (values[Metadata.IMAGE_DATE]); + if (metadata[Metadata.IMAGE_DATE] != "") { + this.date = seconds_to_iso8601 (metadata[Metadata.IMAGE_DATE]); } - this.mime_type = values[Metadata.MIME]; - this.author = values[Metadata.CREATOR]; - this.album = values[Metadata.ALBUM]; - this.add_uri (Filename.to_uri (path, null), null); + this.author = metadata[Metadata.CREATOR]; + this.album = metadata[Metadata.IMAGE_ALBUM]; } } diff --git a/src/plugins/tracker/rygel-tracker-item.vala b/src/plugins/tracker/rygel-tracker-item.vala index 418b41a..7abd1c8 100644 --- a/src/plugins/tracker/rygel-tracker-item.vala +++ b/src/plugins/tracker/rygel-tracker-item.vala @@ -28,6 +28,39 @@ using DBus; * Represents Tracker item. */ public abstract class Rygel.TrackerItem : Rygel.MediaItem { + protected enum Metadata { + FILE_NAME, + MIME, + SIZE, + DATE, + + // Image + IMAGE_TITLE, + IMAGE_WIDTH, + IMAGE_HEIGHT, + IMAGE_ALBUM, + IMAGE_DATE, + CREATOR, + + // Audio + AUDIO_TITLE, + AUDIO_DURATION, + AUDIO_ALBUM, + ARTIST, + TRACK_NUM, + RELEASE, + DATE_ADDED, + + // Video + VIDEO_TITLE, + VIDEO_WIDTH, + VIDEO_HEIGHT, + VIDEO_DURATION, + AUTHOR, + + LAST_KEY + } + protected string path; public TrackerItem (string id, @@ -39,7 +72,49 @@ public abstract class Rygel.TrackerItem : Rygel.MediaItem { this.path = path; - this.init_from_metadata (metadata); + if (metadata[Metadata.SIZE] != "") + this.size = metadata[Metadata.SIZE].to_int (); + + if (metadata[Metadata.DATE] != "") + this.date = seconds_to_iso8601 (metadata[Metadata.DATE]); + + this.mime_type = metadata[Metadata.MIME]; + + this.add_uri (Filename.to_uri (path, null), null); + } + + public static string[] get_metadata_keys () { + string[] keys = new string[Metadata.LAST_KEY]; + keys[Metadata.FILE_NAME] = "File:Name"; + keys[Metadata.MIME] = "File:Mime"; + keys[Metadata.SIZE] = "File:Size"; + keys[Metadata.DATE] = "DC:Date"; + + // Image metadata + keys[Metadata.IMAGE_TITLE] = "Image:Title"; + keys[Metadata.CREATOR] = "Image:Creator"; + keys[Metadata.IMAGE_WIDTH] = "Image:Width"; + keys[Metadata.IMAGE_HEIGHT] = "Image:Height"; + keys[Metadata.IMAGE_ALBUM] = "Image:Album"; + keys[Metadata.IMAGE_DATE] = "Image:Date"; + + // Audio metadata + keys[Metadata.AUDIO_TITLE] = "Audio:Title"; + keys[Metadata.AUDIO_DURATION] = "Audio:Duration"; + keys[Metadata.ARTIST] = "Audio:Artist"; + keys[Metadata.AUDIO_ALBUM] = "Audio:Album"; + keys[Metadata.TRACK_NUM] = "Audio:TrackNo"; + keys[Metadata.RELEASE] = "Audio:ReleaseDate"; + keys[Metadata.DATE_ADDED] = "Audio:DateAdded"; + + // Video metadata + keys[Metadata.VIDEO_DURATION] = "Video:Duration"; + keys[Metadata.VIDEO_TITLE] = "Video:Title"; + keys[Metadata.AUTHOR] = "Video:Author"; + keys[Metadata.VIDEO_WIDTH] = "Video:Width"; + keys[Metadata.VIDEO_HEIGHT] = "Video:Height"; + + return keys; } protected string seconds_to_iso8601 (string seconds) { @@ -58,7 +133,5 @@ public abstract class Rygel.TrackerItem : Rygel.MediaItem { return date; } - - protected abstract void init_from_metadata (string[] values); } diff --git a/src/plugins/tracker/rygel-tracker-music-category.vala b/src/plugins/tracker/rygel-tracker-music-category.vala index 66b02a1..9fde818 100644 --- a/src/plugins/tracker/rygel-tracker-music-category.vala +++ b/src/plugins/tracker/rygel-tracker-music-category.vala @@ -30,9 +30,5 @@ public class Rygel.TrackerMusicCategory : Rygel.TrackerSearchContainer { string title) { base (id, parent, title, TrackerMusicItem.SERVICE); } - - protected override string[] get_metadata_keys () { - return TrackerMusicItem.get_metadata_keys (); - } } diff --git a/src/plugins/tracker/rygel-tracker-music-item.vala b/src/plugins/tracker/rygel-tracker-music-item.vala index 2de1b9a..62ff7a5 100644 --- a/src/plugins/tracker/rygel-tracker-music-item.vala +++ b/src/plugins/tracker/rygel-tracker-music-item.vala @@ -30,73 +30,32 @@ using DBus; public class Rygel.TrackerMusicItem : Rygel.TrackerItem { public const string SERVICE = "Music"; - private enum Metadata { - FILE_NAME, - MIME, - SIZE, - DURATION, - TITLE, - ARTIST, - TRACK_NUM, - ALBUM, - RELEASE, - DATE_ADDED, - DATE, - LAST_KEY - } - public TrackerMusicItem (string id, string path, TrackerSearchContainer parent, string[] metadata) { base (id, path, parent, MediaItem.MUSIC_CLASS, metadata); - } - - public static string[] get_metadata_keys () { - string[] keys = new string[Metadata.LAST_KEY]; - keys[Metadata.FILE_NAME] = "File:Name"; - keys[Metadata.MIME] = "File:Mime"; - keys[Metadata.SIZE] = "File:Size"; - keys[Metadata.DURATION] = "Audio:Duration"; - keys[Metadata.TITLE] = "Audio:Title"; - keys[Metadata.ARTIST] = "Audio:Artist"; - keys[Metadata.TRACK_NUM] = "Audio:TrackNo"; - keys[Metadata.ALBUM] = "Audio:Album"; - keys[Metadata.RELEASE] = "Audio:ReleaseDate"; - keys[Metadata.DATE_ADDED] = "Audio:DateAdded"; - keys[Metadata.DATE] = "DC:Date"; - return keys; - } - - protected override void init_from_metadata (string[] values) { - if (values[Metadata.TITLE] != "") - this.title = values[Metadata.TITLE]; + if (metadata[Metadata.AUDIO_TITLE] != "") + this.title = metadata[Metadata.AUDIO_TITLE]; else /* If title wasn't provided, use filename instead */ - this.title = values[Metadata.FILE_NAME]; - - if (values[Metadata.SIZE] != "") - this.size = values[Metadata.SIZE].to_int (); + this.title = metadata[Metadata.FILE_NAME]; - if (values[Metadata.DURATION] != "") - this.duration = values[Metadata.DURATION].to_int (); + if (metadata[Metadata.AUDIO_DURATION] != "") + this.duration = metadata[Metadata.AUDIO_DURATION].to_int (); - if (values[Metadata.TRACK_NUM] != "") - this.track_number = values[Metadata.TRACK_NUM].to_int (); + if (metadata[Metadata.TRACK_NUM] != "") + this.track_number = metadata[Metadata.TRACK_NUM].to_int (); - if (values[Metadata.DATE] != "") { - this.date = seconds_to_iso8601 (values[Metadata.DATE]); - } else if (values[Metadata.RELEASE] != "") { - this.date = seconds_to_iso8601 (values[Metadata.RELEASE]); + if (metadata[Metadata.RELEASE] != "") { + this.date = seconds_to_iso8601 (metadata[Metadata.RELEASE]); } else { - this.date = seconds_to_iso8601 (values[Metadata.DATE_ADDED]); + this.date = seconds_to_iso8601 (metadata[Metadata.DATE_ADDED]); } - this.mime_type = values[Metadata.MIME]; - this.author = values[Metadata.ARTIST]; - this.album = values[Metadata.ALBUM]; - this.add_uri (Filename.to_uri (path, null), null); + this.author = metadata[Metadata.ARTIST]; + this.album = metadata[Metadata.AUDIO_ALBUM]; } } diff --git a/src/plugins/tracker/rygel-tracker-search-container.vala b/src/plugins/tracker/rygel-tracker-search-container.vala index 5e7c8c4..19783c8 100644 --- a/src/plugins/tracker/rygel-tracker-search-container.vala +++ b/src/plugins/tracker/rygel-tracker-search-container.vala @@ -123,7 +123,7 @@ public abstract class Rygel.TrackerSearchContainer : Rygel.MediaContainer { try { this.search.Query (0, this.service, - this.get_metadata_keys (), + TrackerItem.get_metadata_keys (), "", new string[0], this.query_condition, @@ -172,7 +172,7 @@ public abstract class Rygel.TrackerSearchContainer : Rygel.MediaContainer { "No such object"); } - string[] keys = this.get_metadata_keys (); + string[] keys = TrackerItem.get_metadata_keys (); this.metadata.Get (res.item_service, res.item_path, @@ -262,7 +262,5 @@ public abstract class Rygel.TrackerSearchContainer : Rygel.MediaContainer { TRACKER_PATH, TRACKER_IFACE); } - - protected abstract string[] get_metadata_keys (); } diff --git a/src/plugins/tracker/rygel-tracker-video-category.vala b/src/plugins/tracker/rygel-tracker-video-category.vala index a4b1723..39f3108 100644 --- a/src/plugins/tracker/rygel-tracker-video-category.vala +++ b/src/plugins/tracker/rygel-tracker-video-category.vala @@ -30,9 +30,5 @@ public class Rygel.TrackerVideoCategory : Rygel.TrackerSearchContainer { string title) { base (id, parent, title, TrackerVideoItem.SERVICE); } - - protected override string[] get_metadata_keys () { - return TrackerVideoItem.get_metadata_keys (); - } } diff --git a/src/plugins/tracker/rygel-tracker-video-item.vala b/src/plugins/tracker/rygel-tracker-video-item.vala index e20d799..8000bfd 100644 --- a/src/plugins/tracker/rygel-tracker-video-item.vala +++ b/src/plugins/tracker/rygel-tracker-video-item.vala @@ -30,64 +30,31 @@ using DBus; public class Rygel.TrackerVideoItem : Rygel.TrackerItem { public const string SERVICE = "Videos"; - private enum Metadata { - FILE_NAME, - MIME, - SIZE, - DURATION, - TITLE, - AUTHOR, - WIDTH, - HEIGHT, - DATE, - LAST_KEY - } - public TrackerVideoItem (string id, string path, TrackerSearchContainer parent, string[] metadata) { base (id, path, parent, MediaItem.VIDEO_CLASS, metadata); - } - - public static string[] get_metadata_keys () { - string[] keys = new string[Metadata.LAST_KEY]; - keys[Metadata.FILE_NAME] = "File:Name"; - keys[Metadata.MIME] = "File:Mime"; - keys[Metadata.SIZE] = "File:Size"; - keys[Metadata.DURATION] = "Video:Duration"; - keys[Metadata.TITLE] = "Video:Title"; - keys[Metadata.AUTHOR] = "Video:Author"; - keys[Metadata.WIDTH] = "Video:Width"; - keys[Metadata.HEIGHT] = "Video:Height"; - keys[Metadata.DATE] = "DC:Date"; - - return keys; - } - protected override void init_from_metadata (string[] values) { - if (values[Metadata.TITLE] != "") - this.title = values[Metadata.TITLE]; + if (metadata[Metadata.VIDEO_TITLE] != "") + this.title = metadata[Metadata.VIDEO_TITLE]; else /* If title wasn't provided, use filename instead */ - this.title = values[Metadata.FILE_NAME]; + this.title = metadata[Metadata.FILE_NAME]; - if (values[Metadata.SIZE] != "") - this.size = values[Metadata.SIZE].to_int (); + if (metadata[Metadata.VIDEO_WIDTH] != "") + this.width = metadata[Metadata.VIDEO_WIDTH].to_int (); - if (values[Metadata.DURATION] != "") - this.duration = values[Metadata.DURATION].to_int (); + if (metadata[Metadata.VIDEO_HEIGHT] != "") + this.height = metadata[Metadata.VIDEO_HEIGHT].to_int (); - if (values[Metadata.WIDTH] != "") - this.width = values[Metadata.WIDTH].to_int (); + if (metadata[Metadata.VIDEO_DURATION] != "") + this.duration = metadata[Metadata.VIDEO_DURATION].to_int (); - if (values[Metadata.HEIGHT] != "") - this.height = values[Metadata.HEIGHT].to_int (); + if (metadata[Metadata.VIDEO_DURATION] != "") + this.duration = metadata[Metadata.VIDEO_DURATION].to_int (); - this.date = this.seconds_to_iso8601 (values[Metadata.DATE]); - this.mime_type = values[Metadata.MIME]; - this.author = values[Metadata.AUTHOR]; - this.add_uri (Filename.to_uri (path, null), null); + this.author = metadata[Metadata.AUTHOR]; } }