From bf1825196c96df262748f3e68e2b1b5276724a74 Mon Sep 17 00:00:00 2001 From: Et0h Date: Wed, 14 Oct 2015 12:40:26 +0100 Subject: [PATCH] Implement "undo playlist change" feature --- syncplay/client.py | 14 ++++++++++++++ syncplay/ui/gui.py | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/syncplay/client.py b/syncplay/client.py index ebbc9f9..ba1456f 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -114,6 +114,7 @@ class SyncplayClient(object): self.autoplayTimeLeft = constants.AUTOPLAY_DELAY self._playlist = [] + self._previousPlaylist = None self._playlistIndex = None self.__playerReady = defer.Deferred() @@ -504,6 +505,11 @@ class SyncplayClient(object): newIndex = files.index(filename) except: newIndex = 0 + if self._previousPlaylist is None: + if self._playlist <> None and self._playlist <> []: + self._previousPlaylist = self._playlist + elif self._previousPlaylist <> self._playlist and self._playlist <> files: + self._previousPlaylist = self._playlist self._playlist = files if username is None and self._protocol and self._protocol.logged: @@ -513,6 +519,13 @@ class SyncplayClient(object): self.ui.setPlaylist(self._playlist) self.ui.showMessage(u"{} updated the playlist".format(username)) + def undoPlaylistChange(self): + if self._previousPlaylist is not None and self._playlist <> self._previousPlaylist: + undidPlaylist = self._playlist + self.ui.setPlaylist(self._previousPlaylist) + self.changePlaylist(self._previousPlaylist) + self._previousPlaylist = undidPlaylist + def __executePrivacySettings(self, filename, size): if self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE: filename = utils.hashFilename(filename) @@ -557,6 +570,7 @@ class SyncplayClient(object): return self.userlist.currentUser.username def setRoom(self, roomName, resetAutoplay=False): + self._previousPlaylist = None self.userlist.currentUser.room = roomName if resetAutoplay: self.resetAutoPlayState() diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index cedce37..61a6d45 100644 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -538,8 +538,9 @@ class MainWindow(QtGui.QMainWindow): MainWindow.FileSwitchManager.setFilenameWatchlist(self.newWatchlist) self.checkForDisabledDir() + @needsClient def undoPlaylistChange(self): - self.showErrorMessage("TODO: Undo playlist change!") + self._syncplayClient.undoPlaylistChange() def openPlaylistMenu(self, position): indexes = self.playlist.selectedIndexes()