summaryrefslogtreecommitdiff
path: root/nephilim/plugins
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-09-19 10:49:10 +0200
committerAnton Khirnov <wyskas@gmail.com>2009-09-19 10:49:10 +0200
commita5019465a52dbbe17c625c1c1045427c5059fe9e (patch)
tree661759b271577b66218ec96e263b63a95cc9ed57 /nephilim/plugins
parent6f1cf7b125325ec2d95986a60ee34ca127129fc8 (diff)
Playlist: support for moving songs with drag&drop
Diffstat (limited to 'nephilim/plugins')
-rw-r--r--nephilim/plugins/Library.py20
-rw-r--r--nephilim/plugins/Playlist.py18
2 files changed, 16 insertions, 22 deletions
diff --git a/nephilim/plugins/Library.py b/nephilim/plugins/Library.py
index 348069c..c746af6 100644
--- a/nephilim/plugins/Library.py
+++ b/nephilim/plugins/Library.py
@@ -19,7 +19,7 @@ from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import QVariant
from ..plugin import Plugin
-from ..common import MIMETYPES
+from ..common import MIMETYPES, SongsMimeData
class Library(Plugin):
# public, const
@@ -260,21 +260,3 @@ class LibraryWidget(QtGui.QWidget):
paths.append(song)
self.plugin.mpclient.add(paths)
-class SongsMimeData(QtCore.QMimeData):
- # private
- __songs = None
-
- def set_songs(self, songs):
- self.__songs = songs
-
- def songs(self):
- return self.__songs
-
- def formats(self):
- types = QtCore.QMimeData.formats(self)
- return types if not self.__songs else types + [MIMETYPES['songs']]
-
- def hasFormat(self, format):
- if format == MIMETYPES['songs'] and self.__songs:
- return True
- return QtCore.QMimeData.hasFormat(self, format)
diff --git a/nephilim/plugins/Playlist.py b/nephilim/plugins/Playlist.py
index b6266cc..72e1d8b 100644
--- a/nephilim/plugins/Playlist.py
+++ b/nephilim/plugins/Playlist.py
@@ -19,7 +19,7 @@ from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import QVariant
from ..plugin import Plugin
-from ..common import MIMETYPES
+from ..common import MIMETYPES, SongsMimeData
class Playlist(Plugin):
# public, const
@@ -82,7 +82,7 @@ class PlaylistWidget(QtGui.QWidget):
# drag&drop
self.viewport().setAcceptDrops(True)
self.setDropIndicatorShown(True)
- self.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
+ self.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
columns = self.plugin.settings.value(self.plugin.name + '/columns').toStringList()
self.setColumnCount(len(columns))
@@ -118,8 +118,20 @@ class PlaylistWidget(QtGui.QWidget):
else:
QtGui.QTreeWidget.keyPressEvent(self, event)
+ def mimeData(self, items):
+ data = SongsMimeData()
+ data.set_plistsongs([items[0].id])
+ return data
+
def dropMimeData(self, parent, index, data, action):
- if data.hasFormat(MIMETYPES['songs']):
+ if data.hasFormat(MIMETYPES['plistsongs']):
+ if parent:
+ index = self.indexOfTopLevelItem(parent)
+ elif index >= self.topLevelItemCount():
+ index = self.topLevelItemCount() - 1
+ self.plugin.mpclient.move(data.plistsongs()[0], index)
+ return True
+ elif data.hasFormat(MIMETYPES['songs']):
if parent:
index = self.indexOfTopLevelItem(parent)
self.plugin.mpclient.add(data.songs(), index)