X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=ui%2Fmaeviesui%2Fmaeviesui%2Fgui.py;fp=ui%2Fmaeviesui%2Fmaeviesui%2Fgui.py;h=ae1393ebef0f8ef22038111d14677562a927d0c2;hb=29e534174ddd5292228dbdccab7bf9e159634245;hp=beb191f402daee24c4a4d8147425693665db7bd2;hpb=d3e8ce8548e18a8a8ca9d6649c958277fb7b680c;p=maevies diff --git a/ui/maeviesui/maeviesui/gui.py b/ui/maeviesui/maeviesui/gui.py index beb191f..ae1393e 100644 --- a/ui/maeviesui/maeviesui/gui.py +++ b/ui/maeviesui/maeviesui/gui.py @@ -19,6 +19,7 @@ ########################################################################### import pygtk +import os pygtk.require('2.0') import gtk import hildon @@ -26,6 +27,8 @@ import pango import gobject 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 class Maevies(hildon.StackableWindow): @@ -222,7 +225,8 @@ class MoviesView(gtk.TreeView): def add_movies(self, movie_list): model = self.get_model() - model.add(movie_list) + if model: + model.add(movie_list) def get_movie_from_path(self, path): model = self.get_model() @@ -259,6 +263,30 @@ class AboutDialog(gtk.Dialog): class MovieWindow(hildon.StackableWindow): + def _create_movie_image(self, movie): + image = gtk.Image() + image.set_from_pixbuf(gtk.IconTheme().load_icon('general_video', + 256, 0)) + banner = hildon.hildon_banner_show_information_with_markup(self, + 'ignored', + 'Fetching movie cover') + banner.set_timeout(constants.TIMEOUT_TIME_MILLIS) + hildon.hildon_gtk_window_set_progress_indicator(self, True) + + async_item = AsyncItem(image_downloader, (movie.get_images()[0].get_url(), '/tmp/' + movie.get_title()), + self._set_downloaded_image, (image,)) + self.async_worker.queue.put(async_item) + self.async_worker.start() + + return image + + def _set_downloaded_image(self, image, target, error): + image_file = os.path.abspath(target) + image.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file_at_size(image_file, + 256, + 256)) + hildon.hildon_gtk_window_set_progress_indicator(self, False) + def _create_contents(self, movie): main_area = hildon.PannableArea() @@ -267,9 +295,7 @@ class MovieWindow(hildon.StackableWindow): upper_content = gtk.HBox(False, 40) upper_content.set_border_width(20) - image = gtk.Image() - image.set_from_pixbuf(gtk.IconTheme().load_icon('mediaplayer_default_album', - 256, 0)) + image = self._create_movie_image(movie) side_content = gtk.VBox(False, 30) @@ -306,6 +332,7 @@ class MovieWindow(hildon.StackableWindow): def __init__(self, movie): super(MovieWindow, self).__init__() + self.async_worker = AsyncWorker() self.set_title('Movie info') self.add(self._create_contents(movie)) self.show_all()