from maeviesui.util.util import image_downloader
from maeviesui.util.moviemanager import MovieManager
+moviemanager = MovieManager()
+
class Maevies(hildon.StackableWindow):
ACTION_SEARCH = 0
class SearchDialog(gtk.Dialog):
- _search_fields = [
- 'Movies',
- 'People',
- ]
+ TMDB_SEARCH = 0
+ WATC_SEARCH = 1
+ search_fields = {TMDB_SEARCH:'TMDb',
+ WATC_SEARCH:'WATC'}
def __init__(self, parent):
super(SearchDialog, self).__init__(parent=parent,
def _create_picker_button(self):
self._picker_button = hildon.PickerButton(gtk.HILDON_SIZE_FINGER_HEIGHT,
hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
- self._picker_button.set_title('Search for')
+ self._picker_button.set_title('Search on')
selector = hildon.TouchSelector(text=True)
selector.set_column_selection_mode(hildon.TOUCH_SELECTOR_SELECTION_MODE_SINGLE)
- for field in self._search_fields:
- selector.append_text(field)
+ for search_method in [self.TMDB_SEARCH, self.WATC_SEARCH]:
+ selector.append_text(self.search_fields[search_method])
self._picker_button.set_selector(selector)
self._picker_button.set_active(0)
return self._search_entry.get_text()
def get_search_category(self):
- return self._search_fields[self._picker_button.get_active()]
+ return self._picker_button.get_active()
class ResultsWindow(hildon.StackableWindow):
self.add(self._create_contents())
- self.moviemanager = MovieManager(response_received_cb=self._response_received_cb)
+ moviemanager.response_received_cb = self._response_received_cb
self.show_all()
def _create_contents(self):
def start_search(self, search_term, search_category):
self._show_banner(search_term, search_category)
hildon.hildon_gtk_window_set_progress_indicator(self, True)
- self.moviemanager.query(search_term)
+ moviemanager.query(search_term, search_category)
def _response_received_cb(self, movies):
self._movies_view.add_movies(movies)
hildon.hildon_gtk_window_set_progress_indicator(self, False)
def _show_banner(self, search_term, search_category):
- message = ('Searching <i>%(category)s</i> for <i>%(term)s</i>' %
- {'category': search_category,
+ message = ('Searching on <i>%(category)s</i> for <i>%(term)s</i>' %
+ {'category': SearchDialog.search_fields[search_category],
'term' : search_term})
banner = hildon.hildon_banner_show_information_with_markup(self,
'ignored',
def add(self, movies_found):
self.clear()
for movie in movies_found:
- row = {self.IMAGE_COLUMN: movie.get_image(),
+ row = {self.IMAGE_COLUMN: movie.get_placeholder_image(),
self.INFO_COLUMN: movie.get_info(),
self.MOVIE_COLUMN: movie,
}
class MovieWindow(hildon.StackableWindow):
- def _create_movie_image(self, movie):
+ def _fetch_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()
+ 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,
+ 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()
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))
+ def _set_fetched_image(self, image, target, error):
+ if not 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):
upper_content = gtk.HBox(False, 40)
upper_content.set_border_width(20)
- image = self._create_movie_image(movie)
+ image = self._fetch_movie_image(movie)
side_content = gtk.VBox(False, 30)