[gnome-music/wip/feborges/playback-popover] playbackpopover: Indicate the current playing song
- From: Felipe Borges <felipeborges src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/feborges/playback-popover] playbackpopover: Indicate the current playing song
- Date: Thu, 1 Feb 2018 12:17:10 +0000 (UTC)
commit 6cb928ecd40c7d80467f8ba1015a4ce344bd22b0
Author: Felipe Borges <felipeborges gnome org>
Date: Thu Feb 1 12:54:56 2018 +0100
playbackpopover: Indicate the current playing song
Also keeps track of the previous one (prepended to the list)
gnomemusic/widgets/playbackpopover.py | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/gnomemusic/widgets/playbackpopover.py b/gnomemusic/widgets/playbackpopover.py
index a144ee8..40ec43d 100644
--- a/gnomemusic/widgets/playbackpopover.py
+++ b/gnomemusic/widgets/playbackpopover.py
@@ -38,7 +38,7 @@ class PlaybackItem(GObject.Object):
class PlaybackEntry(Gtk.ListBoxRow):
- def __init__(self, item, player):
+ def __init__(self, item, popover):
super().__init__()
self.iter = item.iter
@@ -46,6 +46,15 @@ class PlaybackEntry(Gtk.ListBoxRow):
grid = Gtk.Grid(border_width=5, column_spacing=5, row_spacing=2)
self.add(grid)
+ if (self.iter == popover.currentIter):
+ indicator = Gtk.Image.new_from_icon_name('media-playback-start-symbolic', Gtk.IconSize.BUTTON)
+ indicator.valign = Gtk.Align.CENTER
+ else:
+ indicator = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL)
+ indicator.set_size_request(16, 16)
+
+ grid.attach(indicator, 0, 0, 1, 2)
+
self.cover = Gtk.Image()
artistLabel = Gtk.Label(label=item.artist, halign=Gtk.Align.START)
artistLabel.get_style_context().add_class('dim-label')
@@ -54,7 +63,7 @@ class PlaybackEntry(Gtk.ListBoxRow):
grid.attach(Gtk.Label(label=item.title, halign=Gtk.Align.START), 2, 0, 1, 1)
grid.attach(artistLabel, 2, 1, 1, 1)
- player.cache.lookup(item.media, ArtSize.SMALL, self._on_cache_lookup, None)
+ popover.player.cache.lookup(item.media, ArtSize.SMALL, self._on_cache_lookup, None)
self.show_all()
@@ -62,6 +71,8 @@ class PlaybackEntry(Gtk.ListBoxRow):
self.cover.set_from_surface(surface)
class PlaybackPopover(Gtk.Popover):
+ previousTrack = None
+ currentIter = None
__gsignals__ = {
'current-changed': (GObject.SignalFlags.RUN_FIRST, None, (Gtk.TreeIter,)),
@@ -73,11 +84,11 @@ class PlaybackPopover(Gtk.Popover):
def __init__(self, button, player):
super().__init__(relative_to = button)
- self._player = player
+ self.player = player
self._setup_view ()
- self._player.connect('playlist-item-changed', self._update_model)
+ self.player.connect('playlist-item-changed', self._update_model)
button.connect('toggled', self._on_button_toggled)
def _setup_view(self):
@@ -89,7 +100,7 @@ class PlaybackPopover(Gtk.Popover):
self._model = Gio.ListStore()
def create_popover_entry(item, user_data):
return PlaybackEntry(item, user_data)
- self._trackList.bind_model(self._model, create_popover_entry, self._player)
+ self._trackList.bind_model(self._model, create_popover_entry, self)
self._trackList.connect('row-activated', self._on_row_activated)
def _on_row_activated(self, box, row):
@@ -97,10 +108,18 @@ class PlaybackPopover(Gtk.Popover):
def _update_model(self, player, playlist, current_iter):
self._model.remove_all()
- while current_iter != None:
- item = PlaybackItem(playlist[current_iter], current_iter)
+
+ self.currentIter = current_iter
+ if (self.previousTrack is not None):
+ self._model.insert(0, self.previousTrack)
+
+ iter = current_iter
+ while iter != None:
+ item = PlaybackItem(playlist[iter], iter)
self._model.append(item)
- current_iter = playlist.iter_next(current_iter)
+ iter = playlist.iter_next(iter)
+
+ self.previousTrack = PlaybackItem(playlist[current_iter], current_iter)
def _on_button_toggled(self, button):
self.popup()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]