[rygel] external: Turn Thumbnail class into a factory



commit 3ad71c119a5759babd27e83fb3499b1753ec6b84
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Sun Oct 25 01:51:44 2009 +0300

    external: Turn Thumbnail class into a factory

 src/plugins/external/Makefile.am                   |    2 +-
 src/plugins/external/rygel-external-item.vala      |    9 +++--
 ....vala => rygel-external-thumbnail-factory.vala} |   36 +++++++++-----------
 3 files changed, 22 insertions(+), 25 deletions(-)
---
diff --git a/src/plugins/external/Makefile.am b/src/plugins/external/Makefile.am
index 81efc51..bbb1ebb 100644
--- a/src/plugins/external/Makefile.am
+++ b/src/plugins/external/Makefile.am
@@ -18,7 +18,7 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
 librygel_external_la_SOURCES = rygel-external-content-dir.vala \
 			       rygel-external-container.vala \
 			       rygel-external-item.vala \
-			       rygel-external-thumbnail.vala \
+			       rygel-external-thumbnail-factory.vala \
 			       rygel-external-plugin.vala \
 			       rygel-external-interfaces.vala \
 			       rygel-external-plugin-factory.vala \
diff --git a/src/plugins/external/rygel-external-item.vala b/src/plugins/external/rygel-external-item.vala
index 944673c..9e9c3f5 100644
--- a/src/plugins/external/rygel-external-item.vala
+++ b/src/plugins/external/rygel-external-item.vala
@@ -62,14 +62,15 @@ public class Rygel.ExternalItem : Rygel.MediaItem {
         var object_props = yield props.get_all (OBJECT_IFACE);
         var item_props = yield props.get_all (ITEM_IFACE);
 
-        ExternalThumbnail thumbnail = null;
+        Thumbnail thumbnail = null;
         var value = item_props.lookup ("Thumbnail");
         if (value != null) {
             var thumbnail_path = value.get_string ();
 
-            thumbnail = yield ExternalThumbnail.create (thumbnail_path,
-                                                        parent.service_name,
-                                                        parent.host_ip);
+            var factory = new ExternalThumbnailFactory ();
+            thumbnail = yield factory.create (thumbnail_path,
+                                              parent.service_name,
+                                              parent.host_ip);
         }
 
         return new ExternalItem (id,
diff --git a/src/plugins/external/rygel-external-thumbnail.vala b/src/plugins/external/rygel-external-thumbnail-factory.vala
similarity index 64%
rename from src/plugins/external/rygel-external-thumbnail.vala
rename to src/plugins/external/rygel-external-thumbnail-factory.vala
index 9d381d8..1ad09b8 100644
--- a/src/plugins/external/rygel-external-thumbnail.vala
+++ b/src/plugins/external/rygel-external-thumbnail-factory.vala
@@ -26,64 +26,60 @@ using DBus;
 using FreeDesktop;
 
 /**
- * Represents External thumbnail.
+ * Factory for thumbnail from external plugins.
  */
-public class Rygel.ExternalThumbnail : Rygel.Thumbnail {
-    private static string OBJECT_IFACE = "org.gnome.UPnP.MediaObject1";
+public class Rygel.ExternalThumbnailFactory {
     private static string ITEM_IFACE = "org.gnome.UPnP.MediaItem1";
 
-    public static async ExternalThumbnail create (string service_name,
-                                                  string object_path,
-                                                  string host_ip)
-                                                  throws GLib.Error {
+    public async Thumbnail create (string service_name,
+                                   string object_path,
+                                   string host_ip)
+                                   throws GLib.Error {
         DBus.Connection connection = DBus.Bus.get (DBus.BusType.SESSION);
 
         var props = connection.get_object (service_name,
                                            object_path)
                                            as Properties;
 
-        var object_props = yield props.get_all (OBJECT_IFACE);
         var item_props = yield props.get_all (ITEM_IFACE);
 
-        return new ExternalThumbnail (object_props, item_props, host_ip);
-    }
+        var thumbnail = new Thumbnail ();
 
-    private ExternalThumbnail (HashTable<string,Value?> object_props,
-                               HashTable<string,Value?> item_props,
-                               string                   host_ip) {
         var value = item_props.lookup ("MIMEType");
-        this.mime_type = value.get_string ();
+        thumbnail.mime_type = value.get_string ();
 
         value = item_props.lookup ("URLs");
         weak string[] uris = (string[]) value.get_boxed ();
         if (uris != null && uris[0] != null) {
-            this.uri = uris[0].replace ("@ADDRESS@", host_ip);
+            thumbnail.uri = uris[0].replace ("@ADDRESS@", host_ip);
         }
 
         value = item_props.lookup ("DLNAProfile");
         if (value != null) {
-            this.dlna_profile = value.get_string ();
+            thumbnail.dlna_profile = value.get_string ();
         }
 
         value = item_props.lookup ("Size");
         if (value != null) {
-            this.size = value.get_int ();
+            thumbnail.size = value.get_int ();
         }
 
         value = item_props.lookup ("Width");
         if (value != null) {
-            this.width = value.get_int ();
+            thumbnail.width = value.get_int ();
         }
 
         value = item_props.lookup ("Height");
         if (value != null) {
-            this.height = value.get_int ();
+            thumbnail.height = value.get_int ();
         }
 
         value = item_props.lookup ("ColorDepth");
         if (value != null) {
-            this.depth = value.get_int ();
+            thumbnail.depth = value.get_int ();
         }
+
+        return thumbnail;
     }
 }
 



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