last message on top (and send box on top too)

This commit is contained in:
Romain Bignon 2010-07-12 23:55:22 +02:00
commit 6ccc3c0dff
2 changed files with 42 additions and 33 deletions

View file

@ -32,6 +32,10 @@ from .ui.thread_message_ui import Ui_ThreadMessage
from .ui.profile_ui import Ui_Profile from .ui.profile_ui import Ui_Profile
class ThreadMessage(QFrame): class ThreadMessage(QFrame):
"""
This class represents a message in the thread tab.
"""
def __init__(self, message, parent=None): def __init__(self, message, parent=None):
QFrame.__init__(self, parent) QFrame.__init__(self, parent)
self.ui = Ui_ThreadMessage() self.ui = Ui_ThreadMessage()
@ -48,6 +52,10 @@ class ThreadMessage(QFrame):
self.ui.contentLabel.setText(content) self.ui.contentLabel.setText(content)
class ContactThread(QWidget): class ContactThread(QWidget):
"""
The thread of the selected contact.
"""
def __init__(self, weboob, contact, parent=None): def __init__(self, weboob, contact, parent=None):
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.ui = Ui_ContactThread() self.ui = Ui_ContactThread()
@ -72,15 +80,15 @@ class ContactThread(QWidget):
def gotMessage(self, backend, message): def gotMessage(self, backend, message):
if not message: if not message:
v = self.ui.scrollArea.verticalScrollBar() #v = self.ui.scrollArea.verticalScrollBar()
print v.minimum(), v.value(), v.maximum(), v.sliderPosition() #print v.minimum(), v.value(), v.maximum(), v.sliderPosition()
self.ui.scrollArea.verticalScrollBar().setValue(self.ui.scrollArea.verticalScrollBar().maximum()) #self.ui.scrollArea.verticalScrollBar().setValue(self.ui.scrollArea.verticalScrollBar().maximum())
self.process_msg = None self.process_msg = None
return return
widget = ThreadMessage(message) widget = ThreadMessage(message)
for i, m in enumerate(self.messages): for i, m in enumerate(self.messages):
if widget.date < m.date: if widget.date > m.date:
self.ui.scrollAreaContent.layout().insertWidget(i, widget) self.ui.scrollAreaContent.layout().insertWidget(i, widget)
self.messages.insert(i, widget) self.messages.insert(i, widget)
return return
@ -92,22 +100,23 @@ class ContactThread(QWidget):
text = unicode(self.ui.textEdit.toPlainText()) text = unicode(self.ui.textEdit.toPlainText())
self.ui.textEdit.setEnabled(False) self.ui.textEdit.setEnabled(False)
self.ui.sendButton.setEnabled(False) self.ui.sendButton.setEnabled(False)
self.process_reply = QtDo(self.weboob, self.replyPosted, self.replyNotPosted) self.process_reply = QtDo(self.weboob, self._postReply_cb, self._postReply_eb)
self.process_reply.do_backends(self.contact.backend, 'post_reply', self.contact.id, 0, '', text) self.process_reply.do_backends(self.contact.backend, 'post_reply', self.contact.id, 0, '', text)
def replyPosted(self, backend, ignored): def _postReply_cb(self, backend, ignored):
self.ui.textEdit.clear() self.ui.textEdit.clear()
self.ui.textEdit.setEnabled(True) self.ui.textEdit.setEnabled(True)
self.ui.sendButton.setEnabled(True) self.ui.sendButton.setEnabled(True)
self.refreshMessages() self.refreshMessages()
self.process_reply = None self.process_reply = None
def replyNotPosted(self, backend, error, backtrace): def _postReply_eb(self, backend, error, backtrace):
content = unicode(self.tr('Unable to send message:\n%s\n')) % error content = unicode(self.tr('Unable to send message:\n%s\n')) % error
if logging.root.level == logging.DEBUG: if logging.root.level == logging.DEBUG:
content += '\n%s\n' % backtrace content += '\n%s\n' % backtrace
QMessageBox.critical(self, self.tr('Error while posting reply'), QMessageBox.critical(self, self.tr('Error while posting reply'),
content, QMessageBox.Ok) content, QMessageBox.Ok)
self.process_reply = None
class ContactProfile(QWidget): class ContactProfile(QWidget):
def __init__(self, weboob, contact, parent=None): def __init__(self, weboob, contact, parent=None):

View file

@ -19,6 +19,32 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QTextEdit" name="textEdit"/>
</item>
<item>
<widget class="QPushButton" name="sendButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Send</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QScrollArea" name="scrollArea"> <widget class="QScrollArea" name="scrollArea">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@ -55,32 +81,6 @@
<layout class="QVBoxLayout" name="verticalLayout_2"/> <layout class="QVBoxLayout" name="verticalLayout_2"/>
</widget> </widget>
</widget> </widget>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QTextEdit" name="textEdit"/>
</item>
<item>
<widget class="QPushButton" name="sendButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Send</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget> </widget>
</item> </item>
</layout> </layout>