bts #22, #24, #17, implemented the delete, fixed the update
[qtodo.git] / src / ToDoCategoryList.py
blob5646d9fe38f704ae86c7b1d10ae5ae7a7052987f
1 #!/usr/bin/env python
3 from PyQt4 import Qt, QtCore, QtGui
4 import sys
7 class TodoLists(QtGui.QListWidget):
8 def __init__(self, parent=None):
9 QtGui.QListWidget.__init__(self, parent)
10 self.setDragEnabled(True)
11 self.setViewMode(QtGui.QListView.ListMode)
12 self.setIconSize(QtCore.QSize(34, 34 ))
13 self.setSpacing(5)
14 self.setAcceptDrops(True)
15 self.setDropIndicatorShown(True)
16 self.setMovement(QtGui.QListView.Free)
18 def addList(self, oid_cat, id_cat):
19 listItem = QtGui.QListWidgetItem(self)
20 pixmap = QtGui.QIcon("pixmaps/todo_list.png")
21 listItem.setIcon(pixmap)
22 listItem.setText(id_cat)
23 listItem.setData(QtCore.Qt.UserRole, QtCore.QVariant(oid_cat))
24 listItem.setData(QtCore.Qt.UserRole+1, QtCore.QVariant("list"))
25 listItem.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDragEnabled)
28 def dragEnterEvent(self, event):
29 if event.mimeData().hasFormat("application/x-qtodo"):
30 event.accept()
31 else:
32 event.ignore()
34 def dragMoveEvent(self, event):
35 if event.mimeData().hasFormat("application/x-qtodo"):
36 event.setDropAction(QtCore.Qt.MoveAction)
37 event.accept()
38 else:
39 event.ignore()
41 def dropEvent_(self, event):
42 if event.mimeData().hasFormat("application/x-qtodo"):
43 pieceData = event.mimeData().data("application/x-qtodo")
44 dataStream = QtCore.QDataStream(pieceData, QtCore.QIODevice.ReadOnly)
45 pixmap = QtGui.QPixmap()
46 location = QtCore.QPoint()
47 dataStream >> pixmap >> location
49 self.addList(pixmap, location)
51 event.setDropAction(QtCore.Qt.MoveAction)
52 event.accept()
53 else:
54 event.ignore()
56 def startDrag(self, supportedActions):
57 item = self.currentItem()
58 itemData = QtCore.QByteArray()
59 dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly)
60 oid = item.data(QtCore.Qt.UserRole).toString()
61 item_type = item.data(QtCore.Qt.UserRole+1).toString()
62 dataStream << oid << item_type
64 mimeData = QtCore.QMimeData()
65 mimeData.setData("application/x-qtodo", itemData)
66 drag = QtGui.QDrag(self)
67 drag.setMimeData(mimeData)
68 drag.setPixmap(QtGui.QPixmap("pixmaps/todo_list.png"))
70 if drag.start(QtCore.Qt.MoveAction) == QtCore.Qt.MoveAction:
71 self.takeItem(self.row(item))