[gnome-music] Dont update in selection mode



commit fd662247e29df9d4f12b8b78a4d513a28619134e
Author: Sai Suman Prayaga <suman sai14 gmail com>
Date:   Thu May 22 22:27:58 2014 +0530

    Dont update in selection mode
    
    https://bugzilla.gnome.org/show_bug.cgi?id=726713

 gnomemusic/grilo.py  |    4 ++++
 gnomemusic/view.py   |   24 ++++++++++++++++++++----
 gnomemusic/window.py |   25 ++++++++++++++-----------
 3 files changed, 38 insertions(+), 15 deletions(-)
---
diff --git a/gnomemusic/grilo.py b/gnomemusic/grilo.py
index 69b4e04..fcee3f8 100644
--- a/gnomemusic/grilo.py
+++ b/gnomemusic/grilo.py
@@ -76,6 +76,7 @@ class Grilo(GObject.GObject):
         self.tracker = None
         self.changed_media_ids = []
         self.pending_event_id = 0
+        self.changes_pending = {'Albums': False, 'Artists': False, 'Songs': False}
         self.registry = Grl.Registry.get_default()
 
     @log
@@ -122,6 +123,9 @@ class Grilo(GObject.GObject):
     def emit_change_signal(self):
         self.changed_media_ids = []
         self.pending_event_id = 0
+        self.changes_pending['Albums'] = True
+        self.changes_pending['Artists'] = True
+        self.changes_pending['Songs'] = True 
         self.emit('changes-pending')
         return False
 
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index 16427fe..b4b2bef 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -355,10 +355,16 @@ class Albums(ViewContainer):
 
     @log
     def _on_changes_pending(self, data=None):
-        if (self._init):
+        if (self._init and self.header_bar._selectionMode is False):
             self._offset = 0
             self._model.clear()
             self.populate()
+            grilo.changes_pending['Albums'] = False
+
+    @log
+    def _on_selection_mode_changed(self, widget, data=None):
+        if self.header_bar._selectionMode is False and grilo.changes_pending['Albums'] is True:
+            self._on_changes_pending()
 
     @log
     def _back_button_clicked(self, widget, data=None):
@@ -438,10 +444,16 @@ class Songs(ViewContainer):
 
     @log
     def _on_changes_pending(self, data=None):
-        if (self._init):
+        if (self._init and self.header_bar._selectionMode is False):
             self._model.clear()
             self._offset = 0
             self.populate()
+            grilo.changes_pending['Songs'] = False
+
+    @log
+    def _on_selection_mode_changed(self, widget, data=None):
+        if self.header_bar._selectionMode is False and grilo.changes_pending['Songs'] is True:
+            self._on_changes_pending()
 
     @log
     def _on_item_activated(self, widget, id, path):
@@ -612,11 +624,12 @@ class Artists (ViewContainer):
 
     @log
     def _on_changes_pending(self, data=None):
-        if (self._init):
+        if (self._init and self.header_bar._selectionMode is False):
             self._model.clear()
             self._artists.clear()
             self._offset = 0
             self._populate()
+            grilo.changes_pending['Artists'] = False
 
     @log
     def _populate(self, data=None):
@@ -736,6 +749,8 @@ class Artists (ViewContainer):
     @log
     def _on_selection_mode_changed(self, widget, data=None):
         self.artistAlbumsStack.set_sensitive(not self.header_bar._selectionMode)
+        if self.header_bar._selectionMode is False and grilo.changes_pending['Artists'] is True:
+            self._on_changes_pending()
 
     @log
     def get_selected_track_uris(self, callback):
@@ -1052,6 +1067,7 @@ class Playlist(ViewContainer):
         self.playlists_sidebar.set_sensitive(not self.header_bar._selectionMode)
         self.menubutton.set_sensitive(not self.header_bar._selectionMode)
 
+
     @log
     def _on_play_activate(self, menuitem, data=None):
         _iter = self._model.get_iter_first()
@@ -1242,7 +1258,7 @@ class Search(ViewContainer):
 
     @log
     def _on_selection_mode_changed(self, widget, data=None):
-        if self.get_visible_child() == self._artistAlbumsWidget:
+        if self._artistAlbumsWidget is not None and self.get_visible_child() == self._artistAlbumsWidget:
             self._artistAlbumsWidget.set_selection_mode(self.header_bar._selectionMode)
 
     @log
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 5f53bb7..93018b9 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -114,17 +114,17 @@ class Window(Gtk.ApplicationWindow):
         if cursor is not None and cursor.next(None):
             count = cursor.get_integer(0)
         if not count > 0:
-            print("switching to Empty view")
-            self._stack.disconnect(self._on_notify_model_id)
-            self.disconnect(self._key_press_event_id)
-            for i in range(0, 4):
-                view = self.views.pop()
-                view.destroy()
-            self.toolbar.hide_stack()
-            self._switch_to_empty_view()
+            if self.toolbar._selectionMode is False and len(self.views) != 1:
+                self._stack.disconnect(self._on_notify_model_id)
+                self.disconnect(self._key_press_event_id)
+                view_count = len(self.views)
+                for i in range(0, view_count):
+                    view = self.views.pop()
+                    view.destroy()
+                self.toolbar.hide_stack()
+                self._switch_to_empty_view()
         else:
             if (self.views[0] == self.views[-1]):
-                print("switching to player view")
                 view = self.views.pop()
                 view.destroy()
                 self._switch_to_player_view()
@@ -203,7 +203,8 @@ class Window(Gtk.ApplicationWindow):
             self._switch_to_player_view()
         # To revert to the No Music View when no songs are found
         else:
-            self._switch_to_empty_view()
+            if self.toolbar._selectionMode is False:
+                self._switch_to_empty_view()
 
         self.toolbar._search_button.connect('toggled', self._on_search_toggled)
         self.toolbar.connect('selection-mode-changed', self._on_selection_mode_changed)
@@ -356,7 +357,9 @@ class Window(Gtk.ApplicationWindow):
 
     @log
     def _on_selection_mode_changed(self, widget, data=None):
-        if self.toolbar._selectionMode:
+        if self.toolbar._selectionMode is False:
+            self._on_changes_pending()
+        else:
             in_playlist = self._stack.get_visible_child() == self.views[3]
             self.selection_toolbar._add_to_playlist_button.set_visible(not in_playlist)
             self.selection_toolbar._remove_from_playlist_button.set_visible(in_playlist)


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