Commit dd8dda9b authored by Philipp Hörist's avatar Philipp Hörist

Fix displaying MUC subjects with delay tag

Dont print it as "old" conversation, instead add the delay timestamp
at the end of the subject
parent 8a342611
......@@ -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 = []
......
......@@ -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 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 obj.subject == '':
if event.subject == '':
self.subject_button.hide()
else:
self.subject_button.show()
......
......@@ -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):
......
......@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment