aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppFileSharingManager.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-09-30 23:54:08 +0200
committerLinus Jahn <lnj@kaidan.im>2022-09-30 23:56:01 +0200
commit977501afcbabb79d2677bff823ae33e2af8a8cd3 (patch)
treee0f9e2887f59c7eaac2911cf6ba77f6e69170e14 /src/client/QXmppFileSharingManager.cpp
parent668b6f1ae936103dbd0180567dff7fca3d7dd935 (diff)
FileSharingManager: Use private class with d-ptr
Diffstat (limited to 'src/client/QXmppFileSharingManager.cpp')
-rw-r--r--src/client/QXmppFileSharingManager.cpp27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/client/QXmppFileSharingManager.cpp b/src/client/QXmppFileSharingManager.cpp
index 2daf980a..c72b9632 100644
--- a/src/client/QXmppFileSharingManager.cpp
+++ b/src/client/QXmppFileSharingManager.cpp
@@ -17,6 +17,7 @@
#include "QXmppUploadRequestManager.h"
#include <any>
+#include <unordered_map>
#include <QFile>
#include <QFileInfo>
@@ -28,6 +29,18 @@
using namespace QXmpp;
using namespace QXmpp::Private;
+using MetadataGenerator = QXmppFileSharingManager::MetadataGenerator;
+using MetadataGeneratorResult = QXmppFileSharingManager::MetadataGeneratorResult;
+
+class QXmppFileSharingManagerPrivate
+{
+public:
+ MetadataGenerator metadataGenerator = [](std::unique_ptr<QIODevice>) -> QFuture<std::shared_ptr<MetadataGeneratorResult>> {
+ return makeReadyFuture(std::make_shared<MetadataGeneratorResult>());
+ };
+ std::unordered_map<std::type_index, std::shared_ptr<QXmppFileSharingProvider>> providers;
+};
+
///
/// \class QXmppFileSharingProvider
///
@@ -49,12 +62,12 @@ using namespace QXmpp::Private;
///
QXmppFileSharingManager::QXmppFileSharingManager()
- : m_metadataGenerator([](std::unique_ptr<QIODevice> &&) -> QFuture<std::shared_ptr<MetadataGeneratorResult>> {
- return makeReadyFuture(std::make_shared<MetadataGeneratorResult>());
- })
+ : d(std::make_unique<QXmppFileSharingManagerPrivate>())
{
}
+QXmppFileSharingManager::~QXmppFileSharingManager() = default;
+
///
/// \typedef QXmppFileSharingManager::MetadataGenerator
///
@@ -71,7 +84,7 @@ QXmppFileSharingManager::QXmppFileSharingManager()
///
void QXmppFileSharingManager::setMetadataGenerator(MetadataGenerator &&generator)
{
- m_metadataGenerator = std::move(generator);
+ d->metadataGenerator = std::move(generator);
}
///
@@ -102,7 +115,7 @@ std::shared_ptr<QXmppUpload> QXmppFileSharingManager::sendFile(std::shared_ptr<Q
return device;
};
- auto metadataFuture = m_metadataGenerator(openFile());
+ auto metadataFuture = d->metadataGenerator(openFile());
auto hashesFuture = calculateHashes(openFile(), { HashAlgorithm::Sha256 });
upload = provider->uploadFile(openFile(), metadata);
@@ -193,7 +206,7 @@ std::shared_ptr<QXmppDownload> QXmppFileSharingManager::downloadFile(
fileShare.visitSources([&](const std::any &source) {
std::type_index index(source.type());
try {
- auto provider = m_providers.at(index);
+ auto provider = d->providers.at(index);
download = provider->downloadFile(source, std::move(output));
return true;
} catch (const std::out_of_range &) {
@@ -206,5 +219,5 @@ std::shared_ptr<QXmppDownload> QXmppFileSharingManager::downloadFile(
void QXmppFileSharingManager::internalRegisterProvider(std::type_index index, std::shared_ptr<QXmppFileSharingProvider> provider)
{
- m_providers.insert_or_assign(index, provider);
+ d->providers.insert_or_assign(index, provider);
}