Untested implementation of reorder and randomize in CLI.

This commit is contained in:
Jonathan Bernard 2016-03-21 01:14:11 -05:00
parent 72b4b0c9ff
commit 902e97c309

View File

@ -327,6 +327,7 @@ Configuration:
case 'remove': return processRemove(rest, currentSelection) case 'remove': return processRemove(rest, currentSelection)
case 'tag': return processTag(rest, currentSelection) case 'tag': return processTag(rest, currentSelection)
case 'untag': return processTag(rest, currentSelection, false) case 'untag': return processTag(rest, currentSelection, false)
case 'randomize': return processRandomize(rest)
case 'clear': return processClear(rest) case 'clear': return processClear(rest)
case 'pause': return processPause() case 'pause': return processPause()
case 'stop': return processStop() case 'stop': return processStop()
@ -566,6 +567,44 @@ Configuration:
msg "Removed ${toRemove.size()} files." msg "Removed ${toRemove.size()} files."
return toRemove } return toRemove }
private def processRandomize(String options) {
Playlist p
switch (options) {
case 'queue': p = playQueue; break
case ~/playlist (.+)/:
String idOrName = Matcher.lastMatcher[0][1]
p = getExactlyOne(Playlist, idOrName)
break
default: invalidOptionsErr('randomize') }
library.randomizePlaylist(p) }
private def processReorder(String options) {
Playlist p
int startingIdx = -1
String[] parts = options.split(/ as | starting at /)
if (parts.size() < 2) invalidOptionsErr('reorder');
// Playlist or queue?
switch (parts[0].trim()) {
case 'queue': p = playQueue; break
case ~/playlist (.+)/:
String idOrName = Matcher.lastMatcher[0][1]
p = getExactlyOne(Playlist, idOrName)
break
default: invalidOptionsErr('reorder') }
// What files in order?
List<MediaFile> playlistFiles = library.getMediaFilesWhere(playlistId: p.id)
String[] fileIds = parts[1].split(/[,;\s]/)
List<MediaFile> files = fileIds.collect { library.getMediaFileById(it) }
.findAll()
if (parts.size() == 3) startingIdx = safeToInteger(parts[2])
}
private def processTag(String options, List<Model> selection, private def processTag(String options, List<Model> selection,
boolean addTags = true) { boolean addTags = true) {
@ -722,6 +761,8 @@ Available commands:
enqueue Enqueue requested media to the end of the play queue. enqueue Enqueue requested media to the end of the play queue.
add Append requested media to the end of a playlist. add Append requested media to the end of a playlist.
remove Remove requested from the play queue or playlist. remove Remove requested from the play queue or playlist.
randomize Re-order the files in a play queue or a playlist randomly.
reorder Re-order the files in a play queue or a playlist.
tag Associate tags with requested media. tag Associate tags with requested media.
untag Remove the association between the given tags and media. untag Remove the association between the given tags and media.
clear Clear the selection, play queue, playlist, or screen. clear Clear the selection, play queue, playlist, or screen.
@ -900,7 +941,36 @@ remove <select-criteria> from playlist <id | name>
""" """
// tag // RANDOMIZE
// --------------
case 'randomize': return """\
randomize queue
randomize playlist <id | name>
Randomize the order of all elements in either the current play queue or the
named playlist.
"""
// REORDER
// --------------
case 'reorder': return """\
reorder queue move <file id | name> to <position>
reorder playlist <id | name> move <file id | name> to <position>
Move a single file from its current position to the named position in the
play queue/playlist.
reorder queue as <file id>... starting at <position>
reorder playlist <id | name> as <file id>... starting at <position>
Take a set of files in the playlist, reorder them into given order, and
move them to the given starting position (defaults to the end of the
playlist)
"""
// TAG
// -------------- // --------------
case 'tag': return """\ case 'tag': return """\
tag <tag>... tag <tag>...
@ -1053,6 +1123,14 @@ Playlist and Queue Management:
create bookmark <id | name> create bookmark <id | name>
update bookmark <id | name> update bookmark <id | name>
randomize queue
randomize playlist
reorder queue move <file id | name> to <position>
reorder playlist <id | name> move <file id | name> to <position>
reorder queue as <file id>...
reorder playlist <id | name> as <file id>...
clear clear
clear queue clear queue
clear selection clear selection