ui update - messages #3

This commit is contained in:
ingvar1995 2016-03-05 15:44:52 +03:00
parent 374f474b14
commit 7622ecbda7
3 changed files with 33 additions and 15 deletions

View file

@ -4,7 +4,7 @@ from PySide import QtGui, QtCore
class MessageEdit(QtGui.QPlainTextEdit):
def __init__(self, text='', parent=None):
def __init__(self, text, width, parent=None):
super(MessageEdit, self).__init__(parent)
self.setWordWrapMode(QtGui.QTextOption.WrapAtWordBoundaryOrAnywhere)
@ -12,22 +12,25 @@ class MessageEdit(QtGui.QPlainTextEdit):
self.document().setTextWidth(parent.width() - 100)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(10)
font.setPixelSize(12)
font.setBold(False)
self.setFont(font)
lines = prev = 0
lines = 0
fm = QtGui.QFontMetrics(font)
try:
for elem in xrange(self.document().blockCount()):
pos = self.document().findBlockByLineNumber(elem).position()
lines += (pos - prev) // 55 + 1
prev = pos
block = self.document().findBlockByLineNumber(elem)
l = block.length()
line_width = fm.width(block.text())
print 'Width: ', line_width
print 'Parent width', parent.width()
lines += line_width // width + 1
except:
print 'updateSize failed'
print 'lines ', lines
self.setFixedHeight(max(lines * 18, 30))
self.setMinimumHeight(max(lines * 18, 30))
self.setMaximumHeight(max(lines * 18, 30))
if self.document().blockCount() == 1:
lines += 1
self.setFixedHeight(max(lines * 15, 30))
self.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse | QtCore.Qt.LinksAccessibleByMouse)
@ -49,7 +52,7 @@ class MessageItem(QtGui.QListWidget):
self.name.setText(user)
self.time = QtGui.QLabel(self)
self.time.setGeometry(QtCore.QRect(450, 0, 50, 50))
self.time.setGeometry(QtCore.QRect(450, 0, 50, 25))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(10)
@ -58,7 +61,7 @@ class MessageItem(QtGui.QListWidget):
self.time.setObjectName("time")
self.time.setText(time)
self.message = MessageEdit(text, self)
self.message = MessageEdit(text, parent.width() - 100, self)
self.message.setGeometry(QtCore.QRect(50, 0, parent.width() - 100, self.message.height()))
self.h = self.message.height()
self.setFixedHeight(self.getHeight())

View file

@ -5,6 +5,19 @@ from profile import *
from list_items import *
class MessageArea(QtGui.QPlainTextEdit):
def __init__(self, parent, form):
super(MessageArea, self).__init__(parent)
self.parent = form
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Return:
self.parent.send_message()
else:
super(self.__class__, self).keyPressEvent(event)
class MainWindow(QtGui.QMainWindow):
def __init__(self, tox):
@ -77,7 +90,7 @@ class MainWindow(QtGui.QMainWindow):
Form.setObjectName("right_bottom")
Form.resize(500, 150)
Form.setMinimumSize(QtCore.QSize(100, 50))
self.messageEdit = QtGui.QTextEdit(Form)
self.messageEdit = MessageArea(Form, self)
self.messageEdit.setGeometry(QtCore.QRect(20, 20, 311, 111))
self.messageEdit.setObjectName("messageEdit")
self.screenshotButton = QtGui.QPushButton(Form)
@ -96,7 +109,7 @@ class MainWindow(QtGui.QMainWindow):
QtCore.QMetaObject.connectSlotsByName(Form)
def setup_left_bottom(self, Form):
Form.setObjectName("left_center")
Form.setObjectName("left_bottom")
Form.resize(500, 80)
self.online_contacts = QtGui.QCheckBox(Form)
self.online_contacts.setGeometry(QtCore.QRect(0, 20, 141, 22))
@ -286,3 +299,5 @@ class MainWindow(QtGui.QMainWindow):
def filtering(self):
self.profile.filtration(self.online_contacts.isChecked(), self.contact_name.text())

View file

@ -264,7 +264,7 @@ class Profile(Contact):
elem.setSizeHint(QtCore.QSize(500, item.getHeight()))
self._messages.addItem(elem)
self._messages.setItemWidget(elem, item)
self._messages.scrollToBottom()
#self._messages.scrollToBottom()
self._messages.repaint()
else:
friend = filter(lambda x: x.number == id, self._friends)[0]