From 96705ed1cc8c841bd2ffbe159cde3a47a33b1c5f Mon Sep 17 00:00:00 2001 From: ingvar1995 Date: Thu, 16 Jun 2016 11:59:30 +0300 Subject: [PATCH] ui: statuses --- src/contact.py | 4 +-- src/friend.py | 8 ++--- src/images/busy.png | Bin 0 -> 329 bytes src/images/busy_notification.png | Bin 0 -> 609 bytes src/images/idle.png | Bin 0 -> 231 bytes src/images/idle_notification.png | Bin 0 -> 405 bytes src/images/offline.png | Bin 0 -> 159 bytes src/images/offline_notification.png | Bin 0 -> 445 bytes src/images/online.png | Bin 0 -> 201 bytes src/images/online_notification.png | Bin 0 -> 351 bytes src/list_items.py | 53 ++++++++++++---------------- src/mainscreen.py | 5 +-- 12 files changed, 30 insertions(+), 40 deletions(-) create mode 100644 src/images/busy.png create mode 100644 src/images/busy_notification.png create mode 100644 src/images/idle.png create mode 100644 src/images/idle_notification.png create mode 100644 src/images/offline.png create mode 100644 src/images/offline_notification.png create mode 100644 src/images/online.png create mode 100644 src/images/online_notification.png diff --git a/src/contact.py b/src/contact.py index c957113..0691219 100644 --- a/src/contact.py +++ b/src/contact.py @@ -64,8 +64,8 @@ class Contact(object): return self._status def set_status(self, value): - self._widget.connection_status.data = self._status = value - self._widget.connection_status.repaint() + self._status = value + self._widget.connection_status.update(value) status = property(get_status, set_status) diff --git a/src/friend.py b/src/friend.py index 585a2bd..52e9ac7 100644 --- a/src/friend.py +++ b/src/friend.py @@ -188,12 +188,12 @@ class Friend(contact.Contact): return self._new_messages def inc_messages(self): - self._widget.connection_status.messages = self._new_messages + 1 - self._widget.connection_status.repaint() + self._new_messages += 1 + self._widget.connection_status.update(self.status, True) def reset_messages(self): - self._widget.connection_status.messages = self._new_messages = 0 - self._widget.connection_status.repaint() + self._new_messages = 0 + self._widget.connection_status.update(self.status, False) messages = property(get_messages) diff --git a/src/images/busy.png b/src/images/busy.png new file mode 100644 index 0000000000000000000000000000000000000000..857b3967e78e2ede8726580bce500f0ab163251e GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%70n@B z;4JWnEM{Qfy$-^RP8zc-7#J8NOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3 zkz!zAIOgf%7$PyX_kyh-Qy_!u!{YgkM`U-fE}xxsh;2i&yK{Q(YrO??rp?Nm6+U6Y zncEFMuFJhI$WF-k5T((o^5@R4)4F{*%olvsocC2ui($HPOK8RFDMk(qFOue*+#=MP zm>S_JVw5ZXn8#tZM7xphhCAP@{hOEFWZdJke7pJlc e*|d)LA9LlB#4^#?OUw)m3=E#GelF{r5}E+=X@0l> literal 0 HcmV?d00001 diff --git a/src/images/busy_notification.png b/src/images/busy_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..a01eb3ff6fc36c848de4332e792e40cb5342655f GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0VruY)k7lg8`{1_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&?|Hg7hFJ8jootvbQYdnyesen0HBH@|OKhHd?i9u=XkK}9S4^E_n&R>W%f9I7 z_?}uJuvLsHuCTh>>w{f`;q2gvTQY+2Fxi=cYmtX`6W&PgXmql6c8@$i*tSR1pGe)?ILq>|9u|=%m z^s(1p4=$M9w${Ak^~}%OzeKjlaoa0hP`w?VYR9mC^U2PsZtKgLHeAk&U-Re3Pp%!g z8#P`U@7ynK%h|Q%d-mUdhL)=jBu4UFc=6S5)5%WJ2NUL8RhnP>FpD9?|ME1OY#W{K z(`v^KUykAO{dy>J(S@R0IlA+YcAFn?Pt{>?J8Iv5*>1U?Wow#{(JaZG%Q-e|yQz{EjrrIztFq(V1IEGZ*S~K}!;9&!v*10ikCpda0$Z(tFOyKlT zV<{Gm8Q+^P5EbgH6 z%Z9UzHzLzshTUphY5XqdOnRgA-1SplYhEwZvovp5J89p7M78YGJ|AQ>ocw>X**&Z_ zT=2!&>WP6bm)Qk}XRJAg_8m08Am6?I(~G`^w}W~7Jk}gk6+P>#cgH_c^TFx6(~V3l z`gsafzaJ@XZ9Q;m)s(G|R@P0HH8wQA&B14}E$N<%f4TRW@5eTuPqEx=TljtNxvk&U zpDeZ6*5=5iZ{DW1t*6MnGJ92_`9Cj-r{DhDU5?-Pc{>9$gX{O+Rc9ae{bFEXVDNPH Kb6Mw<&;$T=P_9P+ literal 0 HcmV?d00001 diff --git a/src/images/offline.png b/src/images/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..70a863b740b4c62dacb9b2c7fbed0444d718a3e4 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0VruY)k7lg8`{1_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&WISCQLo9le|NQ@N&#cELo9mNPWJU;b`)^Cf4#OPM)9`735gSueX%;i91p8N=>nc}f2*PWI}e?QD^`~L0Ky?3OKB^&qf zO+R_xl`l`w`eK^&xs&A#{o(ndk_xGNC%@le^7iC;YklQZ^+QJNDf2JKwLeM8i~Xq1 zx8joZdegTe~DWM4fMa8n? literal 0 HcmV?d00001 diff --git a/src/images/online.png b/src/images/online.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5f40af916a22aa6ab0cc917757f4e0d4124d96 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7w|f;uunKD=DR+X%Dj}uY;C+2kQbS`GyK50sk3K z4Bj&hMkY`6Di@^VsrYLugC&r39IpqZsk`#mt9BbVvy$=)lKK`fuyYtNY?hJvu;6a)Q3eJE22WQ%mvv4FO#ohJ BJ|X}B literal 0 HcmV?d00001 diff --git a/src/images/online_notification.png b/src/images/online_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..6e85b155db7d98c4476db96881e5cc2563dede40 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFfw|&IEGZ*S`*yJ+vLDg)4^=eqShiPO#_F6Q(cK*XyEXQg1H2d%WUJ!v(9X#$Q5l+LvES z95I#SeQ^0IGxL4h)B9U56pJYAOkR-URnjo^!Ld^=787QOo|m4aZ6VB(?%*|FY2lPJ z4tz(Ru<*UtIi-6-aG&+!nA=PKbfm0Q5p1-!XG&n6b7jlir9lrAoAgfFZtAXD^-MRl zUgchSueH|WbHUFxE_|=H`<1zLiP7~_HZ{)2MBN%)XGMHgXfHbUY(=M`n9S~omF9ux z>ta;=j>IiF6rnOR=0oPxewo*AwDdn4|NU&epGAU!L#A@8i^h{>3=9kmp00i_>zopr E0Qf+Tb^rhX literal 0 HcmV?d00001 diff --git a/src/list_items.py b/src/list_items.py index 041d2d4..efdd6b3 100644 --- a/src/list_items.py +++ b/src/list_items.py @@ -140,6 +140,8 @@ class MessageItem(QtGui.QWidget): def mark_as_sent(self): if hasattr(self, 't'): self.time.setText(self.t) + self.time.repaint() + del self.t return True return False @@ -170,7 +172,7 @@ class ContactItem(QtGui.QWidget): self.status_message.setFont(font) self.status_message.setObjectName("status_message") 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") @@ -178,40 +180,30 @@ class StatusCircle(QtGui.QWidget): """ Connection status """ - # TODO: rewrite def __init__(self, parent): QtGui.QWidget.__init__(self, parent) self.setGeometry(0, 0, 32, 32) - self.data = None - self.messages = False + self.label = QtGui.QLabel(self) + self.label.setGeometry(QtCore.QRect(0, 0, 32, 32)) + self.unread = False - def paintEvent(self, event): - paint = QtGui.QPainter() - paint.begin(self) - paint.setRenderHint(QtGui.QPainter.Antialiasing) - k = 16 - rad_x = rad_y = 5 - if self.data is None: - color = QtCore.Qt.transparent + def update(self, status, unread_messages=None): + if unread_messages is None: + unread_messages = self.unread else: - if self.data == TOX_USER_STATUS['NONE']: - color = QtGui.QColor(50, 205, 50) - elif self.data == TOX_USER_STATUS['AWAY']: - color = QtGui.QColor(255, 200, 50) - else: # self.data == TOX_USER_STATUS['BUSY']: - color = QtGui.QColor(255, 50, 0) - - paint.setPen(color) - center = QtCore.QPoint(k, k) - paint.setBrush(color) - paint.drawEllipse(center, rad_x, rad_y) - if self.messages: - if color == QtCore.Qt.transparent: - color = QtCore.Qt.darkRed - paint.setBrush(QtCore.Qt.transparent) - paint.setPen(color) - paint.drawEllipse(center, rad_x + 3, rad_y + 3) - paint.end() + self.unread = unread_messages + if status == TOX_USER_STATUS['NONE']: + name = 'online' + elif status == TOX_USER_STATUS['AWAY']: + name = 'idle' + elif status == TOX_USER_STATUS['BUSY']: + name = 'busy' + else: + name = 'offline' + if unread_messages: + name += '_notification' + pixmap = QtGui.QPixmap(curr_directory() + '/images/{}.png'.format(name)) + self.label.setPixmap(pixmap) class FileTransferItem(QtGui.QListWidget): @@ -376,6 +368,7 @@ class UnsentFileItem(FileTransferItem): super(UnsentFileItem, self).__init__(file_name, size, time, user, -1, -1, FILE_TRANSFER_MESSAGE_STATUS['PAUSED_BY_FRIEND'], width, parent) self._time = time + self.pb.setVisible(False) def cancel_transfer(self, *args): pr = profile.Profile.get_instance() diff --git a/src/mainscreen.py b/src/mainscreen.py index cde69e2..8e87bec 100644 --- a/src/mainscreen.py +++ b/src/mainscreen.py @@ -183,10 +183,7 @@ class MainWindow(QtGui.QMainWindow): Form.status_message.setFont(font) Form.status_message.setObjectName("status_message") self.connection_status = Form.connection_status = StatusCircle(Form) - Form.connection_status.setGeometry(QtCore.QRect(230, 29, 64, 64)) - Form.connection_status.setMinimumSize(QtCore.QSize(32, 32)) - Form.connection_status.setMaximumSize(QtCore.QSize(32, 32)) - Form.connection_status.setBaseSize(QtCore.QSize(32, 32)) + Form.connection_status.setGeometry(QtCore.QRect(245, 35, 32, 32)) self.avatar_label.mouseReleaseEvent = self.profile_settings self.status_message.mouseReleaseEvent = self.profile_settings self.name.mouseReleaseEvent = self.profile_settings