X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fedit_panel.py;h=9e0bdf7af334da234647e71be4683007f44c5bb2;hb=b28220e2eec4086bb85a114d454e88f9de5ae413;hp=a997e1e848951f81cb4c2823968519775af88de4;hpb=36d2da9282b87eed91b5d53bf227f6a6e02e508a;p=mussorgsky diff --git a/src/edit_panel.py b/src/edit_panel.py index a997e1e..9e0bdf7 100755 --- a/src/edit_panel.py +++ b/src/edit_panel.py @@ -18,11 +18,11 @@ class MussorgskyEditPanel (hildon.StackableWindow): def __init__ (self, songs_list=None, albums_list=None, artists_list=None): hildon.StackableWindow.__init__ (self) - self.set_title ("Edit") self.set_border_width (12) self.song_counter = 0 self.album_callback_id = -1 self.album_change_handler = -1 + self.artist_change_handler = -1 self.writer = MutagenBackend () self.player = MediaPlayer () self.album_art_retriever = MussorgskyAlbumArt () @@ -31,8 +31,12 @@ class MussorgskyEditPanel (hildon.StackableWindow): self.add (self.__create_view ()) if (songs_list): self.set_songs_list (songs_list) + self.update_title () self.banner = None + def update_title (self): + self.set_title ("Edit (%d/%d)" % (self.song_counter+1, len (self.songs_list))) + def set_songs_list (self, songs_list): if (songs_list and len (songs_list) > 0): @@ -58,6 +62,9 @@ class MussorgskyEditPanel (hildon.StackableWindow): if (self.song_counter > 0): self.song_counter -= 1 self.set_data_in_view (self.songs_list [self.song_counter]) + self.update_title () + else: + self.destroy () def press_next_cb (self, widget): if (self.player.is_playing ()): @@ -77,6 +84,7 @@ class MussorgskyEditPanel (hildon.StackableWindow): if (self.song_counter < len (self.songs_list) -1): self.song_counter += 1 self.set_data_in_view (self.songs_list [self.song_counter]) + self.update_title () else: self.destroy () @@ -153,7 +161,7 @@ class MussorgskyEditPanel (hildon.StackableWindow): table.attach (self.title_entry, 1, 2, 0, 1) # Artist row - artist_selector = hildon.hildon_touch_selector_entry_new_text () + artist_selector = hildon.hildon_touch_selector_new_text () for a in self.artists_list: artist_selector.append_text (a) self.artist_button = hildon.PickerButton (hildon.BUTTON_STYLE_NORMAL, @@ -164,7 +172,7 @@ class MussorgskyEditPanel (hildon.StackableWindow): # Album row - album_selector = hildon.hildon_touch_selector_entry_new_text () + album_selector = hildon.hildon_touch_selector_new_text () for a in self.albums_list: album_selector.append_text (a) self.album_button = hildon.PickerButton (hildon.BUTTON_STYLE_NORMAL, @@ -213,25 +221,34 @@ class MussorgskyEditPanel (hildon.StackableWindow): self.filename_data.set_text (song[FILE_URI]) self.title_entry.set_text (song[TITLE_KEY]) + + # Disconnect the value-change signal to avoid extra album art retrievals + if (self.album_button.handler_is_connected (self.album_change_handler)): + self.album_button.disconnect (self.album_change_handler) + + if (self.artist_button.handler_is_connected (self.artist_change_handler)): + self.artist_button.disconnect (self.artist_change_handler) + + # Set values in the picker buttons try: self.artist_button.set_active (self.artists_list.index(song[ARTIST_KEY])) except ValueError: print "'%s' not in artist list!?" % (song[ARTIST_KEY]) - - # Disconnect the value-change signal to avoid extra album art retrievals - if (self.album_change_handler != -1): - self.album_button.disconnect (self.album_change_handler) - self.album_change_handle = -1 + self.artist_button.set_value ("") try: self.album_button.set_active (self.albums_list.index (song[ALBUM_KEY])) except ValueError: print "'%s' is not in the album list!?" % (song[ALBUM_KEY]) + self.album_button.set_value ("") - # Reconnect the signal! + # Reconnect the signals! self.album_change_handler = self.album_button.connect ("value-changed", self.album_selection_cb) + self.artist_change_handler = self.artist_button.connect ("value-changed", + self.artist_selection_cb) + # Set the album art given the current data has_album = False if (song[ALBUM_KEY]): @@ -274,19 +291,38 @@ class MussorgskyEditPanel (hildon.StackableWindow): print "implement me, please" def album_selection_cb (self, widget): + """ + On album change, add the album the local list of albums and the selector + if it doesn't exist already. So we show the new entry in the selector next time. + """ song = self.songs_list [self.song_counter] + if (not widget.get_value () in self.albums_list): + print "Inserting ", widget.get_value () + widget.get_selector ().prepend_text (widget.get_value ()) + self.albums_list.insert (0, widget.get_value ()) self.retrieve_album_art (song[ARTIST_KEY], widget.get_value ()) + + def artist_selection_cb (self, widget): + """ + On artist change, add the artist the local list of artists and the selector + if it doesn't exist already. So we show the new entry in the selector next time + """ + song = self.songs_list [self.song_counter] + if (not widget.get_value () in self.artists_list): + print "Inserting artist", widget.get_value () + widget.get_selector ().prepend_text (widget.get_value ()) + self.artists_list.insert (0, widget.get_value ()) # Testing porpuses if __name__ == "__main__": - TEST_DATA = [("/a/b/c/d.mp3", "Music", "", "title", "Album 9", "audio/mpeg"), + TEST_DATA = [("/home/user/Music/dylan.mp3", "Music", "Bob Dylan", "Subterranean homesick blues", "Bring it all back home", "audio/mpeg"), ("/home/user/mufix/a.mp3", "Music", "", "title", "Album 2", "a/b"), ("/media/mmc1/Attachments/b.m4a", "Music", "", "b", "Album 9", "audio/mpeg"), ("/home/user/mufix/3.mp2", "Music", "", "titlex", "Album 3", "audio/mpeg")] #TEST_DATA = [] - ALBUMS = [["Album %d" % i] for i in range (0, 10)] - ARTISTS = [["Artist %d" % i] for i in range (0, 10)] + ALBUMS = [["Album %d" % i] for i in range (0, 10)] + [["Bring it all back home"]] + ARTISTS = [["Artist %d" % i] for i in range (0, 10)] + [["Bob Dylan"]] window = MussorgskyEditPanel (TEST_DATA, ALBUMS, ARTISTS) window.connect ("destroy", gtk.main_quit) window.show_all ()