can now accept a session negotiation

This commit is contained in:
Brendan Taylor 2007-06-01 22:08:23 +00:00
parent 32804eed1c
commit d696f79c55
2 changed files with 31 additions and 2 deletions

View file

@ -1658,8 +1658,22 @@ class Interface:
def handle_session_negotiation(self, account, data):
jid, thread_id, form = data
# XXX check negotiation state, etc.
# XXX check if we can autoaccept
if form.getType() == 'form':
ctrl = gajim.interface.msg_win_mgr.get_control(str(jid), account)
if not ctrl:
resource = jid.getResource()
contact = gajim.contacts.get_contact(account, str(jid), resource)
if not contact:
connection = gajim.connections[account]
contact = gajim.contacts.create_contact(jid = jid.getStripped(), resource = resource, show = connection.get_status())
self.roster.new_chat(contact, account, resource = resource)
ctrl = gajim.interface.msg_win_mgr.get_control(str(jid), account)
ctrl.set_thread_id(thread_id)
# XXX check if the user has chosen to autoaccept these values
negotiation.FeatureNegotiationWindow(account, jid, thread_id, form)
def handle_event_privacy_lists_received(self, account, data):

View file

@ -25,6 +25,21 @@ class FeatureNegotiationWindow:
self.xml.signal_autoconnect(self)
self.window.show_all()
def on_ok_button_clicked(self, widget):
acceptance = xmpp.Message(self.jid)
acceptance.setThread(self.thread_id)
feature = acceptance.NT.feature
feature.setNamespace(xmpp.NS_FEATURE)
form = self.data_form_widget.data_form
form.setAttr('type', 'submit')
feature.addChild(node=form)
gajim.connections[self.account].send_stanza(acceptance)
self.window.destroy()
def on_cancel_button_clicked(self, widget):
# XXX determine whether to reveal presence