[gnome-music/gnome-3-12] Dont update in selection mode



commit e357c1fcda9ed1404137f1f941a63c50767250cc
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  |    5 +++++
 gnomemusic/view.py   |   26 +++++++++++++++++++++++---
 gnomemusic/window.py |   25 ++++++++++++++-----------
 3 files changed, 42 insertions(+), 14 deletions(-)
---
diff --git a/gnomemusic/grilo.py b/gnomemusic/grilo.py
index efcea25..0de28df 100644
--- a/gnomemusic/grilo.py
+++ b/gnomemusic/grilo.py
@@ -68,6 +68,8 @@ 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()
 
         self.registry = Grl.Registry.get_default()
         self.registry.connect('source_added', self._on_source_added)
@@ -112,6 +114,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 40f783f..5c40dae 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -372,11 +372,17 @@ 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._cached_count = -1
             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):
@@ -459,11 +465,17 @@ 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._cached_count = -1
             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):
@@ -646,12 +658,13 @@ 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._cached_count = -1
             self._populate()
+            grilo.changes_pending['Artists'] = False
 
     @log
     def _populate(self, data=None):
@@ -763,6 +776,12 @@ class Artists (ViewContainer):
                     self._last_selection)
 
     @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):
         self.items_selected = []
         self.items_selected_callback = callback
@@ -1089,6 +1108,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()
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 33c49b9..fc59150 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -116,17 +116,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()
@@ -207,7 +207,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)
@@ -340,7 +341,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]