5#ifndef QXMPPTRANSFERMANAGER_H
6#define QXMPPTRANSFERMANAGER_H
8#include "QXmppClientExtension.h"
21class QXmppStreamInitiationIq;
22class QXmppTransferFileInfoPrivate;
23class QXmppTransferJobPrivate;
25class QXmppTransferManagerPrivate;
34 QDateTime date()
const;
35 void setDate(
const QDateTime &date);
37 QByteArray hash()
const;
38 void setHash(
const QByteArray &hash);
41 void setName(
const QString &name);
43 QString description()
const;
44 void setDescription(
const QString &description);
47 void setSize(qint64 size);
54 static constexpr std::tuple XmlTag = { u
"file", QXmpp::Private::ns_stream_initiation_file_transfer };
55 void parse(
const QDomElement &element);
56 void toXml(QXmlStreamWriter *writer)
const;
60 QSharedDataPointer<QXmppTransferFileInfoPrivate> d;
68 Q_PROPERTY(
Direction direction READ direction CONSTANT)
70 Q_PROPERTY(QUrl localFileUrl READ localFileUrl WRITE setLocalFileUrl NOTIFY localFileUrlChanged)
72 Q_PROPERTY(QString jid READ jid CONSTANT)
74 Q_PROPERTY(
Method method READ method CONSTANT)
76 Q_PROPERTY(
State state READ state NOTIFY stateChanged)
79 Q_PROPERTY(QString fileName READ fileName CONSTANT)
81 Q_PROPERTY(qint64 fileSize READ fileSize CONSTANT)
109 Q_DECLARE_FLAGS(Methods, Method)
134 qint64 speed()
const;
140 QUrl localFileUrl()
const;
141 void setLocalFileUrl(
const QUrl &localFileUrl);
144 QDateTime fileDate()
const;
145 QByteArray fileHash()
const;
146 QString fileName()
const;
147 qint64 fileSize()
const;
175 void accept(
const QString &filePath);
176 void accept(QIODevice *output);
179 void _q_terminated();
186 const std::unique_ptr<QXmppTransferJobPrivate> d;
188 friend class QXmppTransferManagerPrivate;
189 friend class QXmppTransferIncomingJob;
190 friend class QXmppTransferOutgoingJob;
198 Q_PROPERTY(QString proxy READ proxy WRITE setProxy)
200 Q_PROPERTY(
bool proxyOnly READ proxyOnly WRITE setProxyOnly)
202 Q_PROPERTY(
QXmppTransferJob::Methods supportedMethods READ supportedMethods WRITE setSupportedMethods)
210 QString proxy() const;
211 void setProxy(const QString &proxyJid);
216 bool proxyOnly() const;
217 void setProxyOnly(
bool proxyOnly);
227 QStringList discoveryFeatures() const override;
228 bool handleStanza(const QDomElement &element) override;
247 QXmppTransferJob *sendFile(const QString &jid, const QString &filePath, const QString &description = QString());
257 void _q_iqReceived(const
QXmppIq &);
258 void _q_jobDestroyed(QObject *
object);
260 void _q_jobFinished();
262 void _q_socksServerConnected(QTcpSocket *socket, const QString &hostName, quint16 port);
265 const std::unique_ptr<QXmppTransferManagerPrivate> d;
268 void byteStreamResponseReceived(const
QXmppIq &);
272 void ibbDataIqReceived(const QXmppIbbDataIq &);
274 void ibbResponseReceived(const
QXmppIq &);
275 void streamInitiationIqReceived(const QXmppStreamInitiationIq &);
276 void streamInitiationResultReceived(const QXmppStreamInitiationIq &);
277 void streamInitiationSetReceived(const QXmppStreamInitiationIq &);
280 friend class QXmppTransferManagerPrivate;
Definition QXmppByteStreamIq.h:14
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition QXmppClientExtension.h:32
Main class for starting and managing connections to XMPP servers.
Definition QXmppClient.h:62
Definition QXmppIbbIq.h:38
Definition QXmppIbbIq.h:12
The QXmppIq class is the base class for all IQs.
Definition QXmppIq.h:23
The QXmppLoggable class represents a source of logging messages.
Definition QXmppLogger.h:110
Definition QXmppTransferManager.h:28
QXmppTransferFileInfo(const QXmppTransferFileInfo &other)
Default copy-constructor.
QXmppTransferFileInfo & operator=(const QXmppTransferFileInfo &other)
Default assignment operator.
Definition QXmppTransferManager.h:64
void stateChanged(QXmppTransferJob::State state)
This signal is emitted when the transfer job changes state.
void progress(qint64 done, qint64 total)
This signal is emitted to indicate the progress of this transfer job.
void error(QXmppTransferJob::Error error)
void localFileUrlChanged(const QUrl &localFileUrl)
This signal is emitted when the local file URL changes.
Method
This enum is used to describe a transfer method.
Definition QXmppTransferManager.h:102
Direction
This enum is used to describe the direction of a transfer job.
Definition QXmppTransferManager.h:85
@ IncomingDirection
The file is being received.
Definition QXmppTransferManager.h:86
State
This enum is used to describe the state of a transfer job.
Definition QXmppTransferManager.h:112
Error
This enum is used to describe the type of error encountered by a transfer job.
Definition QXmppTransferManager.h:92
@ AbortError
The file transfer was aborted.
Definition QXmppTransferManager.h:94
@ FileAccessError
An error was encountered trying to access a local file.
Definition QXmppTransferManager.h:95
@ FileCorruptError
The file is corrupt: the file size or hash do not match.
Definition QXmppTransferManager.h:96
Definition QXmppTransferManager.h:194