diff --git a/gajim/common/connection_handlers_events.py b/gajim/common/connection_handlers_events.py index 038540e1c..e7ee60ef8 100644 --- a/gajim/common/connection_handlers_events.py +++ b/gajim/common/connection_handlers_events.py @@ -25,7 +25,6 @@ from calendar import timegm import hashlib import hmac import logging -import sys from time import time as time_time import OpenSSL.crypto @@ -499,13 +498,13 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent): # message from server self.nick = '' - self.has_timestamp = bool(self.stanza.timestamp) - self.subject = self.stanza.getSubject() if self.subject is not None: - app.nec.push_incoming_event(GcSubjectReceivedEvent(None, - conn=self.conn, msg_event=self)) + app.nec.push_incoming_event( + nec.NetworkEvent('gc-subject-received', + nickname=self.msg_obj.resource, + **vars(self.msg_obj))) return conditions = self.stanza.getStatusConditions() @@ -566,21 +565,6 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent): return True -class GcSubjectReceivedEvent(nec.NetworkIncomingEvent): - name = 'gc-subject-received' - base_network_events = [] - - def generate(self): - self.conn = self.msg_event.conn - self.stanza = self.msg_event.stanza - self.room_jid = self.msg_event.room_jid - self.nickname = self.msg_event.nickname - self.fjid = self.msg_event.fjid - self.subject = self.msg_event.subject - self.msgtxt = self.msg_event.msgtxt - self.has_timestamp = self.msg_event.has_timestamp - return True - class GcConfigChangedReceivedEvent(nec.NetworkIncomingEvent): name = 'gc-config-changed-received' base_network_events = [] diff --git a/gajim/groupchat_control.py b/gajim/groupchat_control.py index a13dac282..434ae2d34 100644 --- a/gajim/groupchat_control.py +++ b/gajim/groupchat_control.py @@ -1239,7 +1239,7 @@ class GroupchatControl(ChatControlBase): additional_data=obj.additional_data) else: # message from someone - if obj.has_timestamp: + if obj.delayed: # don't print xhtml if it's an old message. # Like that xhtml messages are grayed too. self.print_old_conversation( @@ -1492,20 +1492,22 @@ class GroupchatControl(ChatControlBase): self.subject = subject self.draw_banner_text() - def _nec_gc_subject_received(self, obj): - if obj.conn.name != self.account: + def _nec_gc_subject_received(self, event): + if event.conn.name != self.account: return - if obj.room_jid != self.room_jid: + if event.jid != self.room_jid: return - self.set_subject(obj.subject) + self.set_subject(event.subject) text = _('%(nick)s has set the subject to %(subject)s') % { - 'nick': obj.nickname, 'subject': obj.subject} - if obj.has_timestamp: - self.print_old_conversation(text) - else: - self.print_conversation(text) + 'nick': event.nickname, 'subject': event.subject} - if obj.subject == '': + if event.delayed: + date = time.strftime('%d-%m-%Y %H:%M:%S', + time.localtime(event.timestamp)) + text = '%s - %s' % (text, date) + self.print_conversation(text) + + if event.subject == '': self.subject_button.hide() else: self.subject_button.show() diff --git a/gajim/remote_control.py b/gajim/remote_control.py index 9a138d843..6e925c788 100644 --- a/gajim/remote_control.py +++ b/gajim/remote_control.py @@ -383,7 +383,7 @@ class GajimRemote(Server): # event has not been handled at GUI level return self.raise_signal('GCMessage', (obj.conn.name, [obj.fjid, obj.msgtxt, - obj.timestamp, obj.has_timestamp, obj.xhtml_msgtxt, obj.status_code, + obj.timestamp, obj.delayed, obj.xhtml_msgtxt, obj.status_code, obj.displaymarking, obj.captcha_form, obj.needs_highlight])) def on_our_status(self, obj): diff --git a/gajim/roster_window.py b/gajim/roster_window.py index 769b06bfb..e7b642c3a 100644 --- a/gajim/roster_window.py +++ b/gajim/roster_window.py @@ -2694,10 +2694,10 @@ class RosterWindow: def _nec_gc_subject_received(self, obj): contact = app.contacts.get_contact_with_highest_priority( - obj.conn.name, obj.room_jid) + obj.conn.name, obj.jid) if contact: contact.status = obj.subject - self.draw_contact(obj.room_jid, obj.conn.name) + self.draw_contact(obj.jid, obj.conn.name) def _nec_metacontacts_received(self, obj): self.redraw_metacontacts(obj.conn.name)