[gnome-music/wip/feborges/playback-popover: 39/40] 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: 39/40] playbackpopover: Indicate the current playing song
- Date: Tue, 6 Feb 2018 12:12:16 +0000 (UTC)
commit baf71c69b95171faeb4cea486198e5fcc232e8e6
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 f5ddfc6..43580c5 100644
--- a/gnomemusic/widgets/playbackpopover.py
+++ b/gnomemusic/widgets/playbackpopover.py
@@ -50,8 +50,7 @@ class PlaybackEntry(Gtk.ListBoxRow):
def __repr__(self):
return '<PlaybackEntry>'
- @log
- def __init__(self, item, player):
+ def __init__(self, item, popover):
super().__init__()
self.iter = item.iter
@@ -59,6 +58,15 @@ class PlaybackEntry(Gtk.ListBoxRow):
grid = Gtk.Grid(border_width=5, column_spacing=5, row_spacing=2)
self.add(grid)
+ if (self.iter == popover.current_iter):
+ 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()
artist_label = Gtk.Label(label=item.artist, halign=Gtk.Align.START)
artist_label.get_style_context().add_class('dim-label')
@@ -80,6 +88,7 @@ class PlaybackEntry(Gtk.ListBoxRow):
class PlaybackPopover(Gtk.Popover):
"""Popover showing the following tracks in the current playlist"""
+ current_iter = None
__gsignals__ = {
'current-changed': (GObject.SignalFlags.RUN_FIRST, None, (Gtk.TreeIter,)),
@@ -92,13 +101,15 @@ 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)
+ self._previous_track = None
+
@log
def _setup_view(self):
self._ui = Gtk.Builder()
@@ -111,7 +122,7 @@ class PlaybackPopover(Gtk.Popover):
def create_popover_entry(item, user_data):
return PlaybackEntry(item, user_data)
- self._track_list.bind_model(self._model, create_popover_entry, self._player)
+ self._track_list.bind_model(self._model, create_popover_entry, self)
self._track_list.connect('row-activated', self._on_row_activated)
@log
@@ -121,10 +132,18 @@ class PlaybackPopover(Gtk.Popover):
@log
def _update_model(self, player, playlist, current_iter):
self._model.remove_all()
- while current_iter != None:
- item = PlaybackItem(playlist[current_iter], current_iter)
+
+ self.current_iter = current_iter;
+ if (self._previous_track is not None):
+ self._model.insert(0, self._previous_track)
+
+ 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._previous_track = PlaybackItem(playlist[current_iter], current_iter)
@log
def _on_button_toggled(self, button):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]