changeset 976186d6b39f in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=976186d6b39f
description: finish supporting jabber:iq:gateway. Fixes #6054
diffstat:
src/common/connection.py | 11 +++++++++--
src/common/connection_handlers_events.py | 10 ++++++++--
src/dialogs.py | 25 ++++++++++++++++++++++---
3 files changed, 39 insertions(+), 7 deletions(-)
diffs (98 lines):
diff -r e67d4cd50cae -r 976186d6b39f src/common/connection.py
--- a/src/common/connection.py Wed Dec 15 21:15:00 2010 +0100
+++ b/src/common/connection.py Wed Dec 15 22:08:42 2010 +0100
@@ -1953,11 +1953,18 @@
self.entity_time_ids.append(id_)
self.connection.send(iq)
- def request_gateway_prompt(self, jid):
+ def request_gateway_prompt(self, jid, prompt=None):
def _on_prompt_result(resp):
gajim.nec.push_incoming_event(GatewayPromptReceivedEvent(None,
conn=self, stanza=resp))
- iq = common.xmpp.Iq(typ='get', queryNS=common.xmpp.NS_GATEWAY, to=jid)
+ if prompt:
+ typ_ = 'set'
+ else:
+ typ_ = 'get'
+ iq = common.xmpp.Iq(typ=typ_, to=jid)
+ query = iq.addChild(name='query', namespace=common.xmpp.NS_GATEWAY)
+ if prompt:
+ query.setTagData('prompt', prompt)
self.connection.SendAndCallForResponse(iq, _on_prompt_result)
def get_settings(self):
diff -r e67d4cd50cae -r 976186d6b39f src/common/connection_handlers_events.py
--- a/src/common/connection_handlers_events.py Wed Dec 15 21:15:00 2010 +0100
+++ b/src/common/connection_handlers_events.py Wed Dec 15 22:08:42 2010 +0100
@@ -1820,6 +1820,12 @@
def generate(self):
self.get_jid_resource()
query = self.stanza.getTag('query')
- self.desc = query.getTagData('desc')
- self.prompt = query.getTagData('prompt')
+ if query:
+ self.desc = query.getTagData('desc')
+ self.prompt = query.getTagData('prompt')
+ self.prompt_jid = query.getTagData('jid')
+ else:
+ self.desc = None
+ self.prompt = None
+ self.prompt_jid = None
return True
diff -r e67d4cd50cae -r 976186d6b39f src/dialogs.py
--- a/src/dialogs.py Wed Dec 15 21:15:00 2010 +0100
+++ b/src/dialogs.py Wed Dec 15 22:08:42 2010 +0100
@@ -844,6 +844,7 @@
def __init__(self, account=None, jid=None, user_nick=None, group=None):
self.account = account
+ self.adding_jid = False
if account is None:
# fill accounts with active accounts
accounts = []
@@ -1054,8 +1055,17 @@
if type_ != 'jabber':
transport = self.protocol_jid_combobox.get_active_text().decode(
'utf-8')
- jid = jid.replace('@', '%') + '@' + transport
-
+ if self.account:
+ self.adding_jid = (jid, transport)
+ gajim.connections[self.account].request_gateway_prompt(
+ transport, jid)
+ else:
+ jid = jid.replace('@', '%') + '@' + transport
+ self._add_jid(jid)
+ else:
+ self._add_jid(jid)
+
+ def _add_jid(self, jid):
# check if jid is conform to RFC and stringprep it
try:
jid = helpers.parse_jid(jid)
@@ -1119,6 +1129,8 @@
def on_protocol_jid_combobox_changed(self, widget):
model = widget.get_model()
iter_ = widget.get_active_iter()
+ if not iter_:
+ return
jid_ = model[iter_][0]
model = self.protocol_combobox.get_model()
iter_ = self.protocol_combobox.get_active_iter()
@@ -1226,7 +1238,14 @@
self.transport_signed_out(obj.jid)
def _nec_gateway_prompt_received(self, obj):
- if obj.jid in self.gateway_prompt:
+ if self.adding_jid:
+ if obj.prompt_jid:
+ self._add_jid(obj.prompt_jid)
+ else:
+ jid, transport = self.adding_jid
+ jid = jid.replace('@', '%') + '@' + transport
+ self._add_jid(jid)
+ elif obj.jid in self.gateway_prompt:
if obj.desc:
self.gateway_prompt[obj.jid]['desc'] = obj.desc
if obj.prompt:
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits