diff --git a/src/callbacks.py b/src/callbacks.py index d0413de..a33fd35 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -148,7 +148,10 @@ def friend_typing(tox, friend_number, typing, user_data): def friend_read_receipt(tox, friend_number, message_id, user_data): - Profile.get_instance().get_friend_by_number(friend_number).dec_receipt() + profile = Profile.get_instance() + profile.get_friend_by_number(friend_number).dec_receipt() + if friend_number == profile.get_active_number(): + invoke_in_main_thread(profile.update) # TODO: improve # ----------------------------------------------------------------------------------------------------------------- # Callbacks - file transfers diff --git a/src/images/spinner.gif b/src/images/spinner.gif new file mode 100644 index 0000000..33e0213 Binary files /dev/null and b/src/images/spinner.gif differ diff --git a/src/list_items.py b/src/list_items.py index 34bbdb1..7501aaf 100644 --- a/src/list_items.py +++ b/src/list_items.py @@ -98,7 +98,7 @@ class MessageItem(QtGui.QWidget): """ Message in messages list """ - def __init__(self, text, time, user='', message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None): + def __init__(self, text, time, user='', sent=True, message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None): QtGui.QWidget.__init__(self, parent) self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(0, 2, 95, 20)) @@ -118,8 +118,13 @@ class MessageItem(QtGui.QWidget): font.setPointSize(10) font.setBold(False) self.time.setFont(font) - self.time.setObjectName("time") - self.time.setText(time) + + if not sent: + movie = QtGui.QMovie(curr_directory() + '/images/spinner.gif') + self.time.setMovie(movie) + movie.start() + else: + self.time.setText(time) self.message = MessageEdit(text, parent.width() - 150, self) self.message.setGeometry(QtCore.QRect(100, 0, parent.width() - 150, self.message.height())) diff --git a/src/profile.py b/src/profile.py index 4c069b6..eb0819c 100644 --- a/src/profile.py +++ b/src/profile.py @@ -166,7 +166,7 @@ class Profile(contact.Contact, Singleton): data = message.get_data() self.create_message_item(data[0], convert_time(data[2]), - friend.name if data[1] == MESSAGE_OWNER['FRIEND'] else self._name, + data[1], data[3]) elif message.get_type() == MESSAGE_TYPE['FILE_TRANSFER']: if message.get_status() is None: @@ -350,8 +350,7 @@ class Profile(contact.Contact, Singleton): :param message: text of message """ if friend_num == self.get_active_number(): # add message to list - user_name = Profile.get_instance().get_active_name() - self.create_message_item(message.decode('utf-8'), curr_time(), user_name, message_type) + self.create_message_item(message.decode('utf-8'), curr_time(), MESSAGE_OWNER['FRIEND'], message_type) self._messages.scrollToBottom() self._friends[self._active_friend].append_message( TextMessage(message.decode('utf-8'), MESSAGE_OWNER['FRIEND'], time.time(), message_type)) @@ -378,13 +377,13 @@ class Profile(contact.Contact, Singleton): else: message_type = TOX_MESSAGE_TYPE['NORMAL'] friend = self._friends[self._active_friend] + friend.inc_receipts() if friend.status is not None: self.split_and_send(friend.number, message_type, text.encode('utf-8')) - self.create_message_item(text, curr_time(), self._name, message_type) + self.create_message_item(text, curr_time(), MESSAGE_OWNER['NOT_SENT'], message_type) self._screen.messageEdit.clear() self._messages.scrollToBottom() friend.append_message(TextMessage(text, MESSAGE_OWNER['NOT_SENT'], time.time(), message_type)) - friend.inc_receipts() # ----------------------------------------------------------------------------------------------------------------- # History support @@ -440,7 +439,7 @@ class Profile(contact.Contact, Singleton): data = message.get_data() self.create_message_item(data[0], convert_time(data[2]), - friend.name if data[1] == MESSAGE_OWNER['FRIEND'] else self._name, + data[1], data[3], False) elif message.get_type() == MESSAGE_TYPE['FILE_TRANSFER']: @@ -479,8 +478,9 @@ class Profile(contact.Contact, Singleton): self._screen.friends_list.setItemWidget(elem, item) return item - def create_message_item(self, text, time, name, message_type, append=True): - item = MessageItem(text, time, name, message_type, self._messages) + def create_message_item(self, text, time, owner, message_type, append=True): + name = self.get_active_name() if owner == MESSAGE_OWNER['FRIEND'] else self.name + item = MessageItem(text, time, name, owner != MESSAGE_OWNER['NOT_SENT'], message_type, self._messages) elem = QtGui.QListWidgetItem() elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height())) if append: