From 2a1f9d2abb7deab685abca19dcd0e810094530ec Mon Sep 17 00:00:00 2001 From: Yann Leboulanger <asterix@lagaule.org> Date: Tue, 13 Mar 2012 17:30:48 +0100 Subject: [PATCH] handle data forms in groupchat messages. This way room admins can handle voice requests. --- src/common/connection_handlers_events.py | 2 ++ src/gui_interface.py | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index 1b5e316527..41f989d69a 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -1280,6 +1280,8 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent): if self.status_code != []: gajim.nec.push_incoming_event(GcConfigChangedReceivedEvent( None, conn=self.conn, msg_event=self)) + if self.msg_obj.form_node: + return True return self.displaymarking = None diff --git a/src/gui_interface.py b/src/gui_interface.py index c829fae327..726ce527c0 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -329,6 +329,16 @@ class Interface: if gc_control and gc_control.autorejoin: gc_control.autorejoin = False + def handle_event_gc_message(self, obj): + if not obj.stanza.getTag('body'): # no <body> + # It could be a voice request. See + # http://www.xmpp.org/extensions/xep-0045.html#voiceapprove + if obj.msg_obj.form_node: + dialogs.SingleMessageWindow(obj.conn.name, obj.fjid, + action='receive', from_whom=obj.fjid, + subject='', message='', resource='', session=None, + form_node=obj.msg_obj.form_node) + def handle_event_presence(self, obj): # 'NOTIFY' (account, (jid, status, status message, resource, # priority, # keyID, timestamp, contact_nickname)) @@ -1415,6 +1425,7 @@ class Interface: 'fingerprint-error': [self.handle_event_fingerprint_error], 'gc-invitation-received': [self.handle_event_gc_invitation], 'gc-presence-received': [self.handle_event_gc_presence], + 'gc-message-received': [self.handle_event_gc_message], 'gmail-notify': [self.handle_event_gmail_notify], 'gpg-password-required': [self.handle_event_gpg_password_required], 'gpg-trust-key': [self.handle_event_gpg_trust_key], -- GitLab