import logging
from albumlist import TrackList
from playlists import add_to_playlist
+from fetcher import fetcher
import webbrowser
hildon.StackableWindow.__init__(self)
self.set_title(album.artist_name)
self.album = album
+ self.fetcher = None
self.connect('destroy', self.on_destroy)
self.tracks = TrackList(numbers=True)
self.tracks.connect('row-activated', self.row_activated)
- self.tracklist = jamaendo.get_tracks(album.ID)
- for track in self.tracklist:
- self.tracks.add_track(track)
+ self.tracklist = []
+ #self.tracklist = jamaendo.get_tracks(album.ID)
+ #for track in self.tracklist:
+ # self.tracks.add_track(track)
top_hbox.pack_start(vbox1, False)
top_hbox.pack_start(vbox2, True)
postoffice.notify('request-album-cover', self.album.ID, 300)
self.create_menu()
+ self.start_track_fetcher()
def create_menu(self):
def on_player(*args):
def on_destroy(self, wnd):
postoffice.disconnect('album-cover', self)
+ if self.fetcher:
+ self.fetcher.stop()
+ self.fetcher = None
+
+ def start_track_fetcher(self):
+ if self.fetcher:
+ self.fetcher.stop()
+ self.fetcher = None
+ self.fetcher = Fetcher(jamaendo.starred_radios, self,
+ on_item = self.on_radio_result,
+ on_ok = self.on_radio_complete,
+ on_fail = self.on_radio_complete)
+ self.fetcher.start()
+
+ def on_track_result(self, wnd, item):
+ if wnd is self:
+ self.tracklist.append(item)
+ self.tracks.add_track(item)
+
+ def on_track_complete(self, wnd, error=None):
+ if wnd is self:
+ self.fetcher.stop()
+ self.fetcher = None
def on_album_cover(self, albumid, size, cover):
if albumid == self.album.ID and size == 300:
self.open_item(self.album)
def row_activated(self, treeview, path, view_column):
+ # TODO: wait for all tracks to load
_id = self.tracks.get_track_id(path)
playlist = Playlist(self.tracklist)
playlist.jump_to(_id)
import util
import gobject
from playlists import add_to_playlist, show_banner
+from fetcher import Fetcher
import logging
self.set_title(artist.name)
self.artist = artist
+ self.connect('destroy', self.on_destroy)
+ self.fetcher = None
+
top_hbox = gtk.HBox()
self.image = gtk.Image()
self.default_pixbuf = util.find_resource('album.png')
self.add(top_hbox)
- try:
- self.albumlist = jamaendo.get_albums(artist.ID)
- for album in self.albumlist:
- self.albums.add_album(album)
- except jamaendo.JamendoAPIException:
- log.exception("Failed in get_albums(%s)"%(artist.ID))
+ self.albumlist = []
postoffice.connect('images', self, self.on_images)
postoffice.notify('request-images', [self.artist.image])
self.create_menu()
+ self.start_album_fetcher()
+
+ def on_destroy(self, wnd):
+ if self.fetcher:
+ self.fetcher.stop()
+ self.fetcher = None
+
+ def start_album_fetcher(self):
+ if self.fetcher:
+ self.fetcher.stop()
+ self.fetcher = None
+ self.fetcher = Fetcher(lambda: jamaendo.get_albums(self.artist.ID), self,
+ on_item = self.on_album_result,
+ on_ok = self.on_album_complete,
+ on_fail = self.on_album_complete)
+ self.fetcher.start()
+
+ def on_album_result(self, wnd, item):
+ if wnd is self:
+ self.albums.add_album(item)
+ self.albumlist.append(item)
+
+ def on_album_complete(self, wnd, error=None):
+ if wnd is self:
+ self.fetcher.stop()
+ self.fetcher = None
def create_menu(self):
def on_player(*args):