From bb875fddf9d01e202514d20c4b5ee5e6d11b49bf Mon Sep 17 00:00:00 2001 From: Et0h Date: Sun, 15 Nov 2015 21:32:46 +0000 Subject: [PATCH] Shuffle playlist feature --- buildPy2exe.py | 2 +- resources/arrow_switch.png | Bin 0 -> 683 bytes syncplay/client.py | 12 +++++++++++- syncplay/ui/gui.py | 7 ++++++- 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 resources/arrow_switch.png diff --git a/buildPy2exe.py b/buildPy2exe.py index 5b108d0..6e4269d 100644 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -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' ] diff --git a/resources/arrow_switch.png b/resources/arrow_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..258c16c63a20f7474764507475af7961ecf4263a GIT binary patch literal 683 zcmV;c0#yBpP)A3WJ2dfsV78ToP)wU4~UJxT^#Yl8pW;T)B2y+W_BqqmW z&#t|w0SE!KR$a#7aL!?!V{G>0(f7&GF0n$i_yAiovkXpE$M|c8KDe}2*w(W8jK3Y2*x)V03j=u2XF48q6F<0_UD&z zFmi~T?K=p$491faq~>RsPR$VB89_xzOpK2V+=|x$1lD3~x!;g2Mz5ELE831k>xd528II@{FM*4t5cwMI2$KMmfFm;RN43xW+e;$tzEyd|PV<@i4gUfKh|U-I$hymfQ} zt?kWDj37pE;wZ>1WHG%+SvbnRqEaTN#u*-slSm{u7_C6WGBh|el4$>24G=QE;Y9f< z)G2BOvC3T5Jn;{4ig%R|E{ITA5W$|ds8uW$Z^f(HeLnnp>dACn(D>^wEGjH6Et2~F zjpx1H%%|rOCx{iqDPk27MT{DNK*OCgPK;oDLHt!jVx&(zZS&Lq>Ld9Y&Ck!LvbvJw zmn1{|Z(}o^vo(KE_?L 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 diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index e664a83..d2e7c48 100644 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -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)