[gnome-music/wip/jfelder/restore-mpris-3.34: 4/9] mpris: Restore playlists support



commit 2a207ca7a91b8222a2576740fb9e71cab51aa59b
Author: Jean Felder <jfelder src gnome org>
Date:   Thu Sep 19 11:51:36 2019 +0200

    mpris: Restore playlists support
    
    This functionality was disabled during the core rewrite.
    
    The active_playlist property from CoreModel is used to know if a
    playlist is being played.
    
    (cherry picked from commit 6a9d942dba6141846224f66f15a42e15b49f8e65)

 gnomemusic/mpris.py | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
---
diff --git a/gnomemusic/mpris.py b/gnomemusic/mpris.py
index 962465c0..0212883c 100644
--- a/gnomemusic/mpris.py
+++ b/gnomemusic/mpris.py
@@ -289,12 +289,13 @@ class MPRIS(DBusInterface):
         self._player.connect(
             'notify::repeat-mode', self._on_repeat_mode_changed)
         self._player.connect('seek-finished', self._on_seek_finished)
-        self._player.connect(
-            'playlist-changed', self._on_player_playlist_changed)
 
         self._coremodel = app.props.coremodel
         self._player_model = self._coremodel.props.playlist_sort
 
+        self._coremodel.connect(
+            "playlist-loaded", self._on_player_playlist_changed)
+
         self._playlists_model = self._coremodel.props.playlists_sort
         self._playlists_loaded_id = self._coremodel.connect(
             "playlists-loaded", self._on_playlists_loaded)
@@ -496,12 +497,12 @@ class MPRIS(DBusInterface):
         :returns: playlist existence and its structure
         :rtype: tuple
         """
-        if self._player.get_playlist_type() != PlayerPlaylist.Type.PLAYLIST:
+        current_playlist = self._coremodel.props.active_playlist
+        if current_playlist is None:
             return (False, ("/", "", ""))
 
-        playlist_id = self._player.get_playlist_id()
-        playlist = self._playlists.get_playlist_from_id(playlist_id)
-        mpris_playlist = self._get_mpris_playlist_from_playlist(playlist)
+        mpris_playlist = self._get_mpris_playlist_from_playlist(
+            current_playlist)
         return (True, mpris_playlist)
 
     @log
@@ -574,7 +575,7 @@ class MPRIS(DBusInterface):
         self._seeked(int(position_second * 1e6))
 
     @log
-    def _on_player_playlist_changed(self, klass):
+    def _on_player_playlist_changed(self, coremodel):
         self._update_songs_list()
 
         mpris_playlist = self._get_active_playlist()
@@ -591,6 +592,8 @@ class MPRIS(DBusInterface):
         self._coremodel.disconnect(self._playlists_loaded_id)
         for playlist in self._playlists_model:
             playlist.connect("notify::title", self._on_playlist_renamed)
+            playlist.connect(
+                "notify::active", self._on_player_playlist_changed)
 
         self._playlists_model.connect(
             "items-changed", self._on_playlists_count_changed)


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