ui updates: messages #3, friend's avatars and aliases
This commit is contained in:
parent
f4ba65b79d
commit
fca6a926b4
3 changed files with 55 additions and 34 deletions
|
@ -29,7 +29,8 @@ class MessageEdit(QtGui.QPlainTextEdit):
|
||||||
print 'lines ', lines
|
print 'lines ', lines
|
||||||
if self.document().blockCount() == 1:
|
if self.document().blockCount() == 1:
|
||||||
lines += 1
|
lines += 1
|
||||||
self.setFixedHeight(max(lines * 15, 30))
|
size = (lines - 1) * 18 + 12
|
||||||
|
self.setFixedHeight(max(size, 30))
|
||||||
self.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse | QtCore.Qt.LinksAccessibleByMouse)
|
self.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse | QtCore.Qt.LinksAccessibleByMouse)
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,18 +41,18 @@ class MessageItem(QtGui.QListWidget):
|
||||||
def __init__(self, text, time, user='', message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None):
|
def __init__(self, text, time, user='', message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None):
|
||||||
QtGui.QListWidget.__init__(self, parent)
|
QtGui.QListWidget.__init__(self, parent)
|
||||||
self.name = QtGui.QLabel(self)
|
self.name = QtGui.QLabel(self)
|
||||||
self.name.setGeometry(QtCore.QRect(0, 0, 50, 25))
|
self.name.setGeometry(QtCore.QRect(5, 0, 95, 30))
|
||||||
self.name.setTextFormat(QtCore.Qt.PlainText)
|
self.name.setTextFormat(QtCore.Qt.PlainText)
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily("Times New Roman")
|
font.setFamily("Times New Roman")
|
||||||
font.setPointSize(12)
|
font.setPointSize(10)
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
self.name.setFont(font)
|
self.name.setFont(font)
|
||||||
self.name.setObjectName("name")
|
self.name.setObjectName("name")
|
||||||
self.name.setText(user)
|
self.name.setText(user)
|
||||||
|
|
||||||
self.time = QtGui.QLabel(self)
|
self.time = QtGui.QLabel(self)
|
||||||
self.time.setGeometry(QtCore.QRect(450, 0, 50, 25))
|
self.time.setGeometry(QtCore.QRect(parent.width() - 50, 0, 50, 25))
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily("Times New Roman")
|
font.setFamily("Times New Roman")
|
||||||
font.setPointSize(10)
|
font.setPointSize(10)
|
||||||
|
@ -60,9 +61,10 @@ class MessageItem(QtGui.QListWidget):
|
||||||
self.time.setObjectName("time")
|
self.time.setObjectName("time")
|
||||||
self.time.setText(time)
|
self.time.setText(time)
|
||||||
|
|
||||||
self.message = MessageEdit(text, parent.width() - 100, self)
|
self.message = MessageEdit(text, parent.width() - 150, self)
|
||||||
self.message.setGeometry(QtCore.QRect(50, 0, parent.width() - 100, self.message.height()))
|
self.message.setGeometry(QtCore.QRect(100, 0, parent.width() - 150, self.message.height()))
|
||||||
self.h = self.message.height()
|
self.h = self.message.height()
|
||||||
|
print 'self.h ', self.h
|
||||||
self.setFixedHeight(self.getHeight())
|
self.setFixedHeight(self.getHeight())
|
||||||
|
|
||||||
self.message.setFrameShape(QtGui.QFrame.NoFrame)
|
self.message.setFrameShape(QtGui.QFrame.NoFrame)
|
||||||
|
@ -89,11 +91,12 @@ class ContactItem(QtGui.QListWidget):
|
||||||
"""
|
"""
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QtGui.QListWidget.__init__(self, parent)
|
QtGui.QListWidget.__init__(self, parent)
|
||||||
# self.setMinimumSize(QtCore.QSize(250, 50))
|
self.setBaseSize(QtCore.QSize(250, 70))
|
||||||
# self.setMaximumSize(QtCore.QSize(250, 50))
|
self.avatar_label = QtGui.QLabel(self)
|
||||||
self.setBaseSize(QtCore.QSize(250, 50))
|
self.avatar_label.setGeometry(QtCore.QRect(3, 3, 64, 64))
|
||||||
|
self.avatar_label.setScaledContents(True)
|
||||||
self.name = QtGui.QLabel(self)
|
self.name = QtGui.QLabel(self)
|
||||||
self.name.setGeometry(QtCore.QRect(80, 10, 191, 25))
|
self.name.setGeometry(QtCore.QRect(70, 10, 170, 25))
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily("Times New Roman")
|
font.setFamily("Times New Roman")
|
||||||
font.setPointSize(12)
|
font.setPointSize(12)
|
||||||
|
@ -101,18 +104,16 @@ class ContactItem(QtGui.QListWidget):
|
||||||
self.name.setFont(font)
|
self.name.setFont(font)
|
||||||
self.name.setObjectName("name")
|
self.name.setObjectName("name")
|
||||||
self.status_message = QtGui.QLabel(self)
|
self.status_message = QtGui.QLabel(self)
|
||||||
self.status_message.setGeometry(QtCore.QRect(80, 30, 191, 17))
|
self.status_message.setGeometry(QtCore.QRect(70, 30, 180, 20))
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily("Times New Roman")
|
|
||||||
font.setPointSize(10)
|
font.setPointSize(10)
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
self.status_message.setFont(font)
|
self.status_message.setFont(font)
|
||||||
self.status_message.setObjectName("status_message")
|
self.status_message.setObjectName("status_message")
|
||||||
self.connection_status = StatusCircle(self)
|
self.connection_status = StatusCircle(self)
|
||||||
self.connection_status.setGeometry(QtCore.QRect(200, 5, 16, 16))
|
self.connection_status.setGeometry(QtCore.QRect(218, 5, 32, 32))
|
||||||
self.connection_status.setMinimumSize(QtCore.QSize(32, 32))
|
# self.connection_status.setMinimumSize(QtCore.QSize(32, 32))
|
||||||
self.connection_status.setMaximumSize(QtCore.QSize(32, 32))
|
# self.connection_status.setMaximumSize(QtCore.QSize(32, 32))
|
||||||
self.connection_status.setBaseSize(QtCore.QSize(32, 32))
|
# self.connection_status.setBaseSize(QtCore.QSize(32, 32))
|
||||||
self.connection_status.setObjectName("connection_status")
|
self.connection_status.setObjectName("connection_status")
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,11 +137,11 @@ class StatusCircle(QtGui.QWidget):
|
||||||
color = QtCore.Qt.transparent
|
color = QtCore.Qt.transparent
|
||||||
else:
|
else:
|
||||||
if self.data == TOX_USER_STATUS['NONE']:
|
if self.data == TOX_USER_STATUS['NONE']:
|
||||||
color = QtCore.Qt.darkGreen
|
color = QtGui.QColor(50, 205, 50)
|
||||||
elif self.data == TOX_USER_STATUS['AWAY']:
|
elif self.data == TOX_USER_STATUS['AWAY']:
|
||||||
color = QtCore.Qt.yellow
|
color = QtGui.QColor(255, 200, 50)
|
||||||
else: # self.data == TOX_USER_STATUS['BUSY']:
|
else: # self.data == TOX_USER_STATUS['BUSY']:
|
||||||
color = QtCore.Qt.darkRed
|
color = QtGui.QColor(255, 50, 0)
|
||||||
|
|
||||||
paint.setPen(color)
|
paint.setPen(color)
|
||||||
center = QtCore.QPoint(k, k)
|
center = QtCore.QPoint(k, k)
|
||||||
|
@ -151,5 +152,5 @@ class StatusCircle(QtGui.QWidget):
|
||||||
color = QtCore.Qt.darkRed
|
color = QtCore.Qt.darkRed
|
||||||
paint.setBrush(QtCore.Qt.transparent)
|
paint.setBrush(QtCore.Qt.transparent)
|
||||||
paint.setPen(color)
|
paint.setPen(color)
|
||||||
paint.drawEllipse(center, rad_x + 5, rad_y + 5)
|
paint.drawEllipse(center, rad_x + 3, rad_y + 3)
|
||||||
paint.end()
|
paint.end()
|
||||||
|
|
|
@ -140,7 +140,7 @@ class MainWindow(QtGui.QMainWindow):
|
||||||
Form.name.setFont(font)
|
Form.name.setFont(font)
|
||||||
Form.name.setObjectName("name")
|
Form.name.setObjectName("name")
|
||||||
self.status_message = Form.status_message = QtGui.QLabel(Form)
|
self.status_message = Form.status_message = QtGui.QLabel(Form)
|
||||||
Form.status_message.setGeometry(QtCore.QRect(80, 60, 191, 17))
|
Form.status_message.setGeometry(QtCore.QRect(80, 60, 190, 20))
|
||||||
font.setPointSize(12)
|
font.setPointSize(12)
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
Form.status_message.setFont(font)
|
Form.status_message.setFont(font)
|
||||||
|
@ -154,12 +154,12 @@ class MainWindow(QtGui.QMainWindow):
|
||||||
|
|
||||||
def setup_right_top(self, Form):
|
def setup_right_top(self, Form):
|
||||||
Form.setObjectName("Form")
|
Form.setObjectName("Form")
|
||||||
Form.resize(495, 111)
|
Form.resize(650, 300)
|
||||||
self.account_avatar = QtGui.QLabel(Form)
|
self.account_avatar = QtGui.QLabel(Form)
|
||||||
self.account_avatar.setGeometry(QtCore.QRect(10, 20, 64, 64))
|
self.account_avatar.setGeometry(QtCore.QRect(10, 20, 64, 64))
|
||||||
self.account_avatar.setScaledContents(True)
|
self.account_avatar.setScaledContents(True)
|
||||||
self.account_name = QtGui.QLabel(Form)
|
self.account_name = QtGui.QLabel(Form)
|
||||||
self.account_name.setGeometry(QtCore.QRect(100, 30, 300, 25))
|
self.account_name.setGeometry(QtCore.QRect(100, 30, 400, 25))
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily("Times New Roman")
|
font.setFamily("Times New Roman")
|
||||||
font.setPointSize(14)
|
font.setPointSize(14)
|
||||||
|
@ -167,13 +167,13 @@ class MainWindow(QtGui.QMainWindow):
|
||||||
self.account_name.setFont(font)
|
self.account_name.setFont(font)
|
||||||
self.account_name.setObjectName("account_name")
|
self.account_name.setObjectName("account_name")
|
||||||
self.account_status = QtGui.QLabel(Form)
|
self.account_status = QtGui.QLabel(Form)
|
||||||
self.account_status.setGeometry(QtCore.QRect(100, 50, 300, 25))
|
self.account_status.setGeometry(QtCore.QRect(100, 50, 400, 25))
|
||||||
font.setPointSize(12)
|
font.setPointSize(12)
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
self.account_status.setFont(font)
|
self.account_status.setFont(font)
|
||||||
self.account_status.setObjectName("account_status")
|
self.account_status.setObjectName("account_status")
|
||||||
self.callButton = QtGui.QPushButton(Form)
|
self.callButton = QtGui.QPushButton(Form)
|
||||||
self.callButton.setGeometry(QtCore.QRect(400, 30, 100, 30))
|
self.callButton.setGeometry(QtCore.QRect(550, 30, 75, 30))
|
||||||
self.callButton.setObjectName("callButton")
|
self.callButton.setObjectName("callButton")
|
||||||
self.callButton.setText(QtGui.QApplication.translate("Form", "Start call", None, QtGui.QApplication.UnicodeUTF8))
|
self.callButton.setText(QtGui.QApplication.translate("Form", "Start call", None, QtGui.QApplication.UnicodeUTF8))
|
||||||
QtCore.QMetaObject.connectSlotsByName(Form)
|
QtCore.QMetaObject.connectSlotsByName(Form)
|
||||||
|
@ -187,7 +187,7 @@ class MainWindow(QtGui.QMainWindow):
|
||||||
item = ContactItem()
|
item = ContactItem()
|
||||||
elem = QtGui.QListWidgetItem(self.friends_list)
|
elem = QtGui.QListWidgetItem(self.friends_list)
|
||||||
print item.sizeHint()
|
print item.sizeHint()
|
||||||
elem.setSizeHint(QtCore.QSize(250, 50))
|
elem.setSizeHint(QtCore.QSize(250, 70))
|
||||||
self.friends_list.addItem(elem)
|
self.friends_list.addItem(elem)
|
||||||
self.friends_list.setItemWidget(elem, item)
|
self.friends_list.setItemWidget(elem, item)
|
||||||
widgets.append(item)
|
widgets.append(item)
|
||||||
|
@ -196,12 +196,12 @@ class MainWindow(QtGui.QMainWindow):
|
||||||
|
|
||||||
def setup_right_center(self, widget):
|
def setup_right_center(self, widget):
|
||||||
self.messages = QtGui.QListWidget(widget)
|
self.messages = QtGui.QListWidget(widget)
|
||||||
self.messages.setGeometry(0, 0, 500, 250)
|
self.messages.setGeometry(0, 0, 600, 250)
|
||||||
|
|
||||||
def initUI(self):
|
def initUI(self):
|
||||||
self.setMinimumSize(800, 550)
|
self.setMinimumSize(900, 550)
|
||||||
self.setMaximumSize(800, 550)
|
self.setMaximumSize(900, 550)
|
||||||
self.setGeometry(400, 400, 800, 550)
|
self.setGeometry(400, 400, 900, 550)
|
||||||
self.setWindowTitle('Toxygen')
|
self.setWindowTitle('Toxygen')
|
||||||
main = QtGui.QWidget()
|
main = QtGui.QWidget()
|
||||||
grid = QtGui.QGridLayout()
|
grid = QtGui.QGridLayout()
|
||||||
|
|
|
@ -62,7 +62,7 @@ class Contact(object):
|
||||||
widget.name.setText(name)
|
widget.name.setText(name)
|
||||||
widget.status_message.setText(status_message)
|
widget.status_message.setText(status_message)
|
||||||
self._tox_id = tox_id
|
self._tox_id = tox_id
|
||||||
# self.load_avatar()
|
self.load_avatar()
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# name - current name or alias of user
|
# name - current name or alias of user
|
||||||
|
@ -139,11 +139,23 @@ class Friend(Contact):
|
||||||
self._number = number
|
self._number = number
|
||||||
self._new_messages = False
|
self._new_messages = False
|
||||||
self._visible = True
|
self._visible = True
|
||||||
|
self._alias = False
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.set_visibility(False)
|
self.set_visibility(False)
|
||||||
del self._widget
|
del self._widget
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
# Alias support
|
||||||
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def set_name(self, value):
|
||||||
|
if not self._alias:
|
||||||
|
super(self.__class__, self).set_name(value)
|
||||||
|
|
||||||
|
def set_alias(self, alias):
|
||||||
|
self._alias = bool(alias)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Visibility in friends' list
|
# Visibility in friends' list
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -200,14 +212,22 @@ class Profile(Contact, Singleton):
|
||||||
self._name = tox.self_get_name()
|
self._name = tox.self_get_name()
|
||||||
self._status_message = tox.self_get_status_message()
|
self._status_message = tox.self_get_status_message()
|
||||||
self._status = None
|
self._status = None
|
||||||
|
settings = Settings.get_instance()
|
||||||
self.show_online = Settings.get_instance()['show_online_friends']
|
self.show_online = Settings.get_instance()['show_online_friends']
|
||||||
|
aliases = settings['friends_aliases']
|
||||||
data = tox.self_get_friend_list()
|
data = tox.self_get_friend_list()
|
||||||
self._friends, num, self._active_friend = [], 0, -1
|
self._friends, num, self._active_friend = [], 0, -1
|
||||||
for i in data:
|
for i in data:
|
||||||
tox_id = tox.friend_get_public_key(i)
|
tox_id = tox.friend_get_public_key(i)
|
||||||
name = tox.friend_get_name(i) or tox_id
|
try:
|
||||||
|
alias = filter(lambda x: x[0] == tox_id, aliases)[0][1]
|
||||||
|
except:
|
||||||
|
alias = ''
|
||||||
|
name = alias or tox.friend_get_name(i) or tox_id
|
||||||
status_message = tox.friend_get_status_message(i)
|
status_message = tox.friend_get_status_message(i)
|
||||||
self._friends.append(Friend(i, name, status_message, widgets[num], tox_id))
|
friend = Friend(i, name, status_message, widgets[num], tox_id)
|
||||||
|
friend.set_alias(alias)
|
||||||
|
self._friends.append(friend)
|
||||||
num += 1
|
num += 1
|
||||||
self.set_name(tox.self_get_name().encode('utf-8'))
|
self.set_name(tox.self_get_name().encode('utf-8'))
|
||||||
self.set_status_message(tox.self_get_status_message().encode('utf-8'))
|
self.set_status_message(tox.self_get_status_message().encode('utf-8'))
|
||||||
|
|
Loading…
Reference in a new issue