diff options
author | Manuel Kaufmann <humitos@gmail.com> | 2013-01-24 19:37:21 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2013-01-25 13:59:27 (GMT) |
commit | afedc32335628f023aa2f90dc0c3e6c34122b7dc (patch) | |
tree | 4a76957138ddc6d0ae3859a5dbe5e147f1192149 | |
parent | 5ab425e6aa455c65a0566b1f0044d537b8a316b3 (diff) |
Proper sensitive on control buttons
When there is no streams in the playlist we set the sensitive to False
for all the control buttons on the toolbar.
If one stream is added Play button is enabled and will play the first
stream of the playlist.
Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
-rw-r--r-- | activity.py | 15 | ||||
-rw-r--r-- | controls.py | 33 | ||||
-rw-r--r-- | playlist.py | 2 |
3 files changed, 38 insertions, 12 deletions
diff --git a/activity.py b/activity.py index 8f080e3..9b41feb 100644 --- a/activity.py +++ b/activity.py @@ -55,7 +55,7 @@ PLAYLIST_WIDTH_PROP = 1.0 / 3 class JukeboxActivity(activity.Activity): __gsignals__ = { - 'no-stream': (GObject.SignalFlags.RUN_FIRST, None, []), + 'playlist-finished': (GObject.SignalFlags.RUN_FIRST, None, []), } def __init__(self, handle): @@ -91,7 +91,7 @@ class JukeboxActivity(activity.Activity): toolbar_box.show_all() self.connect('key_press_event', self.__key_press_event_cb) - self.connect('no-stream', self.__no_stream_cb) + self.connect('playlist-finished', self.__playlist_finished_cb) # We want to be notified when the activity gets the focus or # loses it. When it is not active, we don't need to keep @@ -139,6 +139,8 @@ class JukeboxActivity(activity.Activity): _('No media'), _('Choose media files'), self.control.show_picker_cb) + self.control.check_if_next_prev() + def __notify_active_cb(self, widget, event): """Sugar notify us that the activity is becoming active or inactive. When we are inactive, we stop the player if it is reproducing @@ -189,11 +191,16 @@ class JukeboxActivity(activity.Activity): self.control._button_clicked_cb(None) return True - def __no_stream_cb(self, widget): + def __playlist_finished_cb(self, widget): self._switch_canvas(show_video=False) self._view_toolbar._show_playlist.set_active(True) self.unfullscreen() + # Select the first stream to be played when Play button will + # be pressed + self.playlist_widget._current_playing = 0 + self.control.check_if_next_prev() + def songchange(self, direction): current_playing = self.playlist_widget._current_playing if direction == 'prev' and current_playing > 0: @@ -203,7 +210,7 @@ class JukeboxActivity(activity.Activity): self.play_index(current_playing + 1) else: - self.emit('no-stream') + self.emit('playlist-finished') def play_index(self, index): # README: this line is no more necessary because of the diff --git a/controls.py b/controls.py index 775e30a..0ad105d 100644 --- a/controls.py +++ b/controls.py @@ -117,7 +117,7 @@ class Controls(GObject.GObject): total_time.show() self.toolbar.insert(total_time, -1) - self.activity.connect('no-stream', self.__no_stream_cb) + self.activity.connect('playlist-finished', self.__playlist_finished_cb) self.activity.player.connect('play', self.__player_play) def __player_play(self, widget): @@ -132,6 +132,7 @@ class Controls(GObject.GObject): def __erase_playlist_entry_clicked_cb(self, widget): self.activity.playlist_widget.delete_selected_items() + self.check_if_next_prev() def show_picker_cb(self, button=None): jobject = None @@ -163,14 +164,25 @@ class Controls(GObject.GObject): def check_if_next_prev(self): current_playing = self.activity.playlist_widget._current_playing - if current_playing == 0: + if len(self.activity.playlist_widget._items) == 0: + # There is no media in the playlist self.prev_button.set_sensitive(False) - else: - self.prev_button.set_sensitive(True) - if current_playing == len(self.activity.playlist_widget._items) - 1: + self.button.set_sensitive(False) self.next_button.set_sensitive(False) else: - self.next_button.set_sensitive(True) + self.button.set_sensitive(True) + + current_playing = self.activity.playlist_widget._current_playing + if current_playing == 0: + self.prev_button.set_sensitive(False) + else: + self.prev_button.set_sensitive(True) + + items = len(self.activity.playlist_widget._items) + if current_playing == items - 1: + self.next_button.set_sensitive(False) + else: + self.next_button.set_sensitive(True) def _button_clicked_cb(self, widget): self.set_enabled() @@ -183,6 +195,13 @@ class Controls(GObject.GObject): if self.activity.player.error: self.set_disabled() else: + if self.activity.player.player.props.current_uri is None: + # There is no stream selected to be played + # yet. Select the first one + path = self.activity.playlist_widget._items[0]['path'] + self.activity.playlist_widget._current_playing = 0 + self.activity.player.set_uri(path) + self.activity.player.play() self.activity._switch_canvas(True) self._scale_update_id = GObject.timeout_add( @@ -272,7 +291,7 @@ class Controls(GObject.GObject): return True - def __no_stream_cb(self, widget): + def __playlist_finished_cb(self, widget): self.activity.player.stop() self.set_button_play() self.check_if_next_prev() diff --git a/playlist.py b/playlist.py index 653cdbc..fab0ea9 100644 --- a/playlist.py +++ b/playlist.py @@ -40,7 +40,7 @@ class PlayList(Gtk.ScrolledWindow): def __init__(self): self._not_found_files = 0 - self._current_playing = None + self._current_playing = 0 self._items = [] GObject.GObject.__init__(self, hadjustment=None, |