[gnome-music/wip/mschraal/core] artistsview: Select first artist on start



commit e5727be622b7f2a40f06983d766108e4c9b50ec4
Author: Jean Felder <jfelder src gnome org>
Date:   Tue Jul 9 16:55:49 2019 +0200

    artistsview: Select first artist on start

 gnomemusic/coremodel.py                      |  1 +
 gnomemusic/grilowrappers/grltrackersource.py |  1 +
 gnomemusic/views/artistsview.py              | 11 ++++++++++-
 3 files changed, 12 insertions(+), 1 deletion(-)
---
diff --git a/gnomemusic/coremodel.py b/gnomemusic/coremodel.py
index 22b0afa6..077176df 100644
--- a/gnomemusic/coremodel.py
+++ b/gnomemusic/coremodel.py
@@ -32,6 +32,7 @@ from gnomemusic.widgets.songwidget import SongWidget
 class CoreModel(GObject.GObject):
 
     __gsignals__ = {
+        "artists-loaded": (GObject.SignalFlags.RUN_FIRST, None, ()),
         "playlist-loaded": (GObject.SignalFlags.RUN_FIRST, None, ()),
         "playlists-loaded": (GObject.SignalFlags.RUN_FIRST, None, ()),
     }
diff --git a/gnomemusic/grilowrappers/grltrackersource.py b/gnomemusic/grilowrappers/grltrackersource.py
index 8396f6ca..42064ebf 100644
--- a/gnomemusic/grilowrappers/grltrackersource.py
+++ b/gnomemusic/grilowrappers/grltrackersource.py
@@ -336,6 +336,7 @@ class GrlTrackerSource(GObject.GObject):
 
         if not media:
             print("NO MEDIA", source, op_id, media, error)
+            self._coremodel.emit("artists-loaded")
             return
 
         artist = CoreArtist(media, self._coremodel)
diff --git a/gnomemusic/views/artistsview.py b/gnomemusic/views/artistsview.py
index 2d969f38..aa20f8d6 100644
--- a/gnomemusic/views/artistsview.py
+++ b/gnomemusic/views/artistsview.py
@@ -61,8 +61,11 @@ class ArtistsView(BaseView):
         self._artists = {}
 
         self._window = window
-        self._model = window._app.props.coremodel.props.artists_sort
+        self._coremodel = window._app.props.coremodel
+        self._model = self._coremodel.props.artists_sort
         self._sidebar.bind_model(self._model, self._create_widget)
+        self._loaded_id = self._coremodel.connect(
+            "artists-loaded", self._on_artists_loaded)
 
         sidebar_container.props.width_request = 220
         sidebar_container.get_style_context().add_class('sidebar')
@@ -84,6 +87,12 @@ class ArtistsView(BaseView):
 
         return row
 
+    def _on_artists_loaded(self, klass):
+        self._coremodel.disconnect(self._loaded_id)
+        first_row = self._sidebar.get_row_at_index(0)
+        self._sidebar.select_row(first_row)
+        first_row.emit("activate")
+
     @log
     def _setup_view(self):
         view_container = Gtk.ScrolledWindow(hexpand=True, vexpand=True)


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