changeset 37a15ca4a190 in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=37a15ca4a190
description: use NEC to handle unique room id events

diffstat:

 src/common/connection.py                 |   8 +++++---
 src/common/connection_handlers_events.py |   8 ++++++++
 src/dialogs.py                           |  25 +++++++++++++++++++------
 src/gajim.py                             |   1 +
 src/gui_interface.py                     |  17 -----------------
 5 files changed, 33 insertions(+), 26 deletions(-)

diffs (141 lines):

diff -r 4126cd35ad1b -r 37a15ca4a190 src/common/connection.py
--- a/src/common/connection.py  Wed Nov 24 17:00:14 2010 +0100
+++ b/src/common/connection.py  Wed Nov 24 17:28:18 2010 +0100
@@ -2037,10 +2037,12 @@
         iq.addChild('unique', namespace=common.xmpp.NS_MUC_UNIQUE)
         def _on_response(resp):
             if not common.xmpp.isResultNode(resp):
-                self.dispatch('UNIQUE_ROOM_ID_UNSUPPORTED', (server, instance))
+                gajim.nec.push_incoming_event(UniqueRoomIdNotSupportedEvent(
+                    None, conn=self, instance=instance, server=server))
                 return
-            self.dispatch('UNIQUE_ROOM_ID_SUPPORTED', (server, instance,
-                    resp.getTag('unique').getData()))
+            gajim.nec.push_incoming_event(UniqueRoomIdSupportedEvent(None,
+                conn=self, instance=instance, server=server,
+                room_id=resp.getTag('unique').getData()))
         self.connection.SendAndCallForResponse(iq, _on_response)
 
     def join_gc(self, nick, room_jid, password, change_nick=False):
diff -r 4126cd35ad1b -r 37a15ca4a190 src/common/connection_handlers_events.py
--- a/src/common/connection_handlers_events.py  Wed Nov 24 17:00:14 2010 +0100
+++ b/src/common/connection_handlers_events.py  Wed Nov 24 17:28:18 2010 +0100
@@ -1451,3 +1451,11 @@
 class FingerprintErrorEvent(nec.NetworkIncomingEvent):
     name = 'fingerprint-error'
     base_network_events = []
+
+class UniqueRoomIdSupportedEvent(nec.NetworkIncomingEvent):
+    name = 'unique-room-id-supported'
+    base_network_events = []
+
+class UniqueRoomIdNotSupportedEvent(nec.NetworkIncomingEvent):
+    name = 'unique-room-id-not-supported'
+    base_network_events = []
diff -r 4126cd35ad1b -r 37a15ca4a190 src/dialogs.py
--- a/src/dialogs.py    Wed Nov 24 17:00:14 2010 +0100
+++ b/src/dialogs.py    Wed Nov 24 17:28:18 2010 +0100
@@ -5151,12 +5151,21 @@
                         path = self.store.get_path(iter_)
                         self.guests_treeview.get_selection().select_path(path)
 
+        gajim.ged.register_event_handler('unique-room-id-supported', ged.GUI1,
+            self._nec_unique_room_id_supported)
+        gajim.ged.register_event_handler('unique-room-id-not-supported',
+            ged.GUI1, self._nec_unique_room_id_not_supported)
+
         # show all
         self.window.show_all()
 
         self.xml.connect_signals(self)
 
     def on_chat_to_muc_window_destroy(self, widget):
+        gajim.ged.remove_event_handler('unique-room-id-supported', ged.GUI1,
+            self._nec_unique_room_id_supported)
+        gajim.ged.remove_event_handler('unique-room-id-not-supported', 
ged.GUI1,
+            self._nec_unique_room_id_not_supported)
         self.instances.remove(self)
 
     def on_chat_to_muc_window_key_press_event(self, widget, event):
@@ -5169,7 +5178,9 @@
             return
         gajim.connections[self.account].check_unique_room_id_support(server, 
self)
 
-    def unique_room_id_supported(self, server, room_id):
+    def _nec_unique_room_id_supported(self, obj):
+        if obj.instance != self:
+            return
         guest_list = []
         guests = self.guests_treeview.get_selection().get_selected_rows()
         for guest in guests[1]:
@@ -5177,7 +5188,7 @@
             guest_list.append(self.store[iter_][2].decode('utf-8'))
         for guest in self.auto_jids:
             guest_list.append(guest)
-        room_jid = room_id + '@' + server
+        room_jid = obj.room_id + '@' + obj.server
         gajim.automatic_rooms[self.account][room_jid] = {}
         gajim.automatic_rooms[self.account][room_jid]['invities'] = guest_list
         gajim.automatic_rooms[self.account][room_jid]['continue_tag'] = True
@@ -5188,10 +5199,12 @@
     def on_cancel_button_clicked(self, widget):
         self.window.destroy()
 
-    def unique_room_id_error(self, server):
-        self.unique_room_id_supported(server,
-            gajim.nicks[self.account].lower().replace(' ', '') + str(randrange(
-            9999999)))
+    def _nec_unique_room_id_not_supported(self, obj):
+        if obj.instance != self:
+            return
+        obj.room_id = gajim.nicks[self.account].lower().replace(' ', '') + \
+            str(randrange(9999999))
+        self._nec_unique_room_id_supported(obj)
 
 class DataFormWindow(Dialog):
     def __init__(self, form, on_response_ok):
diff -r 4126cd35ad1b -r 37a15ca4a190 src/gajim.py
--- a/src/gajim.py      Wed Nov 24 17:00:14 2010 +0100
+++ b/src/gajim.py      Wed Nov 24 17:28:18 2010 +0100
@@ -403,6 +403,7 @@
         # Session Management support
         try:
             import gnome.ui
+            raise ImportError
         except ImportError:
             pass
         else:
diff -r 4126cd35ad1b -r 37a15ca4a190 src/gui_interface.py
--- a/src/gui_interface.py      Wed Nov 24 17:00:14 2010 +0100
+++ b/src/gui_interface.py      Wed Nov 24 17:28:18 2010 +0100
@@ -1400,19 +1400,6 @@
         dialogs.RosterItemExchangeWindow(obj.conn.name, obj.action,
             obj.exchange_items_list, obj.fjid)
 
-    def handle_event_unique_room_id_supported(self, account, data):
-        """
-        Receive confirmation that unique_room_id are supported
-        """
-        # ('UNIQUE_ROOM_ID_SUPPORTED', server, instance, room_id)
-        instance = data[1]
-        instance.unique_room_id_supported(data[0], data[2])
-
-    def handle_event_unique_room_id_unsupported(self, account, data):
-        # ('UNIQUE_ROOM_ID_UNSUPPORTED', server, instance)
-        instance = data[1]
-        instance.unique_room_id_error(data[0])
-
     def handle_event_ssl_error(self, obj):
         # ('SSL_ERROR', account, (text, errnum, cert, sha1_fingerprint))
         account = obj.conn.name
@@ -1640,10 +1627,6 @@
             'PRIVACY_LIST_REMOVED': [self.handle_event_privacy_list_removed],
             'ZC_NAME_CONFLICT': [self.handle_event_zc_name_conflict],
             'PEP_CONFIG': [self.handle_event_pep_config],
-            'UNIQUE_ROOM_ID_UNSUPPORTED': \
-                [self.handle_event_unique_room_id_unsupported],
-            'UNIQUE_ROOM_ID_SUPPORTED': \
-                [self.handle_event_unique_room_id_supported],
             'PASSWORD_REQUIRED': [self.handle_event_password_required],
             'atom-entry-received': [self.handle_atom_entry],
             'bad-gpg-passphrase': [self.handle_event_bad_gpg_passphrase],
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to