[gnome-music/wip/mschraal/core: 172/177] application: Make CoreModel and CoreSelection properties



commit 9f7f24e004d17094643b64a3b735d7a3de41b788
Author: Marinus Schraal <mschraal gnome org>
Date:   Tue Jul 2 16:19:29 2019 +0200

    application: Make CoreModel and CoreSelection properties

 gnomemusic/application.py                | 20 ++++++++++++++++++++
 gnomemusic/player.py                     |  2 +-
 gnomemusic/views/albumsview.py           |  4 ++--
 gnomemusic/views/artistsview.py          |  2 +-
 gnomemusic/views/searchview.py           |  2 +-
 gnomemusic/views/songsview.py            |  2 +-
 gnomemusic/widgets/albumwidget.py        |  8 ++++----
 gnomemusic/widgets/artistalbumswidget.py |  9 +++++----
 8 files changed, 35 insertions(+), 14 deletions(-)
---
diff --git a/gnomemusic/application.py b/gnomemusic/application.py
index 1a20935b..73ded2d6 100644
--- a/gnomemusic/application.py
+++ b/gnomemusic/application.py
@@ -101,6 +101,26 @@ class Application(Gtk.Application):
         """
         return self._settings
 
+    @GObject.Property(
+        type=CoreModel, flags=GObject.ParamFlags.READABLE)
+    def coremodel(self):
+        """Get class providing all listmodels.
+
+        :returns: List model provider class
+        :rtype: CoreModel
+        """
+        return self._coremodel
+
+    @GObject.Property(
+        type=CoreSelection, flags=GObject.ParamFlags.READABLE)
+    def coreselection(self):
+        """Get selection object.
+
+        :returns: Object containing all selection info
+        :rtype: CoreSelection
+        """
+        return self._coreselection
+
     @log
     def _build_app_menu(self):
         action_entries = [
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index f155b1bd..ada32493 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -115,7 +115,7 @@ class PlayerPlaylist(GObject.GObject):
         # self._discoverer.connect('discovered', self._on_discovered)
         # self._discoverer.start()
 
-        self._model = self._app._coremodel.props.playlist_sort
+        self._model = self._app.props.coremodel.props.playlist_sort
 
         self.connect("notify::repeat-mode", self._on_repeat_mode_changed)
 
diff --git a/gnomemusic/views/albumsview.py b/gnomemusic/views/albumsview.py
index 72dae4db..3ffc707c 100644
--- a/gnomemusic/views/albumsview.py
+++ b/gnomemusic/views/albumsview.py
@@ -92,7 +92,7 @@ class AlbumsView(BaseView):
 
         self._box.add(scrolledwin)
 
-        self._model = self._window._app._coremodel.props.albums_sort
+        self._model = self._window._app.props.coremodel.props.albums_sort
         self._view.bind_model(self._model, self._create_widget)
 
         self._view.show()
@@ -150,7 +150,7 @@ class AlbumsView(BaseView):
         Selects or unselects all items without sending the notify::active
         signal for performance purposes.
         """
-        with self._window._app._coreselection.freeze_notify():
+        with self._window._app.props.coreselection.freeze_notify():
             for child in self._view.get_children():
                 child.props.selected = selected
                 child.props.corealbum.props.selected = selected
diff --git a/gnomemusic/views/artistsview.py b/gnomemusic/views/artistsview.py
index f9e7e255..92b8e65a 100644
--- a/gnomemusic/views/artistsview.py
+++ b/gnomemusic/views/artistsview.py
@@ -62,7 +62,7 @@ class ArtistsView(BaseView):
         self._artists = {}
 
         self._window = window
-        self._model = window._app._coremodel.props.artists_sort
+        self._model = window._app.props.coremodel.props.artists_sort
         self._sidebar.bind_model(self._model, self._create_widget)
 
         sidebar_container.props.width_request = 220
diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py
index a8108f64..e4e95e97 100644
--- a/gnomemusic/views/searchview.py
+++ b/gnomemusic/views/searchview.py
@@ -45,7 +45,7 @@ class SearchView(BaseView):
 
     @log
     def __init__(self, window, player):
-        self._coremodel = window._app._coremodel
+        self._coremodel = window._app.props.coremodel
         self._model = self._coremodel.props.songs_search
         self._album_model = self._coremodel.props.albums_search
         self._artist_model = self._coremodel.props.artists_search
diff --git a/gnomemusic/views/songsview.py b/gnomemusic/views/songsview.py
index bb7594d5..703fbb0b 100644
--- a/gnomemusic/views/songsview.py
+++ b/gnomemusic/views/songsview.py
@@ -53,7 +53,7 @@ class SongsView(BaseView):
         :param player: The main player object
         """
         self._window = window
-        self._coremodel = self._window._app._coremodel
+        self._coremodel = self._window._app.props.coremodel
         super().__init__('songs', _("Songs"), window)
 
         self._offset = 0
diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py
index 8c213b31..24305671 100644
--- a/gnomemusic/widgets/albumwidget.py
+++ b/gnomemusic/widgets/albumwidget.py
@@ -154,14 +154,14 @@ class AlbumWidget(Gtk.EventBox):
             return
 
         signal_id = None
+        coremodel = self._parent_view._window._app.props.coremodel
 
         def _on_playlist_loaded(klass):
             self._player.play(None, None, song_widget._media)
-            self._parent_view._window._app._coremodel.disconnect(signal_id)
+            coremodel.disconnect(signal_id)
 
-        signal_id = self._parent_view._window._app._coremodel.connect(
-            "playlist-loaded", _on_playlist_loaded)
-        self._parent_view._window._app._coremodel.set_playlist_model(
+        signal_id = coremodel.connect("playlist-loaded", _on_playlist_loaded)
+        coremodel.set_playlist_model(
             PlayerPlaylist.Type.ALBUM, song_widget._media, self._album_model)
 
         return True
diff --git a/gnomemusic/widgets/artistalbumswidget.py b/gnomemusic/widgets/artistalbumswidget.py
index 5829bd0a..23d37a03 100644
--- a/gnomemusic/widgets/artistalbumswidget.py
+++ b/gnomemusic/widgets/artistalbumswidget.py
@@ -104,13 +104,14 @@ class ArtistAlbumsWidget(Gtk.Box):
         if self.props.selection_mode:
             return
 
+        coremodel = self._player._app.props.coremodel
+
         def _on_playlist_loaded(klass):
             self._player.play(None, None, song_widget._media)
-            self._player._app._coremodel.disconnect(signal_id)
+            coremodel.disconnect(signal_id)
 
-        signal_id = self._player._app._coremodel.connect(
-            "playlist-loaded", _on_playlist_loaded)
-        self._player._app._coremodel.set_playlist_model(
+        signal_id = coremodel.connect("playlist-loaded", _on_playlist_loaded)
+        coremodel.set_playlist_model(
             PlayerPlaylist.Type.ARTIST, song_widget._media, self._model)
 
     def _add_album(self, corealbum):


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