[gnome-music/wip/mschraal/restore-loading-notifications-3-34: 2/2] grltrackerwrapper: Bring back loading notifications



commit d1e1d87b6793b295b649efeee6922845f218d4d2
Author: Marinus Schraal <mschraal gnome org>
Date:   Wed Sep 25 10:34:12 2019 +0200

    grltrackerwrapper: Bring back loading notifications
    
    Loading notifications got disabled during the core rewrite.
    
    Fix this regression by re-introducing loading notifications for most
    Grilo+Tracker queries.

 gnomemusic/grilowrappers/grltrackerplaylists.py | 20 ++++++++++++++++++++
 gnomemusic/grilowrappers/grltrackerwrapper.py   | 25 +++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
---
diff --git a/gnomemusic/grilowrappers/grltrackerplaylists.py b/gnomemusic/grilowrappers/grltrackerplaylists.py
index fe96ef26..acd626a9 100644
--- a/gnomemusic/grilowrappers/grltrackerplaylists.py
+++ b/gnomemusic/grilowrappers/grltrackerplaylists.py
@@ -82,6 +82,7 @@ class GrlTrackerPlaylists(GObject.GObject):
         self._user_model_filter = self._coremodel.props.user_playlists_filter
         self._pls_todelete = []
         self._tracker = tracker_wrapper.props.tracker
+        self._window = application.props.window
 
         self._user_model_filter.set_filter_func(self._user_playlists_filter)
 
@@ -110,6 +111,7 @@ class GrlTrackerPlaylists(GObject.GObject):
         for playlist in smart_playlists.values():
             self._model.append(playlist)
 
+        self._window.notifications_popup.push_loading()
         query = """
         SELECT DISTINCT
             rdf:type(?playlist)
@@ -140,9 +142,11 @@ class GrlTrackerPlaylists(GObject.GObject):
             self, source, op_id, media, remaining, data=None, error=None):
         if error:
             print("ERROR", error)
+            self._window.notifications_popup.pop_loading()
             return
         if not media:
             self._coremodel.emit("playlists-loaded")
+            self._window.notifications_popup.pop_loading()
             return
 
         playlist = Playlist(
@@ -192,7 +196,9 @@ class GrlTrackerPlaylists(GObject.GObject):
                     break
 
             self._model_filter.set_filter_func(self._playlists_filter)
+            self._window.notifications_popup.pop_loading()
 
+        self._window.notifications_popup.push_loading()
         query = """
         DELETE {
             ?playlist a rdfs:Resource .
@@ -243,6 +249,7 @@ class GrlTrackerPlaylists(GObject.GObject):
                 query, self.METADATA_KEYS, options, self._add_user_playlist,
                 callback)
 
+        self._window.notifications_popup.push_loading()
         query = """
             INSERT {
                 _:playlist a nmm:Playlist ;
@@ -321,6 +328,7 @@ class Playlist(GObject.GObject):
         self._coreselection = application.props.coreselection
         self._grilo = grilo
         self._tracker = tracker
+        self._window = application.props.window
 
         self._fast_options = Grl.OperationOptions()
         self._fast_options.set_resolution_flags(
@@ -342,6 +350,8 @@ class Playlist(GObject.GObject):
         self._model = value
 
     def _populate_model(self):
+        self._window.notifications_popup.push_loading()
+
         query = """
         SELECT
             rdf:type(?song)
@@ -386,6 +396,7 @@ class Playlist(GObject.GObject):
             if not media:
                 self.props.count = self._model.get_n_items()
                 self.emit("playlist-loaded")
+                self._window.notifications_popup.pop_loading()
                 return
 
             coresong = CoreSong(media, self._coreselection, self._grilo)
@@ -404,11 +415,14 @@ class Playlist(GObject.GObject):
 
         :param str new_name: new playlist name
         """
+        self._window.notifications_popup.push_loading()
+
         def update_cb(conn, res, data):
             # FIXME: Check for failure.
             conn.update_finish(res)
             # FIXME: Requery instead?
             self.props.title = new_name
+            self._window.notifications_popup.pop_loading()
 
         query = """
         INSERT OR REPLACE {
@@ -461,7 +475,9 @@ class Playlist(GObject.GObject):
         def update_cb(conn, res, data):
             # FIXME: Check for failure.
             conn.update_finish(res)
+            self._window.notifications_popup.pop_loading()
 
+        self._window.notifications_popup.push_loading()
         query = """
         INSERT OR REPLACE {
             ?entry nfo:listPosition ?position .
@@ -676,13 +692,17 @@ class SmartPlaylist(Playlist):
         if self._model is None:
             self._model = Gio.ListStore.new(CoreSong)
 
+            self._window.notifications_popup.push_loading()
+
             def _add_to_model(source, op_id, media, remaining, error):
                 if error:
                     print("ERROR", error)
+                    self._window.notifications_popup.pop_loading()
                     return
 
                 if not media:
                     self.props.count = self._model.get_n_items()
+                    self._window.notifications_popup.pop_loading()
                     return
 
                 coresong = CoreSong(media, self._coreselection, self._grilo)
diff --git a/gnomemusic/grilowrappers/grltrackerwrapper.py b/gnomemusic/grilowrappers/grltrackerwrapper.py
index f5a275dd..fe5d5e63 100644
--- a/gnomemusic/grilowrappers/grltrackerwrapper.py
+++ b/gnomemusic/grilowrappers/grltrackerwrapper.py
@@ -91,6 +91,7 @@ class GrlTrackerWrapper(GObject.GObject):
         self._artist_search_model = self._coremodel.props.artists_search
         self._batch_changed_media_ids = {}
         self._content_changed_timeout = None
+        self._window = application.props.window
 
         self._song_search_tracker = Gfm.FilterListModel.new(self._model)
         self._song_search_tracker.set_filter_func(lambda a: False)
@@ -331,13 +332,16 @@ class GrlTrackerWrapper(GObject.GObject):
             options, _update_changed_media)
 
     def _initial_songs_fill(self, source):
+        self._window.notifications_popup.push_loading()
 
         def _add_to_model(source, op_id, media, user_data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
+                self._window.notifications_popup.pop_loading()
                 return
 
             song = CoreSong(media, self._coreselection, self._grilo)
@@ -377,13 +381,16 @@ class GrlTrackerWrapper(GObject.GObject):
         self._source.query(query, self.METADATA_KEYS, options, _add_to_model)
 
     def _initial_albums_fill(self, source):
+        self._window.notifications_popup.push_loading()
 
         def _add_to_albums_model(source, op_id, media, user_data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
+                self._window.notifications_popup.pop_loading()
                 return
 
             album = CoreAlbum(media, self._coremodel)
@@ -421,14 +428,17 @@ class GrlTrackerWrapper(GObject.GObject):
         source.query(query, self.METADATA_KEYS, options, _add_to_albums_model)
 
     def _initial_artists_fill(self, source):
+        self._window.notifications_popup.push_loading()
 
         def _add_to_artists_model(source, op_id, media, user_data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
                 self._coremodel.emit("artists-loaded")
+                self._window.notifications_popup.pop_loading()
                 return
 
             artist = CoreArtist(media, self._coremodel)
@@ -464,6 +474,7 @@ class GrlTrackerWrapper(GObject.GObject):
         :param Grl.Media media: The media with the artist id
         :param Gfm.FilterListModel model: The model to fill
         """
+        self._window.notifications_popup.push_loading()
         artist_id = media.get_id()
 
         query = """
@@ -494,10 +505,12 @@ class GrlTrackerWrapper(GObject.GObject):
         def query_cb(source, op_id, media, user_data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
                 model.set_filter_func(albums_filter, albums)
+                self._window.notifications_popup.pop_loading()
                 return
 
             albums.append(media)
@@ -519,6 +532,7 @@ class GrlTrackerWrapper(GObject.GObject):
         :param Grl.Media media: The media with the album id
         :param Gfm.SortListModel disc_model: The model to fill
         """
+        self._window.notifications_popup.push_loading()
         album_id = media.get_id()
 
         query = """
@@ -541,9 +555,11 @@ class GrlTrackerWrapper(GObject.GObject):
         def _disc_nr_cb(source, op_id, media, user_data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
+                self._window.notifications_popup.pop_loading()
                 return
 
             disc_nr = media.get_album_disc_number()
@@ -611,6 +627,7 @@ class GrlTrackerWrapper(GObject.GObject):
                 GLib.utf8_casefold(text, -1), -1, GLib.NormalizeMode.NFKD))
 
         # Artist search
+        self._window.notifications_popup.push_loading()
 
         query = """
         SELECT DISTINCT
@@ -652,10 +669,12 @@ class GrlTrackerWrapper(GObject.GObject):
         def artist_search_cb(source, op_id, media, data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
                 self._artist_search_model.set_filter_func(artist_filter)
+                self._window.notifications_popup.pop_loading()
                 return
 
             artist_filter_ids.append(media.get_id())
@@ -665,6 +684,7 @@ class GrlTrackerWrapper(GObject.GObject):
             query, self.METADATA_KEYS, options, artist_search_cb)
 
         # Album search
+        self._window.notifications_popup.push_loading()
 
         query = """
         SELECT DISTINCT
@@ -704,10 +724,12 @@ class GrlTrackerWrapper(GObject.GObject):
         def albums_search_cb(source, op_id, media, data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
                 self._album_search_model.set_filter_func(album_filter)
+                self._window.notifications_popup.pop_loading()
                 return
 
             album_filter_ids.append(media.get_id())
@@ -717,6 +739,7 @@ class GrlTrackerWrapper(GObject.GObject):
             query, self.METADATA_KEYS, options, albums_search_cb)
 
         # Song search
+        self._window.notifications_popup.push_loading()
 
         query = """
         SELECT DISTINCT
@@ -762,10 +785,12 @@ class GrlTrackerWrapper(GObject.GObject):
         def songs_search_cb(source, op_id, media, data, error):
             if error:
                 print("ERROR", error)
+                self._window.notifications_popup.pop_loading()
                 return
 
             if not media:
                 self._song_search_tracker.set_filter_func(songs_filter)
+                self._window.notifications_popup.pop_loading()
                 return
 
             filter_ids.append(media.get_id())


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