From 989e606672b067fbd7327b4ad18f63c610a283a7 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Fri, 5 Nov 2010 11:08:06 +0100 Subject: [PATCH] use NEC to handle jingle-error events --- src/common/connection_handlers_events.py | 10 ++++++++++ src/common/jingle_session.py | 5 +++-- src/gui_interface.py | 14 ++++++-------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index a5e1a0969..b3e9d303d 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -1138,6 +1138,16 @@ class JingleDisconnectedReceivedEvent(nec.NetworkIncomingEvent): name = 'jingle-disconnected-received' base_network_events = [] + def generate(self): + self.fjid = self.jingle_session.peerjid + self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) + self.sid = self.jingle_session.sid + return True + +class JingleErrorReceivedEvent(nec.NetworkIncomingEvent): + name = 'jingle-error-received' + base_network_events = [] + def generate(self): self.fjid = self.jingle_session.peerjid self.jid, self.resource = gajim.get_room_and_nick_from_fjid(self.fjid) diff --git a/src/common/jingle_session.py b/src/common/jingle_session.py index 2447e7759..7ca691049 100644 --- a/src/common/jingle_session.py +++ b/src/common/jingle_session.py @@ -534,8 +534,9 @@ class JingleSession(object): if text: text = '%s (%s)' % (error, text) if type_ != 'modify': - self.connection.dispatch('JINGLE_ERROR', - (self.peerjid, self.sid, text or error)) + gajim.nec.push_incoming_event(JingleErrorReceivedEvent(None, + conn=self.connection, jingle_session=self, + reason=text or error)) def __reason_from_stanza(self, stanza): # TODO: Move to GUI? diff --git a/src/gui_interface.py b/src/gui_interface.py index 80004b5c3..067a8b2ff 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -1585,15 +1585,13 @@ class Interface: else: dialog.remove_contents((obj.media, )) - def handle_event_jingle_error(self, account, data): + def handle_event_jingle_error(self, obj): # ('JINGLE_ERROR', account, (peerjid, sid, reason)) - peerjid, sid, reason = data - jid = gajim.get_jid_without_resource(peerjid) - resource = gajim.get_resource_from_jid(peerjid) - ctrl = (self.msg_win_mgr.get_control(peerjid, account) - or self.msg_win_mgr.get_control(jid, account)) + account = obj.conn.name + ctrl = (self.msg_win_mgr.get_control(obj.fjid, account) + or self.msg_win_mgr.get_control(obj.jid, account)) if ctrl: - ctrl.set_audio_state('error', reason=reason) + ctrl.set_audio_state('error', reason=obj.reason) def handle_event_pep_config(self, account, data): # ('PEP_CONFIG', account, (node, form)) @@ -1899,7 +1897,6 @@ class Interface: 'INSECURE_SSL_CONNECTION': \ [self.handle_event_insecure_ssl_connection], 'INSECURE_PASSWORD': [self.handle_event_insecure_password], - 'JINGLE_ERROR': [self.handle_event_jingle_error], 'PEP_RECEIVED': [self.handle_event_pep_received], 'CAPS_RECEIVED': [self.handle_event_caps_received], 'ARCHIVING_CHANGED': [self.handle_event_archiving_changed], @@ -1913,6 +1910,7 @@ class Interface: 'jingle-connected-received': [self.handle_event_jingle_connected], 'jingle-disconnected-received': [ self.handle_event_jingle_disconnected], + 'jingle-error-received': [self.handle_event_jingle_error], 'jingle-request-received': [self.handle_event_jingle_incoming], 'last-result-received': [self.handle_event_last_status_time], 'muc-admin-received': [self.handle_event_gc_affiliation],