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,12 +28,21 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
} }
} }
if (playbackManager.getCurrentPlayer() !== null && options.stopPlayback) { if (playbackManager.getCurrentPlayer() !== null) {
commands.push({ if (options.stopPlayback) {
name: globalize.translate('StopPlayback'), commands.push({
id: 'stopPlayback', name: globalize.translate('StopPlayback'),
icon: 'stop' id: 'stopPlayback',
}); icon: 'stop'
});
}
if (options.clearQueue) {
commands.push({
name: globalize.translate('ClearQueue'),
id: 'clearQueue',
icon: 'clear_all'
});
}
} }
if (playbackManager.canQueue(item)) { if (playbackManager.canQueue(item)) {
@ -435,6 +444,9 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
case 'stopPlayback': case 'stopPlayback':
playbackManager.stop(); playbackManager.stop();
break; break;
case 'clearQueue':
playbackManager.clearQueue();
break;
case 'record': case 'record':
require(['recordingCreator'], function (recordingCreator) { require(['recordingCreator'], function (recordingCreator) {
recordingCreator.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); 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 = { let options = {
play: false, play: false,
queue: false, queue: false,
clearQueue: true,
positionTo: contextButton positionTo: contextButton
}; };
apiClient.getCurrentUser().then(function (user) { apiClient.getCurrentUser().then(function (user) {

View file

@ -3971,6 +3971,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
events.trigger(player, 'shufflequeuemodechange'); 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) { PlaybackManager.prototype.trySetActiveDeviceName = function (name) {
name = normalizeName(name); name = normalizeName(name);

View file

@ -84,6 +84,14 @@ define([], function () {
this._shuffleMode = 'Sorted'; 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) { function arrayInsertAt(destArray, pos, arrayToInsert) {
var args = []; var args = [];
args.push(pos); // where to insert args.push(pos); // where to insert

View file

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

View file

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

View file

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