6 #ifndef QXMPPFILESHARINGMANAGER_H 7 #define QXMPPFILESHARINGMANAGER_H 9 #include "QXmppBitsOfBinaryDataList.h" 10 #include "QXmppClientExtension.h" 11 #include "QXmppFileShare.h" 12 #include "QXmppFileSharingProvider.h" 13 #include "QXmppGlobal.h" 25 class QXmppFileDownloadPrivate;
28 class QXmppFileSharingManagerPrivate;
29 class QXmppFileUploadPrivate;
35 Q_PROPERTY(
float progress READ progress NOTIFY progressChanged)
43 using Result = std::variant<FileResult, QXmpp::Cancelled, QXmppError>;
47 float progress()
const;
48 Q_SIGNAL
void progressChanged();
51 bool isFinished()
const;
52 quint64 bytesTransferred()
const;
53 quint64 bytesTotal()
const;
56 Q_SIGNAL
void finished();
61 void reportFinished();
63 std::unique_ptr<QXmppFileUploadPrivate> d;
73 Q_PROPERTY(
float progress READ progress NOTIFY progressChanged)
93 using Result = std::variant<Downloaded, QXmpp::Cancelled, QXmppError>;
97 float progress()
const;
98 Q_SIGNAL
void progressChanged();
101 bool isFinished()
const;
102 quint64 bytesTransferred()
const;
103 quint64 bytesTotal()
const;
106 Q_SIGNAL
void finished();
111 void reportProgress(quint64 bytesReceived, quint64 bytesTotal);
112 void reportFinished(
Result);
114 std::unique_ptr<QXmppFileDownloadPrivate> d;
123 struct MetadataThumbnail
131 struct MetadataGeneratorResult
133 std::optional<QSize> dimensions;
134 std::optional<uint32_t> length;
135 QVector<MetadataThumbnail> thumbnails;
136 std::unique_ptr<QIODevice> dataDevice;
139 using MetadataGenerator = std::function<QFuture<std::shared_ptr<MetadataGeneratorResult>>(std::unique_ptr<QIODevice>)>;
151 template<
typename Prov
iderType>
154 std::type_index index(
typeid(
typename ProviderType::SourceType));
155 internalRegisterProvider(index, manager);
158 std::shared_ptr<QXmppFileUpload> uploadFile(std::shared_ptr<QXmppFileSharingProvider> provider,
159 const QString &filePath,
160 const std::optional<QString> &description = {});
162 std::shared_ptr<QXmppFileDownload> downloadFile(
const QXmppFileShare &fileShare,
163 std::unique_ptr<QIODevice> output);
168 void internalRegisterProvider(std::type_index, std::shared_ptr<QXmppFileSharingProvider> provider);
169 std::shared_ptr<QXmppFileSharingProvider> providerForSource(
const std::any &source)
const;
171 std::unique_ptr<QXmppFileSharingManagerPrivate> d;
174 #endif // QXMPPFILESHARINGMANAGER_H File did not contain strong hashes (or no hashes at all) and no verification was done.
Definition: QXmppFileSharingManager.h:83
Definition: QXmppFileSharingManager.h:120
Provides progress of stateless file sharing uploads.
Definition: QXmppFileSharingManager.h:69
HashVerificationResult
Definition: QXmppFileSharingManager.h:75
Contains QXmppFileShare of the uploaded file and possible data blobs containing referenced thumbnails...
Definition: QXmppFileSharingManager.h:37
QXmppBitsOfBinaryDataList dataBlobs
Data blobs of possibly in the metadata referenced thumbnails.
Definition: QXmppFileSharingManager.h:40
Definition: QXmppFileShare.h:23
std::function< QFuture< std::shared_ptr< MetadataGeneratorResult > >(std::unique_ptr< QIODevice >)> MetadataGenerator
Definition: QXmppFileSharingManager.h:139
std::variant< Downloaded, QXmpp::Cancelled, QXmppError > Result
Contains QXmpp::Success (successfully finished), QXmpp::Cancelled (manually cancelled) or QXmppError ...
Definition: QXmppFileSharingManager.h:93
Provides progress of stateless file sharing uploads.
Definition: QXmppFileSharingManager.h:31
void registerProvider(std::shared_ptr< ProviderType > manager)
Register a provider for automatic downloads.
Definition: QXmppFileSharingManager.h:152
Definition: QXmppBitsOfBinaryDataList.h:15
std::variant< FileResult, QXmpp::Cancelled, QXmppError > Result
Contains FileResult (successfully finished), QXmpp::Cancelled (manually cancelled) or QXmppError (an ...
Definition: QXmppFileSharingManager.h:43
The file integrity could be proved using a strong hash algorithm.
Definition: QXmppFileSharingManager.h:85
HashVerificationResult hashVerificationResult
Definition: QXmppFileSharingManager.h:90
Definition: QXmppEncryptedFileSharingProvider.h:15
QXmppFileShare fileShare
File share with file metadata and file shares of the uploaded file.
Definition: QXmppFileSharingManager.h:39
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:32
Definition: QXmppFileSharingManager.h:88