forked from Wobbl/Wobuzz
Enabled drag and drop between PlaylistViews.
This commit is contained in:
parent
31e72c25d3
commit
744d050bac
5 changed files with 66 additions and 6 deletions
|
@ -3,6 +3,8 @@
|
|||
from PyQt6.QtCore import pyqtSignal
|
||||
from PyQt6.QtGui import QDropEvent, QIcon
|
||||
from PyQt6.QtWidgets import QTreeWidget, QAbstractItemView
|
||||
from matplotlib.dates import TUESDAY
|
||||
|
||||
from .track import TrackItem
|
||||
|
||||
|
||||
|
@ -18,6 +20,7 @@ class PlaylistView(QTreeWidget):
|
|||
playlist.view = self
|
||||
|
||||
self.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
|
||||
#self.setAcceptDrops(True)
|
||||
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
|
||||
|
||||
self.setColumnCount(4)
|
||||
|
@ -58,13 +61,39 @@ class PlaylistView(QTreeWidget):
|
|||
self.app.player.cache_next_track()
|
||||
|
||||
def dropEvent(self, event: QDropEvent):
|
||||
items = self.selectedItems() # dragged items are always selected items
|
||||
# receive items that were dropped and create new items from its tracks (new items bc. widgets can only have
|
||||
# one parent)
|
||||
if event.source() == self:
|
||||
items = self.selectedItems() # dragged items are always selected items
|
||||
|
||||
self.itemDropped.emit(self, items)
|
||||
self.itemDropped.emit(self, items)
|
||||
|
||||
self.on_user_sort()
|
||||
|
||||
else:
|
||||
items = self.app.gui.dropped
|
||||
|
||||
i = 0
|
||||
|
||||
for item in items:
|
||||
track = item.track
|
||||
|
||||
track_item = TrackItem(track, i, self)
|
||||
|
||||
i += 1
|
||||
|
||||
super().dropEvent(event)
|
||||
|
||||
self.on_user_sort()
|
||||
event.accept()
|
||||
|
||||
def dragEnterEvent(self, event):
|
||||
# store dragged items in gui.dropped, so the other playlist can receive it
|
||||
if event.source() == self:
|
||||
items = self.selectedItems()
|
||||
|
||||
self.app.gui.dropped = items
|
||||
|
||||
super().dragEnterEvent(event)
|
||||
|
||||
event.accept()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue