Implement "undo playlist change" feature

This commit is contained in:
Et0h 2015-10-14 12:40:26 +01:00
parent f4a0bbe967
commit bf1825196c
2 changed files with 16 additions and 1 deletions

View File

@ -114,6 +114,7 @@ class SyncplayClient(object):
self.autoplayTimeLeft = constants.AUTOPLAY_DELAY self.autoplayTimeLeft = constants.AUTOPLAY_DELAY
self._playlist = [] self._playlist = []
self._previousPlaylist = None
self._playlistIndex = None self._playlistIndex = None
self.__playerReady = defer.Deferred() self.__playerReady = defer.Deferred()
@ -504,6 +505,11 @@ class SyncplayClient(object):
newIndex = files.index(filename) newIndex = files.index(filename)
except: except:
newIndex = 0 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 self._playlist = files
if username is None and self._protocol and self._protocol.logged: 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.setPlaylist(self._playlist)
self.ui.showMessage(u"{} updated the playlist".format(username)) 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): def __executePrivacySettings(self, filename, size):
if self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE: if self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE:
filename = utils.hashFilename(filename) filename = utils.hashFilename(filename)
@ -557,6 +570,7 @@ class SyncplayClient(object):
return self.userlist.currentUser.username return self.userlist.currentUser.username
def setRoom(self, roomName, resetAutoplay=False): def setRoom(self, roomName, resetAutoplay=False):
self._previousPlaylist = None
self.userlist.currentUser.room = roomName self.userlist.currentUser.room = roomName
if resetAutoplay: if resetAutoplay:
self.resetAutoPlayState() self.resetAutoPlayState()

View File

@ -538,8 +538,9 @@ class MainWindow(QtGui.QMainWindow):
MainWindow.FileSwitchManager.setFilenameWatchlist(self.newWatchlist) MainWindow.FileSwitchManager.setFilenameWatchlist(self.newWatchlist)
self.checkForDisabledDir() self.checkForDisabledDir()
@needsClient
def undoPlaylistChange(self): def undoPlaylistChange(self):
self.showErrorMessage("TODO: Undo playlist change!") self._syncplayClient.undoPlaylistChange()
def openPlaylistMenu(self, position): def openPlaylistMenu(self, position):
indexes = self.playlist.selectedIndexes() indexes = self.playlist.selectedIndexes()