Added app menus to some of the screens
authorKristoffer Grönlund <kristoffer.gronlund@purplescout.se>
Fri, 1 Jan 2010 19:35:50 +0000 (20:35 +0100)
committerKristoffer Grönlund <kristoffer.gronlund@purplescout.se>
Sat, 2 Jan 2010 23:37:45 +0000 (00:37 +0100)
jamaendo/api.py
jamaui/featured.py
jamaui/search.py
jamaui/showalbum.py
jamaui/ui.py

index df0f3c0..44a47e1 100644 (file)
@@ -219,9 +219,12 @@ class Query(object):
     def _geturl(self, url):
         #print "*** %s" % (url)
         Query._ratelimit()
     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):
         return ret
 
     def __str__(self):
@@ -240,12 +243,15 @@ class CoverFetcher(threading.Thread):
         self.work = []
 
     def _fetch_cover(self, albumid, size):
         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()
 
     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)
             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):
     """
 
 class CoverCache(object):
     """
index 17f5791..b7b14fd 100644 (file)
@@ -69,6 +69,20 @@ class FeaturedWindow(hildon.StackableWindow):
 
         self.add(self.panarea)
 
 
         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)
     def get_item_text(self, item):
         if isinstance(item, jamaendo.Album):
             return "%s - %s" % (item.artist_name, item.name)
index f7e27fb..dd33b94 100644 (file)
@@ -32,6 +32,7 @@ class SearchWindow(hildon.StackableWindow):
     def __init__(self):
         hildon.StackableWindow.__init__(self)
         self.set_title("Search")
     def __init__(self):
         hildon.StackableWindow.__init__(self)
         self.set_title("Search")
+        self.idmap = {}
 
         vbox = gtk.VBox(False, 0)
 
 
         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)
         hbox.pack_start(self.entry, True, True, 0)
         hbox.pack_start(btn, False)
         vbox.pack_start(hbox, False)
-
-
         self.add(vbox)
 
         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
 
     def mode_changed(self, selector, user_data):
         pass
index 0818d17..bfe6e8f 100644 (file)
@@ -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)
 
         postoffice.connect('album-cover', self, self.on_album_cover)
         postoffice.notify('request-album-cover', self.album.ID, 300)
 
+        self.create_menu()
+
         self.show_all()
 
         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)
 
     def on_destroy(self, wnd):
         postoffice.disconnect('album-cover', self)
 
index 329963b..f46feea 100644 (file)
@@ -108,10 +108,10 @@ class Jamaui(object):
         #search.connect("clicked", self.on_search)
         #self.menu.append(search)
 
         #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")
 
         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)
 
     def destroy(self, widget):
         postoffice.disconnect('request-album-cover', self)
+        self.save_settings()
         gtk.main_quit()
 
     def show_about(self, w, win):
         gtk.main_quit()
 
     def show_about(self, w, win):