X-Git-Url: http://git.maemo.org/git/?p=jamaendo;a=blobdiff_plain;f=jamaui%2Fplayerwindow.py;h=2fd350a13ecd190c0dcc42ac1715818bfcbd695f;hp=724e73de851b4ac7b799eff0582adba0fd2adc36;hb=61536ca548691b15e7f63340a0fbfb5a3055d5be;hpb=197d6453df2f45b3e6998b1ef85d5fa5cf9fb8eb diff --git a/jamaui/playerwindow.py b/jamaui/playerwindow.py index 724e73d..2fd350a 100644 --- a/jamaui/playerwindow.py +++ b/jamaui/playerwindow.py @@ -23,7 +23,10 @@ # import gtk import gobject -import hildon +try: + import hildon +except: + import helldon as hildon import util import pango import jamaendo @@ -34,14 +37,19 @@ import logging import cgi from songposition import SongPosition - +from listbox import ListDialog +import colors log = logging.getLogger(__name__) class PlayerWindow(hildon.StackableWindow): + instance = None + def __init__(self): hildon.StackableWindow.__init__(self) self.set_title("jamaendo") + PlayerWindow.instance = self + self.connect('destroy', self.on_destroy) self.player = the_player @@ -130,6 +138,11 @@ class PlayerWindow(hildon.StackableWindow): b.connect("clicked", to_album) self.menu.append(b) + b = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + b.set_label("Add to playlist") + b.connect("clicked", self.on_add_to_playlist) + self.menu.append(b) + self.menu.show_all() self.set_app_menu(self.menu) @@ -153,12 +166,14 @@ class PlayerWindow(hildon.StackableWindow): return None def on_destroy(self, wnd): + PlayerWindow.instance = None self.stop_position_timer() postoffice.disconnect(['album-cover', 'next', 'prev', 'play', 'stop'], self) def add_stock_button(self, btns, stock, cb): btn = hildon.GtkButton(gtk.HILDON_SIZE_FINGER_HEIGHT) btn.set_relief(gtk.RELIEF_NONE) + btn.set_focus_on_click(False) sz = gtk.ICON_SIZE_BUTTON btn.set_image(gtk.image_new_from_stock(stock, sz)) btn.connect('clicked', cb) @@ -189,15 +204,24 @@ class PlayerWindow(hildon.StackableWindow): self.playbtn.set_data('state', 'play') def set_labels(self, track, artist, album, playlist_pos, playlist_size): + if self.playlist.radio_mode: ppstr = 'Radio: %s'%(cgi.escape(self.playlist.radio_name)) else: - ppstr = 'Track %s of %s'%(int(playlist_pos)+1, playlist_size) + ppstr = 'Track %s of %s'%(colors.SmallSystemFont(), colors.SecondaryTextColor(), int(playlist_pos)+1, playlist_size) self.playlist_pos.set_markup(ppstr) - self.track.set_markup('%s'%(cgi.escape(track))) - self.artist.set_markup('%s'%(cgi.escape(artist))) - self.album.set_markup('%s'%(cgi.escape(album))) + self.track.set_markup('%s'%(colors.LargeSystemFont(), cgi.escape(track))) + self.artist.set_markup('%s'%(cgi.escape(artist))) + self.album.set_markup('%s'%(colors.SecondaryTextColor(), cgi.escape(album))) + + def show_banner(self, message, timeout = 2000): + banner = hildon.hildon_banner_show_information(self, '', message) + banner.set_timeout(2000) + def on_add_to_playlist(self, button, user_data=None): + track = self.player.playlist.current() + from playlists import add_to_playlist + add_to_playlist(self, track) def volume_changed_hildon(self, widget): settings.volume = widget.get_level()/100.0 @@ -235,6 +259,7 @@ class PlayerWindow(hildon.StackableWindow): def set_default_cover(self): tmp = util.find_resource('album.png') if tmp: + log.debug("Setting cover to %s", tmp) self.cover.set_from_file(tmp) def update_state(self): @@ -254,6 +279,7 @@ class PlayerWindow(hildon.StackableWindow): if size == 300: playing = self.get_album_id() if playing and albumid and (int(playing) == int(albumid)): + log.debug("Setting cover to %s", cover) self.cover.set_from_file(cover) def play_radio(self, radio_name, radio_id): @@ -297,6 +323,15 @@ class PlayerWindow(hildon.StackableWindow): self.player.stop() def open_playerwindow(): - player = PlayerWindow() - player.show_all() + if PlayerWindow.instance: + player = PlayerWindow.instance + stack = player.get_stack() + sz = stack.size() + windows = stack.pop(sz) + windows.remove(player) + windows.append(player) + stack.push_list(windows) + else: + player = PlayerWindow() + player.show_all() return player