messages are organised by threads

This commit is contained in:
Romain Bignon 2010-06-30 22:31:01 +02:00
commit da47636e98
2 changed files with 27 additions and 2 deletions

View file

@ -81,10 +81,26 @@ class MessagesManager(QWidget):
self.ui.backendsList.setEnabled(True)
return
item = QTreeWidgetItem(self.ui.messagesTree, [time.strftime('%Y-%m-%d %H:%M:%S', message.get_date().timetuple()),
item = QTreeWidgetItem(None, [time.strftime('%Y-%m-%d %H:%M:%S', message.get_date().timetuple()),
message.sender, message.title])
item.setData(0, Qt.UserRole, message)
self.ui.messagesTree.addTopLevelItem(item)
if not self._insertMessage(self.ui.messagesTree.invisibleRootItem(), item):
self.ui.messagesTree.addTopLevelItem(item)
def _insertMessage(self, top, item):
top_message = top.data(0, Qt.UserRole).toPyObject()
item_message = item.data(0, Qt.UserRole).toPyObject()
if top_message and top_message.thread_id == item_message.thread_id and top_message.id == item_message.reply_id:
top.addChild(item)
return True
else:
for i in xrange(top.childCount()):
sub = top.child(i)
if self._insertMessage(sub, item):
return True
return False
def _messageSelected(self, item, column):
message = item.data(0, Qt.UserRole).toPyObject()

View file

@ -32,6 +32,15 @@
<enum>Qt::Vertical</enum>
</property>
<widget class="QTreeWidget" name="messagesTree">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="animated">
<bool>true</bool>
</property>
<property name="headerHidden">
<bool>false</bool>
</property>
<attribute name="headerDefaultSectionSize">
<number>100</number>
</attribute>