Add 'Clear Queue' option

This commit is contained in:
ferferga 2020-07-01 15:54:51 +02:00
parent 737341934a
commit 08a995fe2c
7 changed files with 50 additions and 13 deletions

View file

@ -28,13 +28,22 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
}
}
if (playbackManager.getCurrentPlayer() !== null && options.stopPlayback) {
if (playbackManager.getCurrentPlayer() !== null) {
if (options.stopPlayback) {
commands.push({
name: globalize.translate('StopPlayback'),
id: 'stopPlayback',
icon: 'stop'
});
}
if (options.clearQueue) {
commands.push({
name: globalize.translate('ClearQueue'),
id: 'clearQueue',
icon: 'clear_all'
});
}
}
if (playbackManager.canQueue(item)) {
if (options.queue !== false) {
@ -435,6 +444,9 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
case 'stopPlayback':
playbackManager.stop();
break;
case 'clearQueue':
playbackManager.clearQueue();
break;
case 'record':
require(['recordingCreator'], function (recordingCreator) {
recordingCreator.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));

View file

@ -584,6 +584,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
let options = {
play: false,
queue: false,
clearQueue: true,
positionTo: contextButton
};
apiClient.getCurrentUser().then(function (user) {

View file

@ -3971,6 +3971,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
events.trigger(player, 'shufflequeuemodechange');
};
PlaybackManager.prototype.clearQueue = function (clearCurrentItem = false, player = this._currentPlayer) {
if (player && !enableLocalPlaylistManagement(player)) {
return player.clearQueue(clearCurrentItem);
}
this._playQueueManager.clearPlaylist(clearCurrentItem);
events.trigger(player, 'playlistitemremove');
};
PlaybackManager.prototype.trySetActiveDeviceName = function (name) {
name = normalizeName(name);

View file

@ -84,6 +84,14 @@ define([], function () {
this._shuffleMode = 'Sorted';
};
PlayQueueManager.prototype.clearPlaylist = function (clearCurrentItem = false) {
const currentPlaylistItem = this._playlist.splice(this.getCurrentPlaylistIndex(), 1)[0];
this._playlist = [];
if (!clearCurrentItem) {
this._playlist.push(currentPlaylistItem);
}
};
function arrayInsertAt(destArray, pos, arrayToInsert) {
var args = [];
args.push(pos); // where to insert

View file

@ -190,6 +190,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
play: false,
queue: false,
stopPlayback: stopPlayback,
clearQueue: true,
openAlbum: false,
positionTo: contextButton
};
@ -551,6 +552,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
function onPlaylistItemRemoved(e, info) {
var context = dlg;
if (info !== undefined) {
var playlistItemIds = info.playlistItemIds;
for (var i = 0, length = playlistItemIds.length; i < length; i++) {
@ -560,6 +562,9 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
listItem.parentNode.removeChild(listItem);
}
}
} else {
onPlaylistUpdate();
}
}
function onPlaybackStopped(e, state) {

View file

@ -1564,5 +1564,6 @@
"ButtonSyncPlay": "SyncPlay",
"ButtonCast": "Cast",
"ButtonPlayer": "Player",
"StopPlayback": "Stop playback"
"StopPlayback": "Stop playback",
"ClearQueue": "Clear queue"
}

View file

@ -1574,5 +1574,6 @@
"HeaderNewRepository": "Nuevo repositorio",
"MessageNoRepositories": "Sin repositorios.",
"Writers": "Escritores",
"StopPlayback": "Detener la reproducción"
"StopPlayback": "Detener la reproducción",
"ClearQueue": "Borrar la cola"
}