ui: statuses

This commit is contained in:
ingvar1995 2016-06-16 11:59:30 +03:00
parent 5c4bfceee7
commit 96705ed1cc
12 changed files with 30 additions and 40 deletions

View File

@ -64,8 +64,8 @@ class Contact(object):
return self._status return self._status
def set_status(self, value): def set_status(self, value):
self._widget.connection_status.data = self._status = value self._status = value
self._widget.connection_status.repaint() self._widget.connection_status.update(value)
status = property(get_status, set_status) status = property(get_status, set_status)

View File

@ -188,12 +188,12 @@ class Friend(contact.Contact):
return self._new_messages return self._new_messages
def inc_messages(self): def inc_messages(self):
self._widget.connection_status.messages = self._new_messages + 1 self._new_messages += 1
self._widget.connection_status.repaint() self._widget.connection_status.update(self.status, True)
def reset_messages(self): def reset_messages(self):
self._widget.connection_status.messages = self._new_messages = 0 self._new_messages = 0
self._widget.connection_status.repaint() self._widget.connection_status.update(self.status, False)
messages = property(get_messages) messages = property(get_messages)

BIN
src/images/busy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

BIN
src/images/idle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

BIN
src/images/offline.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

BIN
src/images/online.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

View File

@ -140,6 +140,8 @@ class MessageItem(QtGui.QWidget):
def mark_as_sent(self): def mark_as_sent(self):
if hasattr(self, 't'): if hasattr(self, 't'):
self.time.setText(self.t) self.time.setText(self.t)
self.time.repaint()
del self.t
return True return True
return False return False
@ -170,7 +172,7 @@ class ContactItem(QtGui.QWidget):
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(220, 5, 32, 32)) self.connection_status.setGeometry(QtCore.QRect(243, 5, 32, 32))
self.connection_status.setObjectName("connection_status") self.connection_status.setObjectName("connection_status")
@ -178,40 +180,30 @@ class StatusCircle(QtGui.QWidget):
""" """
Connection status Connection status
""" """
# TODO: rewrite
def __init__(self, parent): def __init__(self, parent):
QtGui.QWidget.__init__(self, parent) QtGui.QWidget.__init__(self, parent)
self.setGeometry(0, 0, 32, 32) self.setGeometry(0, 0, 32, 32)
self.data = None self.label = QtGui.QLabel(self)
self.messages = False self.label.setGeometry(QtCore.QRect(0, 0, 32, 32))
self.unread = False
def paintEvent(self, event): def update(self, status, unread_messages=None):
paint = QtGui.QPainter() if unread_messages is None:
paint.begin(self) unread_messages = self.unread
paint.setRenderHint(QtGui.QPainter.Antialiasing)
k = 16
rad_x = rad_y = 5
if self.data is None:
color = QtCore.Qt.transparent
else: else:
if self.data == TOX_USER_STATUS['NONE']: self.unread = unread_messages
color = QtGui.QColor(50, 205, 50) if status == TOX_USER_STATUS['NONE']:
elif self.data == TOX_USER_STATUS['AWAY']: name = 'online'
color = QtGui.QColor(255, 200, 50) elif status == TOX_USER_STATUS['AWAY']:
else: # self.data == TOX_USER_STATUS['BUSY']: name = 'idle'
color = QtGui.QColor(255, 50, 0) elif status == TOX_USER_STATUS['BUSY']:
name = 'busy'
paint.setPen(color) else:
center = QtCore.QPoint(k, k) name = 'offline'
paint.setBrush(color) if unread_messages:
paint.drawEllipse(center, rad_x, rad_y) name += '_notification'
if self.messages: pixmap = QtGui.QPixmap(curr_directory() + '/images/{}.png'.format(name))
if color == QtCore.Qt.transparent: self.label.setPixmap(pixmap)
color = QtCore.Qt.darkRed
paint.setBrush(QtCore.Qt.transparent)
paint.setPen(color)
paint.drawEllipse(center, rad_x + 3, rad_y + 3)
paint.end()
class FileTransferItem(QtGui.QListWidget): class FileTransferItem(QtGui.QListWidget):
@ -376,6 +368,7 @@ class UnsentFileItem(FileTransferItem):
super(UnsentFileItem, self).__init__(file_name, size, time, user, -1, -1, super(UnsentFileItem, self).__init__(file_name, size, time, user, -1, -1,
FILE_TRANSFER_MESSAGE_STATUS['PAUSED_BY_FRIEND'], width, parent) FILE_TRANSFER_MESSAGE_STATUS['PAUSED_BY_FRIEND'], width, parent)
self._time = time self._time = time
self.pb.setVisible(False)
def cancel_transfer(self, *args): def cancel_transfer(self, *args):
pr = profile.Profile.get_instance() pr = profile.Profile.get_instance()

View File

@ -183,10 +183,7 @@ class MainWindow(QtGui.QMainWindow):
Form.status_message.setFont(font) Form.status_message.setFont(font)
Form.status_message.setObjectName("status_message") Form.status_message.setObjectName("status_message")
self.connection_status = Form.connection_status = StatusCircle(Form) self.connection_status = Form.connection_status = StatusCircle(Form)
Form.connection_status.setGeometry(QtCore.QRect(230, 29, 64, 64)) Form.connection_status.setGeometry(QtCore.QRect(245, 35, 32, 32))
Form.connection_status.setMinimumSize(QtCore.QSize(32, 32))
Form.connection_status.setMaximumSize(QtCore.QSize(32, 32))
Form.connection_status.setBaseSize(QtCore.QSize(32, 32))
self.avatar_label.mouseReleaseEvent = self.profile_settings self.avatar_label.mouseReleaseEvent = self.profile_settings
self.status_message.mouseReleaseEvent = self.profile_settings self.status_message.mouseReleaseEvent = self.profile_settings
self.name.mouseReleaseEvent = self.profile_settings self.name.mouseReleaseEvent = self.profile_settings