Shuffle playlist feature

This commit is contained in:
Et0h 2015-11-15 21:32:46 +00:00
parent cf1b2edf4a
commit bb875fddf9
4 changed files with 18 additions and 3 deletions

View File

@ -653,7 +653,7 @@ guiIcons = ['resources/accept.png', 'resources/arrow_undo.png', 'resources/clock
'resources/eye.png', 'resources/comments.png', 'resources/cog_delete.png', 'resources/chevrons_right.png',
'resources/user_key.png', 'resources/lock.png', 'resources/key_go.png', 'resources/page_white_key.png',
'resources/tick.png', 'resources/lock_open.png', 'resources/empty_checkbox.png', 'resources/tick_checkbox.png',
'resources/world_explore.png', 'resources/application_get.png', 'resources/cog.png',
'resources/world_explore.png', 'resources/application_get.png', 'resources/cog.png', 'resources/arrow_switch.png',
'resources/film_go.png', 'resources/world_go.png', 'resources/arrow_refresh.png', 'resources/bullet_right_grey.png',
'resources/world_add.png', 'resources/film_add.png', 'resources/delete.png'
]

BIN
resources/arrow_switch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

View File

@ -4,6 +4,7 @@ import time
import re
import sys
import ast
import random
from twisted.internet.protocol import ClientFactory
from twisted.internet import reactor, task, defer
from functools import wraps
@ -529,6 +530,16 @@ class SyncplayClient(object):
self.changePlaylist(self._previousPlaylist)
self._previousPlaylist = undidPlaylist
def shufflePlaylist(self):
if self._playlist and len(self._playlist) > 0:
oldPlaylist = self._playlist
random.seed()
shuffledPlaylist = deepcopy(self._playlist)
random.shuffle(shuffledPlaylist)
self.ui.setPlaylist(shuffledPlaylist)
self.changePlaylist(shuffledPlaylist)
self._previousPlaylist = oldPlaylist
def __executePrivacySettings(self, filename, size):
if self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE:
filename = utils.hashFilename(filename)
@ -564,7 +575,6 @@ class SyncplayClient(object):
if username and username <> "":
self.userlist.currentUser.username = username
else:
import random
random.seed()
random_number = random.randrange(1000, 9999)
self.userlist.currentUser.username = "Anonymous" + str(random_number) # Not localised as this would give away locale

View File

@ -575,6 +575,10 @@ class MainWindow(QtGui.QMainWindow):
def undoPlaylistChange(self):
self._syncplayClient.undoPlaylistChange()
@needsClient
def shufflePlaylist(self):
self._syncplayClient.shufflePlaylist()
def openPlaylistMenu(self, position):
indexes = self.playlist.selectedIndexes()
if sys.platform.startswith('win'):
@ -598,6 +602,7 @@ class MainWindow(QtGui.QMainWindow):
menu.addAction(QtGui.QPixmap(resourcespath + "film_go.png"), "Open file", lambda: self.openFile(pathFound))
menu.addAction(QtGui.QPixmap(resourcespath + "delete.png"), "Remove from playlist", lambda: self.deleteSelectedPlaylistItems())
menu.addSeparator()
menu.addAction(QtGui.QPixmap(resourcespath + "arrow_switch.png"), "Shuffle playlist", lambda: self.shufflePlaylist())
menu.addAction(QtGui.QPixmap(resourcespath + "arrow_undo.png"), "Undo last change to playlist", lambda: self.undoPlaylistChange())
menu.exec_(self.playlist.viewport().mapToGlobal(position))
@ -1335,7 +1340,7 @@ class MainWindow(QtGui.QMainWindow):
if newPlaylist == self.playlistState:
return
self.updatingPlaylist = True
if len(newPlaylist) > 0:
if newPlaylist and len(newPlaylist) > 0:
self.clearedPlaylistNote = True
self.playlistState = newPlaylist
self.playlist.updatePlaylist(newPlaylist)