Added multi select to queue, added multi remove in queue
This commit is contained in:
parent
1151c06926
commit
caf66e7d05
1 changed files with 50 additions and 14 deletions
|
@ -13,8 +13,8 @@
|
||||||
<template v-for="(queueItem, position) in queueItems">
|
<template v-for="(queueItem, position) in queueItems">
|
||||||
<div v-if="position <= queuePosition" style="display: none;">{{ position }}</div>
|
<div v-if="position <= queuePosition" style="display: none;">{{ position }}</div>
|
||||||
<div class="cd-queue-item"
|
<div class="cd-queue-item"
|
||||||
:class="{selected: position == selected}"
|
:class="{selected: selectedItems.includes(position)}"
|
||||||
@click="selected = position"
|
@click="select($event, position)"
|
||||||
@dblclick="playQueueItem(position)" v-else :key="position"
|
@dblclick="playQueueItem(position)" v-else :key="position"
|
||||||
@contextmenu="selected = position;queueContext($event, queueItem.item, position)">
|
@contextmenu="selected = position;queueContext($event, queueItem.item, position)">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -47,16 +47,33 @@
|
||||||
drag: false,
|
drag: false,
|
||||||
queuePosition: 0,
|
queuePosition: 0,
|
||||||
queueItems: [],
|
queueItems: [],
|
||||||
selected: -1
|
selected: -1,
|
||||||
|
selectedItems: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.updateQueue()
|
this.updateQueue()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
select(e, position) {
|
||||||
|
if(e.ctrlKey || e.shiftKey) {
|
||||||
|
if(this.selectedItems.indexOf(position) == -1) {
|
||||||
|
this.selectedItems.push(position)
|
||||||
|
} else {
|
||||||
|
this.selectedItems.splice(this.selectedItems.indexOf(position), 1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.selectedItems = [position]
|
||||||
|
}
|
||||||
|
},
|
||||||
queueContext(event, item, position) {
|
queueContext(event, item, position) {
|
||||||
let self = this
|
let self = this
|
||||||
CiderContextMenu.Create(event, {
|
let useMenu = "single"
|
||||||
|
if(this.selectedItems.length > 1) {
|
||||||
|
useMenu = "multiple"
|
||||||
|
}
|
||||||
|
let menus = {
|
||||||
|
single: {
|
||||||
items: [{
|
items: [{
|
||||||
"name": "Remove from queue",
|
"name": "Remove from queue",
|
||||||
"action": function () {
|
"action": function () {
|
||||||
|
@ -76,7 +93,26 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
});
|
},
|
||||||
|
multiple: {
|
||||||
|
items: [{
|
||||||
|
"name": `Remove ${self.selectedItems.length} tracks from queue`,
|
||||||
|
"action": function () {
|
||||||
|
// add property to items to be removed
|
||||||
|
self.selectedItems.forEach(function (item) {
|
||||||
|
self.queueItems[item].remove = true
|
||||||
|
})
|
||||||
|
// remove items
|
||||||
|
self.queueItems = self.queueItems.filter(function (item) {
|
||||||
|
return !item.remove
|
||||||
|
})
|
||||||
|
app.mk.queue._reindex()
|
||||||
|
self.selectedItems = []
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CiderContextMenu.Create(event, menus[useMenu]);
|
||||||
},
|
},
|
||||||
playQueueItem(index) {
|
playQueueItem(index) {
|
||||||
app.mk.changeToMediaAtIndex(index)
|
app.mk.changeToMediaAtIndex(index)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue