[gnome-music/wip/jfelder/mpris-truly-unique-ids: 10/10] player: Simplify song-changed signal



commit da7fa8df1c84e379f9a79bbec2900185c1e3902e
Author: Jean Felder <jfelder src gnome org>
Date:   Tue May 28 17:07:05 2019 +0200

    player: Simplify song-changed signal
    
    Now that "current_song_index" is exposed as property, it does not need
    to be transmitted when the "song-changed" signal is emitted.

 gnomemusic/mpris.py                      | 2 +-
 gnomemusic/player.py                     | 4 ++--
 gnomemusic/views/playlistview.py         | 6 +++---
 gnomemusic/views/songsview.py            | 6 +++---
 gnomemusic/widgets/albumwidget.py        | 3 +--
 gnomemusic/widgets/artistalbumswidget.py | 3 +--
 gnomemusic/widgets/playertoolbar.py      | 3 +--
 7 files changed, 12 insertions(+), 15 deletions(-)
---
diff --git a/gnomemusic/mpris.py b/gnomemusic/mpris.py
index f3efd50d..76f659a5 100644
--- a/gnomemusic/mpris.py
+++ b/gnomemusic/mpris.py
@@ -449,7 +449,7 @@ class MediaPlayer2Service(Server):
         return (True, (path, playlist_name, ""))
 
     @log
-    def _on_current_song_changed(self, player, position):
+    def _on_current_song_changed(self, player):
         self._update_songs_list()
         if self.player.props.repeat_mode == RepeatMode.SONG:
             self.Seeked(0)
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index aef78604..25ce9b66 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -544,7 +544,7 @@ class Player(GObject.GObject):
     __gsignals__ = {
         'playlist-changed': (GObject.SignalFlags.RUN_FIRST, None, ()),
         'seek-finished': (GObject.SignalFlags.RUN_FIRST, None, (float,)),
-        'song-changed': (GObject.SignalFlags.RUN_FIRST, None, (int,)),
+        'song-changed': (GObject.SignalFlags.RUN_FIRST, None, ()),
         'song-validated': (GObject.SignalFlags.RUN_FIRST, None, (int, int)),
     }
 
@@ -623,7 +623,7 @@ class Player(GObject.GObject):
 
         self._gst_player.props.url = song.get_url()
 
-        self.emit('song-changed', self.props.current_song_index)
+        self.emit('song-changed')
 
     @log
     def _on_eos(self, klass):
diff --git a/gnomemusic/views/playlistview.py b/gnomemusic/views/playlistview.py
index bf1c3b1f..8179e0ed 100644
--- a/gnomemusic/views/playlistview.py
+++ b/gnomemusic/views/playlistview.py
@@ -245,11 +245,10 @@ class PlaylistView(BaseView):
             cell.set_visible(False)
 
     @log
-    def _update_model(self, player, position):
+    def _update_model(self, player):
         """Updates model when the song changes
 
         :param Player player: The main player object
-        :param int position: current song position
         """
         if self._current_playlist is None:
             return
@@ -260,7 +259,8 @@ class PlaylistView(BaseView):
                 PlayerPlaylist.Type.PLAYLIST, self._current_playlist.get_id()):
             return False
 
-        iter_ = self.model.get_iter_from_string(str(position))
+        index = self.player.props.current_song_index
+        iter_ = self.model.get_iter_from_string(str(index))
         self.model[iter_][10] = True
         path = self.model.get_path(iter_)
         self._view.scroll_to_cell(path, None, False, 0., 0.)
diff --git a/gnomemusic/views/songsview.py b/gnomemusic/views/songsview.py
index 32a8f46d..73c5574e 100644
--- a/gnomemusic/views/songsview.py
+++ b/gnomemusic/views/songsview.py
@@ -229,18 +229,18 @@ class SongsView(BaseView):
             self.props.selected_items_count = len(self.get_selected_songs())
 
     @log
-    def _update_model(self, player, position):
+    def _update_model(self, player):
         """Updates model when the song changes
 
         :param Player player: The main player object
-        :param int position: current song position
         """
         if self._iter_to_clean:
             self.model[self._iter_to_clean][10] = False
         if not player.playing_playlist(PlayerPlaylist.Type.SONGS, None):
             return False
 
-        iter_ = self.model.get_iter_from_string(str(position))
+        index = self.player.props.current_song_index
+        iter_ = self.model.get_iter_from_string(str(index))
         self.model[iter_][10] = True
         path = self.model.get_path(iter_)
         self._view.scroll_to_cell(path, None, False, 0., 0.)
diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py
index f0abbefc..1eea57f0 100644
--- a/gnomemusic/widgets/albumwidget.py
+++ b/gnomemusic/widgets/albumwidget.py
@@ -226,11 +226,10 @@ class AlbumWidget(Gtk.EventBox):
             self._update_model(self._player)
 
     @log
-    def _update_model(self, player, position=None):
+    def _update_model(self, player):
         """Updates model when the song changes
 
         :param Player player: The main player object
-        :param int position: current song position
         """
         if not player.playing_playlist(
                 PlayerPlaylist.Type.ALBUM, self._album_name):
diff --git a/gnomemusic/widgets/artistalbumswidget.py b/gnomemusic/widgets/artistalbumswidget.py
index b9150d71..aa132db7 100644
--- a/gnomemusic/widgets/artistalbumswidget.py
+++ b/gnomemusic/widgets/artistalbumswidget.py
@@ -137,11 +137,10 @@ class ArtistAlbumsWidget(Gtk.Box):
         widget.connect('songs-loaded', self._on_album_displayed)
 
     @log
-    def _update_model(self, player, position):
+    def _update_model(self, player):
         """Updates model when the song changes
 
         :param Player player: The main player object
-        :param int position: current song position
         """
         if not player.playing_playlist(
                 PlayerPlaylist.Type.ARTIST, self._artist):
diff --git a/gnomemusic/widgets/playertoolbar.py b/gnomemusic/widgets/playertoolbar.py
index 2f779804..311f74b4 100644
--- a/gnomemusic/widgets/playertoolbar.py
+++ b/gnomemusic/widgets/playertoolbar.py
@@ -172,11 +172,10 @@ class PlayerToolbar(Gtk.ActionBar):
         self._prev_button.props.sensitive = self._player.props.has_previous
 
     @log
-    def _update_view(self, player, position):
+    def _update_view(self, player):
         """Updates model when the song changes
 
         :param Player player: The main player object
-        :param int position: current song position
         """
         current_song = player.props.current_song
         self._duration_label.set_label(


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]