[gnome-music] playlist: deleting playlist in quick succession



commit 76a6e8f109807ea204cddf623a1eaf523187aa12
Author: Prashant Tyagi <prashanttyagi221295 gmail com>
Date:   Tue Mar 15 00:15:25 2016 +0530

    playlist: deleting playlist in quick succession
    
    deleting playlist in quick succession should only
    effect last playlist.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=744831

 gnomemusic/view.py   |   15 ++++++++-------
 gnomemusic/window.py |   12 +++++++++---
 2 files changed, 17 insertions(+), 10 deletions(-)
---
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index 4d19036..d851741 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -870,6 +870,7 @@ class Playlist(ViewContainer):
         self.current_playlist = None
         self.current_playlist_index = None
         self.pl_todelete = None
+        self.pl_todelete_index = None
         self.really_delete = True
         self.songs_count = 0
         self.window = window
@@ -1202,26 +1203,26 @@ class Playlist(ViewContainer):
     @log
     def stage_playlist_for_deletion(self):
         self.model.clear()
+        self.pl_todelete_index = self.current_playlist_index
         _iter = self.playlists_sidebar.get_generic_view().get_selection().get_selected()[1]
-
+        self.pl_todelete = self.playlists_model.get_value(_iter, 5)
+      
         if not _iter:
             return
 
         iter_next = self.playlists_model.iter_next(_iter)\
             or self.playlists_model.iter_previous(_iter)
+        self.playlists_model.remove(_iter)
+
         if iter_next:
             selection = self.playlists_sidebar.get_generic_view().get_selection()
             selection.select_iter(iter_next)
             self.playlists_sidebar.emit('item-activated', '0',
                                         self.playlists_model.get_path(iter_next))
 
-        playlist = self.playlists_model.get_value(_iter, 5)
-        self.pl_todelete = playlist
-        self.playlists_model.remove(_iter)
-
     @log
-    def undo_playlist_deletion(self, deletion_index):
-        self._add_playlist_item_to_model(self.pl_todelete, index=deletion_index)
+    def undo_playlist_deletion(self):
+        self._add_playlist_item_to_model(self.pl_todelete, self.pl_todelete_index)
 
     @log
     def _on_delete_activate(self, menuitem, data=None):
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index a41d974..7e91726 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -76,6 +76,7 @@ class Window(Gtk.ApplicationWindow):
 
         self.prev_view = None
         self.curr_view = None
+        self.pl_todelete_notification = None
 
         size_setting = self.settings.get_value('window-size')
         if isinstance(size_setting[0], int) and isinstance(size_setting[1], int):
@@ -345,6 +346,11 @@ class Window(Gtk.ApplicationWindow):
 
     @log
     def _init_playlist_removal_notification(self):
+        if self.pl_todelete_notification:
+            self.views[3].really_delete = False
+            self.pl_todelete_notification.destroy()
+            Views.playlists.delete_playlist(self.views[3].pl_todelete)
+
         self.notification = Gd.Notification()
         self.notification.set_timeout(20)
 
@@ -360,14 +366,14 @@ 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.pl_todelete_notification = self.notification
 
         self.notification.connect("dismissed", self._playlist_removal_notification_dismissed)
         undo_button.connect("clicked", self._undo_deletion)
 
     @log
     def _playlist_removal_notification_dismissed(self, widget):
+        self.pl_todelete_notification = None
         if self.views[3].really_delete:
             Views.playlists.delete_playlist(self.views[3].pl_todelete)
         else:
@@ -377,7 +383,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.notification.deletion_index)
+        self.views[3].undo_playlist_deletion()
 
     @log
     def _on_key_press(self, widget, event):


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