[gnome-music] on undo playlist deletion, put playlist back at original spot in sidebar



commit 61fb2f7d6b69a24f268e4e5f2f9aa05bc09773de
Author: Maia <maia mcc gmail com>
Date:   Thu Feb 19 16:15:08 2015 -0500

    on undo playlist deletion, put playlist back at original spot in sidebar
    
    https://bugzilla.gnome.org/show_bug.cgi?id=744832

 gnomemusic/view.py   |   15 ++++++++++-----
 gnomemusic/window.py |    6 ++++--
 2 files changed, 14 insertions(+), 7 deletions(-)
---
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index f4487b3..1a3570c 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -826,6 +826,7 @@ class Playlist(ViewContainer):
         self.iter_to_clean = None
         self.iter_to_clean_model = None
         self.current_playlist = None
+        self.current_playlist_index = None
         self.pl_todelete = None
         self.really_delete = True
         self.songs_count = 0
@@ -975,13 +976,15 @@ class Playlist(ViewContainer):
         self._add_playlist_item_to_model(item)
 
     @log
-    def _add_playlist_item_to_model(self, item):
+    def _add_playlist_item_to_model(self, item, index=None):
+        if index is None:
+            index = -1
         if not item:
             self.window.notification.dismiss()
             self.emit('playlists-loaded')
             return
         _iter = self.playlists_model.insert_with_valuesv(
-            -1,
+            index,
             [2, 5],
             [albumArtCache.get_media_title(item), item])
         if self.playlists_model.iter_n_children(None) == 1:
@@ -1074,6 +1077,7 @@ class Playlist(ViewContainer):
 
         self.current_playlist = playlist
         self.name_label.set_text(playlist_name)
+        self.current_playlist_index = int(path.to_string())
 
         # if the active queue has been set by this playlist,
         # use it as model, otherwise build the liststore
@@ -1163,6 +1167,7 @@ class Playlist(ViewContainer):
     def stage_playlist_for_deletion(self):
         self.model.clear()
         _iter = self.playlists_sidebar.get_generic_view().get_selection().get_selected()[1]
+
         if not _iter:
             return
 
@@ -1179,13 +1184,13 @@ class Playlist(ViewContainer):
         self.playlists_model.remove(_iter)
 
     @log
-    def undo_playlist_deletion(self):
-        self._add_playlist_item_to_model(self.pl_todelete)
+    def undo_playlist_deletion(self, deletion_index):
+        self._add_playlist_item_to_model(self.pl_todelete, index=deletion_index)
 
     @log
     def _on_delete_activate(self, menuitem, data=None):
         self.window._init_playlist_removal_notification()
-        self.delete_selected_playlist()
+        self.stage_playlist_for_deletion()
 
     @log
     def _on_playlist_created(self, playlists, item):
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 5359695..8935357 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -336,6 +336,8 @@ class Window(Gtk.ApplicationWindow):
         self.notification.show_all()
         self._overlay.add_overlay(self.notification)
 
+        self.notification.deletion_index = self.views[3].current_playlist_index
+
         self.notification.connect("dismissed", self._playlist_removal_notification_dismissed)
         undo_button.connect("clicked", self._undo_deletion)
 
@@ -350,7 +352,7 @@ class Window(Gtk.ApplicationWindow):
     def _undo_deletion(self, widget):
         self.views[3].really_delete = False
         self.notification.dismiss()
-        self.views[3].undo_playlist_deletion()
+        self.views[3].undo_playlist_deletion(self.notification.deletion_index)
 
     @log
     def _on_key_press(self, widget, event):
@@ -372,7 +374,7 @@ class Window(Gtk.ApplicationWindow):
             if (event.keyval == Gdk.KEY_Delete):
                 if self._stack.get_visible_child() == self.views[3]:
                     self._init_playlist_removal_notification()
-                    self.views[3].delete_selected_playlist()
+                    self.views[3].stage_playlist_for_deletion()
             # Close search bar after Esc is pressed
             if event.keyval == Gdk.KEY_Escape:
                 self.toolbar.searchbar.show_bar(False)


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