Changeset 714
- Timestamp:
- 07/10/08 10:33:29 (4 months ago)
- Files:
-
- oss/jlib/designer/ui/contacts.ui (modified) (1 diff)
- oss/jlib/designer/ui/groupdialog.ui (added)
- oss/jlib/jlib/core/contact.py (modified) (7 diffs)
- oss/jlib/jlib/gui/contact.py (modified) (4 diffs)
- oss/jlib/jlib/gui/contactui.py (modified) (2 diffs)
- oss/jlib/jlib/gui/groupdialog.py (added)
- oss/jlib/jlib/gui/groupdialogui.py (added)
- oss/jlib/jlib/gui/subscriptiondialog.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
oss/jlib/designer/ui/contacts.ui
r709 r714 22 22 </rect> 23 23 </property> 24 <property name="dragEnabled" > 25 <bool>true</bool> 26 </property> 27 <property name="dragDropMode" > 28 <enum>QAbstractItemView::InternalMove</enum> 29 </property> 30 <property name="alternatingRowColors" > 31 <bool>true</bool> 32 </property> 24 33 </widget> 25 34 </widget> oss/jlib/jlib/core/contact.py
r713 r714 29 29 self.addContact) 30 30 QtCore.QObject.connect(self, QtCore.SIGNAL("addContact(PyQt_PyObject, PyQt_PyObject)"), 31 self.addContactWithGroups) 31 self.addContactWithGroups) 32 QtCore.QObject.connect(self, QtCore.SIGNAL("changeGroup(PyQt_PyObject, PyQt_PyObject)"), 33 self.addContactWithGroups) 32 34 33 35 def setComponent(self, component): … … 172 174 def type(self): 173 175 return QtGui.QStandardItem.UserType + 102 176 177 def flags(self): 178 return QtCore.Qt.ItemIsDropEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled 174 179 175 180 class jlibContactModel(QtGui.QStandardItemModel): … … 178 183 self.contact_items = {} 179 184 self.group_items = {} 185 186 def flags(self, index): 187 if index.isValid(): 188 item = self.itemFromIndex(index) 189 if item and item.type() == QtGui.QStandardItem.UserType + 102: 190 return item.flags() 191 192 return QtGui.QStandardItemModel.flags(self, index) 193 194 def mimeData(self, indexes): 195 mimeData = QtCore.QMimeData() 196 urls = [] 197 for index in indexes: 198 if index.isValid(): 199 contact = self.getContact(index) 200 urls.append(QtCore.QUrl('xmpp:%s' % str(contact.jid))) 201 202 mimeData.setUrls(urls) 203 return mimeData 180 204 181 205 def setRoster(self, roster): … … 189 213 return self.itemFromIndex(index).type() == QtGui.QStandardItem.UserType + 101 190 214 215 def isAGroupItem(self, index): 216 return self.itemFromIndex(index).type() == QtGui.QStandardItem.UserType + 102 217 191 218 def getContact(self, index): 192 219 return self.itemFromIndex(index).contact 220 221 def getContactByJID(self, contact_jid): 222 contact_jid = str(contact_jid) 223 if contact_jid in self.contact_items: 224 return self.contact_items[contact_jid].contact 225 226 def getContactItem(self, index): 227 return self.itemFromIndex(index) 193 228 194 229 def hasContact(self, contact_jid): … … 201 236 return QtCore.QModelIndex() 202 237 238 def getGroup(self, index): 239 return self.itemFromIndex(index).group 240 203 241 def getGroupIndex(self, group): 204 242 if group in self.group_items: … … 207 245 return QtCore.QModelIndex() 208 246 209 def getGroup (self, group):247 def getGroupItem(self, group): 210 248 if group in self.group_items: 211 249 return self.group_items[group] … … 229 267 if contact.groups: 230 268 for group in contact.groups: 231 groupItem = self.getGroup (group)269 groupItem = self.getGroupItem(group) 232 270 groupItem.appendRow(item) 233 271 else: oss/jlib/jlib/gui/contact.py
r713 r714 6 6 jlibContactModel, jlibPresence, jlibPresenceComponent 7 7 from jlib.gui.subscriptiondialog import jlibSubscriptionDialog 8 from jlib.gui.groupdialog import jlibNewGroupDialog 8 9 9 10 __all__ = ['jlibContactWidget'] … … 18 19 19 20 self.contacts.contextMenuEvent = self.contextMenuEvent 21 self.contacts.dragEnterEvent = self.dragEnterEvent 20 22 21 23 self.contact = jlibContact(parent=self) … … 97 99 self.presence.emit(QtCore.SIGNAL("requestSubscription(PyQt_PyObject)"), contact_jid) 98 100 101 def createNewGroup(self): 102 ui = jlibNewGroupDialog() 103 ui.show() 104 if ui.exec_() == QtGui.QDialog.Accepted: 105 model = self.contacts.model() 106 model.setGroup(str(ui.group.text())) 107 99 108 def contextMenuEvent(self, event): 100 109 menu = QtGui.QMenu(self.parent()) … … 104 113 menu.addAction(actionUnsub) 105 114 106 actionSub = QtGui.QAction(QtCore.QString("Subscribe to contact ..."), self.parent())115 actionSub = QtGui.QAction(QtCore.QString("Subscribe to contact"), self.parent()) 107 116 QtCore.QObject.connect(actionSub, QtCore.SIGNAL("triggered()"), self.subscribeToContact) 108 117 menu.addAction(actionSub) 109 118 119 actionNewGroup = QtGui.QAction(QtCore.QString("Add a new group"), self.parent()) 120 QtCore.QObject.connect(actionNewGroup, QtCore.SIGNAL("triggered()"), self.createNewGroup) 121 menu.addAction(actionNewGroup) 122 110 123 menu.exec_(event.globalPos()) 111 124 125 def dragEnterEvent(self, event): 126 data = event.mimeData() 127 if not data.hasFormat('text/uri-list'): 128 event.ignore() 129 return 130 131 model = self.contacts.model() 132 index = self.contacts.indexAt(event.pos()) 133 parentIndex = index.parent() 134 if parentIndex.isValid() and model.isAGroupItem(parentIndex): 135 group = model.getGroup(parentIndex) 136 contact = model.getContact(index) 137 if group in contact.groups: 138 contact.groups.remove(group) 139 140 event.accept() 141 142 def dropEvent(self, event): 143 model = self.contacts.model() 144 145 index = self.contacts.indexAt(event.pos()) 146 parentIndex = index.parent() 147 group = model.getGroup(parentIndex) 148 149 urls = event.data().urls() 150 for url in urls: 151 xmppUrl = str(url.toString()) 152 jid = xmppUrl[5:] 153 contact = model.getContactByJID(jid) 154 contact.groups.append(group) 155 156 print contact.groups 157 158 159 oss/jlib/jlib/gui/contactui.py
r709 r714 1 1 # -*- coding: utf-8 -*- 2 2 3 # Form implementation generated from reading ui file ' designer/ui/contacts.ui'3 # Form implementation generated from reading ui file 'contacts.ui' 4 4 # 5 # Created: Sun Jul 6 12:03:4020086 # by: PyQt4 UI code generator 4. 3.35 # Created: Thu Jul 10 17:31:17 2008 6 # by: PyQt4 UI code generator 4.4.2 7 7 # 8 8 # WARNING! All changes made in this file will be lost! … … 13 13 def setupUi(self, jlibContacts): 14 14 jlibContacts.setObjectName("jlibContacts") 15 jlibContacts.resize(QtCore.QSize(QtCore.QRect(0,0,324,416).size()).expandedTo(jlibContacts.minimumSizeHint())) 16 15 jlibContacts.resize(324,416) 17 16 self.contacts = QtGui.QTreeView(jlibContacts) 18 17 self.contacts.setGeometry(QtCore.QRect(4,4,316,408)) 18 self.contacts.setDragEnabled(True) 19 self.contacts.setDragDropMode(QtGui.QAbstractItemView.InternalMove) 20 self.contacts.setAlternatingRowColors(True) 19 21 self.contacts.setObjectName("contacts") 20 22 oss/jlib/jlib/gui/subscriptiondialog.py
r712 r714 4 4 from jlib.gui.subscriptiondialogui import Ui_jlibsubscriptiondialog 5 5 6 __all__ = ['jlibSubscriptionDialog'] 7 6 8 class jlibSubscriptionDialog(QtGui.QDialog, Ui_jlibsubscriptiondialog): 7 9 def __init__(self, parent=None): 8 10 QtGui.QDialog.__init__(self, parent) 9 self.setupUi(parent=self) 10 11 def setupUi(self, parent=None): 12 Ui_jlibsubscriptiondialog.setupUi(self, parent) 11 self.setupUi(self)
