From 382b245062db5c25d2f07ed7e19aeddb7420c5dd Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Tue, 26 Sep 2006 11:54:03 +0000 Subject: [PATCH] don't allow privacy rules window if server doesn't support it. Fixes #253 --- src/common/connection.py | 9 +++++---- src/common/connection_handlers.py | 6 ++++++ src/roster_window.py | 7 +++++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/common/connection.py b/src/common/connection.py index f270cceef..f008c289c 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -404,8 +404,6 @@ class Connection(ConnectionHandlers): con.RegisterDisconnectHandler(self._disconnectedReconnCB) gajim.log.debug(_('Connected to server %s:%s with %s') % (self._current_host['host'], self._current_host['port'], con_type)) - # Ask metacontacts before roster - self.get_metacontacts() self._register_handlers(con, con_type) return True @@ -591,8 +589,11 @@ class Connection(ConnectionHandlers): if self.connection: con.set_send_timeout(self.keepalives, self.send_keepalive) self.connection.onreceive(None) - # Ask metacontacts before roster - self.get_metacontacts() + iq = common.xmpp.Iq('get', common.xmpp.NS_PRIVACY, xmlns = '') + id = self.connection.getAnID() + iq.setID(id) + self.awaiting_answers[id] = (PRIVACY_ARRIVED, ) + self.connection.send(iq) def change_status(self, show, msg, auto = False): if not show in STATUS_LIST: diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index c29cf539a..866755533 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -41,6 +41,7 @@ VCARD_PUBLISHED = 'vcard_published' VCARD_ARRIVED = 'vcard_arrived' AGENT_REMOVED = 'agent_removed' METACONTACTS_ARRIVED = 'metacontacts_arrived' +PRIVACY_ARRIVED = 'privacy_arrived' HAS_IDLE = True try: import common.idle as idle # when we launch gajim from sources @@ -1004,6 +1005,11 @@ class ConnectionVcard: self.dispatch('METACONTACTS', meta_list) # We can now continue connection by requesting the roster self.connection.initRoster() + elif self.awaiting_answers[id][0] == PRIVACY_ARRIVED: + if iq_obj.getType() != 'error': + self.privacy_rules_supported = True + # Ask metacontacts before roster + self.get_metacontacts() del self.awaiting_answers[id] diff --git a/src/roster_window.py b/src/roster_window.py index d3f28425b..bd9c68212 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -691,8 +691,11 @@ class RosterWindow: xml_console_menuitem.connect('activate', self.on_xml_console_menuitem_activate, account) - privacy_lists_menuitem.connect('activate', - self.on_privacy_lists_menuitem_activate, account) + if gajim.connections[account] and gajim.connections[account].privacy_rules_supported: + privacy_lists_menuitem.connect('activate', + self.on_privacy_lists_menuitem_activate, account) + else: + privacy_lists_menuitem.set_sensitive(False) send_server_message_menuitem.connect('activate', self.on_send_server_message_menuitem_activate, account)