Initial support for multiple query services
[maevies] / ui / maeviesui / util / moviemanager.py
index d5148c9..23fbcd6 100644 (file)
@@ -29,7 +29,7 @@ glib.init_threads()
 
 MINFO_PROVIDER_INTERFACE = 'com.simonpena.maevies.minfoprovider'
 MINFO_PROVIDER_BUS_NAME = 'com.simonpena.maevies.minfoprovider'
-TMDB_MOVIE_INTERFACE = 'com.simonpena.maevies.movie'
+TMDB_MOVIE_INTERFACE = 'com.simonpena.maevies.tmdbmovie'
 TMDB_MOVIE_BUS_NAME = 'com.simonpena.maevies.tmdbmovie'
 TMDB = 0
 WATC = 1
@@ -63,20 +63,47 @@ class MovieManager:
         except DBusException:
             self._on_response_received([])
 
-    def _on_response_received(self, object_paths):
+    def _on_response_received(self, interface, object_paths):
         movies = []
-        for path in object_paths:
-            movies.append(MovieProxy(self._bus, path))
+
+        if interface == TMDB_MOVIE_INTERFACE:
+            for path in object_paths:
+                movies.append(MovieProxy(self._bus, path))
+        else:
+            pass
 
         if self.response_received_cb:
             self.response_received_cb(movies)
 
+class MovieImage:
+    def __init__(self, image_struct):
+        self._type, self._url, self._size, self._id = image_struct
+
+    def get_url(self):
+        return self._url
+
+    def get_id(self):
+        return self._id
+
+    def get_size(self):
+        return self._size
+
+    def get_type(self):
+        return self._type
+
+    def __str__(self):
+        str = ''
+        for field in [self._id, self._url, self._type, self._size]:
+            str += '\t%s\n' % field
+        return str
+
 class MovieProxy:
 
     def __init__(self, bus, object_path):
         self._bus = bus
         self.interface = self._create_movie_interface(object_path)
         self.fields = ['Title', 'Release date', 'Rating', 'Popularity']
+        self._images = self._retrieve_images()
 
     def _create_movie_interface(self, object_path):
         proxy = self._bus.get_object(TMDB_MOVIE_BUS_NAME,
@@ -85,6 +112,16 @@ class MovieProxy:
                                    dbus_interface=TMDB_MOVIE_INTERFACE)
         return interface
 
+    def _retrieve_images(self):
+        images = { }
+        dbus_images = self.interface.GetImages()
+        for dbus_image in dbus_images:
+            image = MovieImage(dbus_image)
+            if not images.has_key(image.get_type()):
+                images[image.get_type()] = {}
+            images[image.get_type()][image.get_size()] = image
+        return images
+
     def get_value(self, field):
         if field == 'Title':
             return self.get_title()
@@ -106,6 +143,9 @@ class MovieProxy:
     def get_rating(self):
         return self.interface.GetRating()
 
+    def get_image(self, type, size):
+        return self._images[type][size]
+
     def get_released(self):
         return self.interface.GetReleased()
 
@@ -121,7 +161,7 @@ class MovieProxy:
     def get_overview(self):
         return self.interface.GetOverview()
 
-    def get_image(self):
+    def get_placeholder_image(self):
         return self._get_placeholder_pixbuf()
 
     def _get_placeholder_pixbuf(self):