[gnome-music] player: Sync buttons when playlist is modified
- From: Arnel A. Borja <arnelborja src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] player: Sync buttons when playlist is modified
- Date: Mon, 2 Sep 2013 16:18:14 +0000 (UTC)
commit 25cfb09da2cd69827318410e15ef1f69ef3dba08
Author: Arnel A. Borja <arnelborja src gnome org>
Date: Sun Sep 1 22:53:20 2013 +0800
player: Sync buttons when playlist is modified
Sync prev and next buttons when a track gets added or removed in the
current playlist.
https://bugzilla.gnome.org/show_bug.cgi?id=705855
gnomemusic/player.py | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index fd512ef..4d6db37 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -100,6 +100,9 @@ class Player(GObject.GObject):
self.bus.connect('message::eos', self._on_bus_eos)
self._setup_view()
+ self.playlist_insert_handler = 0
+ self.playlist_delete_handler = 0
+
def discover_item(self, item, callback, data=None):
url = item.get_url()
if not url:
@@ -185,6 +188,9 @@ class Player(GObject.GObject):
self.currentTrack = self.nextTrack
self.play()
+ def _on_playlist_size_changed(self, path, _iter=None, data=None):
+ self._sync_prev_next()
+
def _get_next_track(self):
currentTrack = self.playlist.get_iter(self.currentTrack.get_path())
nextTrack = None
@@ -392,11 +398,20 @@ class Player(GObject.GObject):
def set_playlist(self, type, id, model, iter, field):
self.stop()
+ if self.playlist_insert_handler:
+ self.playlist.disconnect(self.playlist_insert_handler)
+ if self.playlist_delete_handler:
+ self.playlist.disconnect(self.playlist_delete_handler)
+
self.playlist = model
self.playlistType = type
self.playlistId = id
self.currentTrack = Gtk.TreeRowReference.new(model, model.get_path(iter))
self.playlistField = field
+
+ self.playlist_insert_handler = model.connect('row-inserted', self._on_playlist_size_changed)
+ self.playlist_delete_handler = model.connect('row-deleted', self._on_playlist_size_changed)
+
self.emit('current-changed')
def running_playlist(self, type, id):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]