diff --git a/src/chat_control.py b/src/chat_control.py index e71a6d2a5..1ebd45cd0 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -51,7 +51,7 @@ from common.logger import constants from common.pep import MOODS, ACTIVITIES from common.xmpp.protocol import NS_XHTML, NS_XHTML_IM, NS_FILE, NS_MUC from common.xmpp.protocol import NS_RECEIPTS, NS_ESESSION -from common.xmpp.protocol import NS_JINGLE_RTP_AUDIO, NS_JINGLE_RTP_VIDEO, NS_JINGLE_ICE_UDP +from common.xmpp.protocol import NS_JINGLE_RTP_AUDIO, NS_JINGLE_RTP_VIDEO, NS_JINGLE_ICE_UDP, NS_JINGLE_FILE_TRANSFER from command_system.implementation.middleware import ChatCommandProcessor from command_system.implementation.middleware import CommandTools @@ -1496,12 +1496,12 @@ class ChatControl(ChatControlBase): self._video_button.set_sensitive(self.video_available) # Send file - if self.contact.supports(NS_FILE) and self.contact.resource: + if (self.contact.supports(NS_FILE) or self.contact.supports(NS_JINGLE_FILE_TRANSFER)) and self.contact.resource: self._send_file_button.set_sensitive(True) self._send_file_button.set_tooltip_text('') else: self._send_file_button.set_sensitive(False) - if not self.contact.supports(NS_FILE): + if not (self.contact.supports(NS_FILE) or self.contact.supports(NS_JINGLE_FILE_TRANSFER)): self._send_file_button.set_tooltip_text(_( "This contact does not support file transfer.")) else: diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index d60e14b5e..26a23a45d 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -182,7 +182,7 @@ class ConnectionDisco: query = iq.setTag('query') query.setAttr('node', 'http://gajim.org#' + gajim.version.split('-', 1)[0]) for f in (common.xmpp.NS_BYTESTREAM, common.xmpp.NS_SI, - common.xmpp.NS_FILE, common.xmpp.NS_COMMANDS): + common.xmpp.NS_FILE, common.xmpp.NS_COMMANDS, common.xmpp.NS_JINGLE_FILE_TRANSFER): feature = common.xmpp.Node('feature') feature.setAttr('var', f) query.addChild(node=feature) diff --git a/src/common/helpers.py b/src/common/helpers.py index 367520d75..6e1b5df7b 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -1316,6 +1316,7 @@ def update_optional_features(account = None): gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE_RTP_AUDIO) gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE_RTP_VIDEO) gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE_ICE_UDP) + gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE_FILE_TRANSFER) gajim.caps_hash[a] = caps_cache.compute_caps_hash([gajim.gajim_identity], gajim.gajim_common_features + gajim.gajim_optional_features[a]) # re-send presence with new hash diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py index 750cd7bf9..0d1f15422 100644 --- a/src/common/xmpp/protocol.py +++ b/src/common/xmpp/protocol.py @@ -69,6 +69,7 @@ NS_JINGLE_ERRORS='urn:xmpp:jingle:errors:1' # XEP-01 NS_JINGLE_RTP ='urn:xmpp:jingle:apps:rtp:1' # XEP-0167 NS_JINGLE_RTP_AUDIO='urn:xmpp:jingle:apps:rtp:audio' # XEP-0167 NS_JINGLE_RTP_VIDEO='urn:xmpp:jingle:apps:rtp:video' # XEP-0167 +NS_JINGLE_FILE_TRANSFER='urn:xmpp:jingle:apps:file-transfer:1' # XEP-0234 NS_JINGLE_RAW_UDP='urn:xmpp:jingle:transports:raw-udp:1' # XEP-0177 NS_JINGLE_ICE_UDP='urn:xmpp:jingle:transports:ice-udp:1' # XEP-0176 NS_LAST ='jabber:iq:last' diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py index 3b5a09faf..8f337605b 100644 --- a/src/filetransfers_window.py +++ b/src/filetransfers_window.py @@ -35,6 +35,10 @@ from common import gajim from common import helpers from common.protocol.bytestream import (is_transfer_active, is_transfer_paused, is_transfer_stopped) +from common.xmpp.protocol import NS_JINGLE_FILE_TRANSFER +import logging + +log = logging.getLogger('gajim.filetransfer_window') C_IMAGE = 0 C_LABELS = 1 @@ -299,6 +303,10 @@ class FileTransfersWindow: if file_props is None: return False self.add_transfer(account, contact, file_props) + if contact.supports(NS_JINGLE_FILE_TRANSFER): + log.info("contacts supports jingle file transfer") + else: + log.info("contacts does not support jingle file transfer") gajim.connections[account].send_file_request(file_props) return True diff --git a/src/gui_menu_builder.py b/src/gui_menu_builder.py index fbc93d1b1..30b514e97 100644 --- a/src/gui_menu_builder.py +++ b/src/gui_menu_builder.py @@ -25,7 +25,7 @@ import message_control from common import gajim from common import helpers -from common.xmpp.protocol import NS_COMMANDS, NS_FILE, NS_MUC, NS_ESESSION +from common.xmpp.protocol import NS_COMMANDS, NS_FILE, NS_MUC, NS_ESESSION, NS_JINGLE_FILE_TRANSFER def build_resources_submenu(contacts, account, action, room_jid=None, room_account=None, cap=None): @@ -225,7 +225,7 @@ control=None): else: start_chat_menuitem.connect('activate', gajim.interface.on_open_chat_window, contact, account) - if contact.supports(NS_FILE): + if contact.supports(NS_FILE) or contact.supports(NS_JINGLE_FILE_TRANSFER): send_file_menuitem.set_sensitive(True) send_file_menuitem.connect('activate', roster.on_send_file_menuitem_activate, contact, account)