from maeviesui.util import constants
from maeviesui.util.asyncworker import AsyncWorker, AsyncItem
from maeviesui.util.util import image_downloader
-from maeviesui.util.moviemanager import MovieManager
+from maeviesui.util.moviemanager import MovieManager, TmdbMovie, TmdbMovieImage
moviemanager = MovieManager()
def _row_activated_cb(self, view, path, column):
movie = view.get_movie_from_path(path)
- MovieWindow(movie)
+ if isinstance(movie, TmdbMovie):
+ MovieWindow(movie)
def start_search(self, search_term, search_category):
self._show_banner(search_term, search_category)
def _fetch_movie_image(self, movie):
image = gtk.Image()
-
+ image.set_from_pixbuf(gtk.IconTheme().load_icon('general_video',
+ 256, 0))
movie_image = movie.get_image('poster', 'mid')
- image_file = os.path.abspath('/tmp/' + movie_image.get_id() + '.jpg')
-
- if os.path.isfile(image_file):
- image.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file_at_size(image_file,
+ if isinstance(movie_image, TmdbMovieImage):
+ image_file = os.path.abspath('/tmp/' + movie_image.get_id() + '.jpg')
+ if os.path.isfile(image_file):
+ image.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file_at_size(image_file,
256,
256))
- else:
- image.set_from_pixbuf(gtk.IconTheme().load_icon('general_video',
- 256, 0))
- banner = hildon.hildon_banner_show_information_with_markup(self,
- 'ignored',
- 'Fetching movie poster')
- banner.set_timeout(constants.TIMEOUT_TIME_MILLIS)
- hildon.hildon_gtk_window_set_progress_indicator(self, True)
-
- async_item = AsyncItem(image_downloader, (movie_image.get_url(),
- '/tmp/' + movie_image.get_id()),
- self._set_fetched_image, (image,))
- self.async_worker.queue.put(async_item)
- self.async_worker.start()
+ else:
+ banner = hildon.hildon_banner_show_information_with_markup(self,
+ 'ignored',
+ 'Fetching movie poster')
+ banner.set_timeout(constants.TIMEOUT_TIME_MILLIS)
+ hildon.hildon_gtk_window_set_progress_indicator(self, True)
+
+ async_item = AsyncItem(image_downloader, (movie_image.get_url(),
+ '/tmp/' + movie_image.get_id()),
+ self._set_fetched_image, (image,))
+ self.async_worker.queue.put(async_item)
+ self.async_worker.start()
return image
MINFO_PROVIDER_BUS_NAME = 'com.simonpena.maevies.minfoprovider'
TMDB_MOVIE_INTERFACE = 'com.simonpena.maevies.tmdbmovie'
TMDB_MOVIE_BUS_NAME = 'com.simonpena.maevies.tmdbmovie'
+WATC_MOVIE_INTERFACE = 'com.simonpena.maevies.watcmovie'
+WATC_MOVIE_BUS_NAME = 'com.simonpena.maevies.watcmovie'
TMDB = 0
WATC = 1
if interface == TMDB_MOVIE_INTERFACE:
for path in object_paths:
- movies.append(MovieProxy(self._bus, path))
- else:
- pass
+ movies.append(TmdbMovie(self._bus, path))
+ elif interface == WATC_MOVIE_INTERFACE:
+ for path in object_paths:
+ movies.append(WatcMovie(self._bus, path))
if self.response_received_cb:
self.response_received_cb(movies)
-class MovieImage:
+class TmdbMovieImage:
def __init__(self, image_struct):
self._type, self._url, self._size, self._id = image_struct
str += '\t%s\n' % field
return str
-class MovieProxy:
+class GenericMovie(object):
- def __init__(self, bus, object_path):
+ def __init__(self, bus):
self._bus = bus
- self.interface = self._create_movie_interface(object_path)
- self.fields = ['Title', 'Release date', 'Rating', 'Popularity']
- self._images = self._retrieve_images()
+ pass
- def _create_movie_interface(self, object_path):
- proxy = self._bus.get_object(TMDB_MOVIE_BUS_NAME,
- object_path)
+ def _create_interface(self, bus_name, bus_interface, object_path):
+ proxy = self._bus.get_object(bus_name,
+ object_path)
interface = dbus.Interface(proxy,
- dbus_interface=TMDB_MOVIE_INTERFACE)
+ dbus_interface=bus_interface)
return interface
+ def get_title(self):
+ return ''
+
+ def get_info(self):
+ return ''
+
+ def get_value(self, field):
+ return ''
+
+ def get_image(self, type=None, size=None):
+ return self.get_placeholder_image()
+
+ def get_placeholder_image(self):
+ return self._get_placeholder_pixbuf()
+
+ def _get_placeholder_pixbuf(self):
+ pixbuf = gtk.IconTheme().load_icon('general_video_file', 48, 0)
+ return pixbuf
+
+class WatcMovie(GenericMovie):
+
+ def __init__(self, bus, object_path):
+ super(WatcMovie, self).__init__(bus)
+ self.interface = self._create_interface(WATC_MOVIE_BUS_NAME,
+ WATC_MOVIE_INTERFACE,
+ object_path)
+ self.fields = ['Name', 'Year', 'Stingers']
+
+ def get_value(self, field):
+ if field == 'Name':
+ return self.get_title()
+ elif field == 'Year':
+ return self.get_year()
+ elif field == 'Stingers':
+ return self.get_stingers()
+ super(WatcMovie, self).get_value()
+
+ def get_title(self):
+ return self.interface.GetName()
+
+ def get_year(self):
+ return self.interface.GetYear()
+
+ def get_stingers(self):
+ return self.interface.GetStingers()
+
+ def get_info(self):
+ stingers = self.get_stingers()
+ has_stingers = ''
+ if stingers == 0:
+ has_stingers = 'Unknown'
+ elif stingers == 1:
+ has_stingers = 'Yes'
+ elif stingers == 2:
+ has_stingers = 'No'
+
+ return ('<b>%(title)s</b>\n<small><i>Year: </i>%(year)s'
+ ' <i>Has stingers: </i>%(stingers)s</small>' %
+ {'title' : self.get_title(),
+ 'year' : self.get_year(),
+ 'stingers' : has_stingers})
+
+class TmdbMovie(GenericMovie):
+
+ def __init__(self, bus, object_path):
+ super(TmdbMovie, self).__init__(bus)
+ self.interface = self._create_interface(TMDB_MOVIE_BUS_NAME,
+ TMDB_MOVIE_INTERFACE,
+ object_path)
+ self.fields = ['Title', 'Release date', 'Rating', 'Popularity']
+ self._images = self._retrieve_images()
+
def _retrieve_images(self):
images = { }
dbus_images = self.interface.GetImages()
for dbus_image in dbus_images:
- image = MovieImage(dbus_image)
+ image = TmdbMovieImage(dbus_image)
if not images.has_key(image.get_type()):
images[image.get_type()] = {}
images[image.get_type()][image.get_size()] = image
return self.get_rating()
elif field == 'Popularity':
return self.get_popularity()
- else:
- return ''
+ super(TmdbMovie, self).get_value()
def get_title(self):
return self.interface.GetTitle()
return self.interface.GetRating()
def get_image(self, type, size):
- return self._images[type][size]
+ if self._images.has_key(type) and self._images[type].has_key(size):
+ return self._images[type][size]
+ else:
+ return None
def get_released(self):
return self.interface.GetReleased()
def get_overview(self):
return self.interface.GetOverview()
-
- def get_placeholder_image(self):
- return self._get_placeholder_pixbuf()
-
- def _get_placeholder_pixbuf(self):
- pixbuf = gtk.IconTheme().load_icon('general_video_file', 48, 0)
- return pixbuf