[rygel] tracker: MediaItem provides metadata keys



commit f5a00335db8973204bf9c8277a5b19e3d18d90a8
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Sat Sep 19 01:55:56 2009 +0300

    tracker: MediaItem provides metadata keys

 .../tracker/rygel-tracker-image-category.vala      |    4 -
 src/plugins/tracker/rygel-tracker-image-item.vala  |   61 +++------------
 src/plugins/tracker/rygel-tracker-item.vala        |   79 +++++++++++++++++++-
 .../tracker/rygel-tracker-music-category.vala      |    4 -
 src/plugins/tracker/rygel-tracker-music-item.vala  |   65 +++-------------
 .../tracker/rygel-tracker-search-container.vala    |    6 +-
 .../tracker/rygel-tracker-video-category.vala      |    4 -
 src/plugins/tracker/rygel-tracker-video-item.vala  |   57 +++-----------
 8 files changed, 113 insertions(+), 167 deletions(-)
---
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];
     }
 }
 



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