Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Kaufmann <humitos@gmail.com>2013-01-24 19:37:21 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2013-01-25 13:59:27 (GMT)
commitafedc32335628f023aa2f90dc0c3e6c34122b7dc (patch)
tree4a76957138ddc6d0ae3859a5dbe5e147f1192149
parent5ab425e6aa455c65a0566b1f0044d537b8a316b3 (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.py15
-rw-r--r--controls.py33
-rw-r--r--playlist.py2
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,