aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent668b6f1ae936103dbd0180567dff7fca3d7dd935 (diff)
downloadqxmpp-977501afcbabb79d2677bff823ae33e2af8a8cd3.tar.gz
FileSharingManager: Use private class with d-ptr
Diffstat (limited to 'src')
-rw-r--r--src/client/QXmppFileSharingManager.cpp27
-rw-r--r--src/client/QXmppFileSharingManager.h7
2 files changed, 23 insertions, 11 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);
}
diff --git a/src/client/QXmppFileSharingManager.h b/src/client/QXmppFileSharingManager.h
index 96632f3f..20a1cdc4 100644
--- a/src/client/QXmppFileSharingManager.h
+++ b/src/client/QXmppFileSharingManager.h
@@ -10,7 +10,6 @@
#include "QXmppFileSharingProvider.h"
#include "QXmppGlobal.h"
-#include <any>
#include <functional>
#include <memory>
#include <typeindex>
@@ -18,11 +17,11 @@
#include <QFuture>
#include <QMimeType>
-#include <QObject>
#include <QSize>
class QIODevice;
class QXmppFileMetadata;
+class QXmppFileSharingManagerPrivate;
class QXMPP_EXPORT QXmppFileSharingManager : public QXmppClientExtension
{
@@ -46,6 +45,7 @@ public:
using MetadataGenerator = std::function<QFuture<std::shared_ptr<MetadataGeneratorResult>>(std::unique_ptr<QIODevice>)>;
QXmppFileSharingManager();
+ ~QXmppFileSharingManager();
void setMetadataGenerator(MetadataGenerator &&generator);
@@ -71,8 +71,7 @@ public:
private:
void internalRegisterProvider(std::type_index, std::shared_ptr<QXmppFileSharingProvider> provider);
- MetadataGenerator m_metadataGenerator;
- std::unordered_map<std::type_index, std::shared_ptr<QXmppFileSharingProvider>> m_providers;
+ std::unique_ptr<QXmppFileSharingManagerPrivate> d;
};
#endif // QXMPPFILESHARINGMANAGER_H