From ef38e67e9c769af43ed190f810daf8c2e164a125 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristoffer=20Gr=C3=B6nlund?= Date: Fri, 1 Jan 2010 20:35:50 +0100 Subject: [PATCH] Added app menus to some of the screens --- jamaendo/api.py | 31 +++++++++++++++++++------------ jamaui/featured.py | 14 ++++++++++++++ jamaui/search.py | 17 ++++++++++++++--- jamaui/showalbum.py | 14 ++++++++++++++ jamaui/ui.py | 9 +++++---- 5 files changed, 66 insertions(+), 19 deletions(-) diff --git a/jamaendo/api.py b/jamaendo/api.py index df0f3c0..44a47e1 100644 --- a/jamaendo/api.py +++ b/jamaendo/api.py @@ -219,9 +219,12 @@ class Query(object): def _geturl(self, url): #print "*** %s" % (url) Query._ratelimit() - f = urllib.urlopen(url) - ret = simplejson.load(f) - f.close() + try: + f = urllib.urlopen(url) + ret = simplejson.load(f) + f.close() + except Exception, e: + return None return ret def __str__(self): @@ -240,12 +243,15 @@ class CoverFetcher(threading.Thread): self.work = [] def _fetch_cover(self, albumid, size): - coverdir = _COVERDIR if _COVERDIR else '/tmp' - to = os.path.join(coverdir, '%d-%d.jpg'%(albumid, size)) - if not os.path.isfile(to): - url = _GET2+'image/album/redirect/?id=%d&imagesize=%d'%(albumid, size) - urllib.urlretrieve(url, to) - return to + try: + coverdir = _COVERDIR if _COVERDIR else '/tmp' + to = os.path.join(coverdir, '%d-%d.jpg'%(albumid, size)) + if not os.path.isfile(to): + url = _GET2+'image/album/redirect/?id=%d&imagesize=%d'%(albumid, size) + urllib.urlretrieve(url, to) + return to + except Exception, e: + return None def request_cover(self, albumid, size, cb): self.cond.acquire() @@ -268,9 +274,10 @@ class CoverFetcher(threading.Thread): multi = len(work) > 1 for albumid, size, cb in work: cover = self._fetch_cover(albumid, size) - cb(albumid, size, cover) - if multi: - time.sleep(1.0) + if cover: + cb(albumid, size, cover) + if multi: + time.sleep(1.0) class CoverCache(object): """ diff --git a/jamaui/featured.py b/jamaui/featured.py index 17f5791..b7b14fd 100644 --- a/jamaui/featured.py +++ b/jamaui/featured.py @@ -69,6 +69,20 @@ class FeaturedWindow(hildon.StackableWindow): self.add(self.panarea) + self.create_menu() + + def create_menu(self): + def on_player(): + from playerwindow import open_playerwindow + open_playerwindow() + self.menu = hildon.AppMenu() + player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + player.set_label("Open player") + player.connect("clicked", on_player) + self.menu.append(player) + self.menu.show_all() + self.set_app_menu(self.menu) + def get_item_text(self, item): if isinstance(item, jamaendo.Album): return "%s - %s" % (item.artist_name, item.name) diff --git a/jamaui/search.py b/jamaui/search.py index f7e27fb..dd33b94 100644 --- a/jamaui/search.py +++ b/jamaui/search.py @@ -32,6 +32,7 @@ class SearchWindow(hildon.StackableWindow): def __init__(self): hildon.StackableWindow.__init__(self) self.set_title("Search") + self.idmap = {} vbox = gtk.VBox(False, 0) @@ -81,11 +82,21 @@ class SearchWindow(hildon.StackableWindow): hbox.pack_start(self.entry, True, True, 0) hbox.pack_start(btn, False) vbox.pack_start(hbox, False) - - self.add(vbox) - self.idmap = {} + self.create_menu() + + def create_menu(self): + def on_player(): + from playerwindow import open_playerwindow + open_playerwindow() + self.menu = hildon.AppMenu() + player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + player.set_label("Open player") + player.connect("clicked", on_player) + self.menu.append(player) + self.menu.show_all() + self.set_app_menu(self.menu) def mode_changed(self, selector, user_data): pass diff --git a/jamaui/showalbum.py b/jamaui/showalbum.py index 0818d17..bfe6e8f 100644 --- a/jamaui/showalbum.py +++ b/jamaui/showalbum.py @@ -88,8 +88,22 @@ class ShowAlbum(hildon.StackableWindow): postoffice.connect('album-cover', self, self.on_album_cover) postoffice.notify('request-album-cover', self.album.ID, 300) + self.create_menu() + self.show_all() + def create_menu(self): + def on_player(): + from playerwindow import open_playerwindow + open_playerwindow() + self.menu = hildon.AppMenu() + player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + player.set_label("Open player") + player.connect("clicked", on_player) + self.menu.append(player) + self.menu.show_all() + self.set_app_menu(self.menu) + def on_destroy(self, wnd): postoffice.disconnect('album-cover', self) diff --git a/jamaui/ui.py b/jamaui/ui.py index 329963b..f46feea 100644 --- a/jamaui/ui.py +++ b/jamaui/ui.py @@ -108,10 +108,10 @@ class Jamaui(object): #search.connect("clicked", self.on_search) #self.menu.append(search) - #player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) - #player.set_label("Open player") - #player.connect("clicked", self.on_player) - #self.menu.append(player) + player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + player.set_label("Open player") + player.connect("clicked", self.on_player) + self.menu.append(player) player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) player.set_label("Favorites") @@ -194,6 +194,7 @@ class Jamaui(object): def destroy(self, widget): postoffice.disconnect('request-album-cover', self) + self.save_settings() gtk.main_quit() def show_about(self, w, win): -- 1.7.9.5