From bfad2291c82a2615236c4d7aa6ad22ca112a1fd8 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Thu, 23 May 2024 12:19:20 +0400 Subject: [PATCH] DownloadManager starts robbing ContentManager DownloadManager stole from ContentManager its two data members mp_downloader and m_downloads. --- src/contentmanager.cpp | 4 ++-- src/contentmanager.h | 6 ++---- src/downloadmanagement.cpp | 8 ++++++++ src/downloadmanagement.h | 9 +++++++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index b83aad4..0c0f999 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -95,9 +95,9 @@ void openFileLocation(QString path, QWidget *parent = nullptr) ContentManager::ContentManager(Library* library, kiwix::Downloader* downloader, QObject *parent) : QObject(parent), + DownloadManager(downloader), mp_library(library), mp_remoteLibrary(kiwix::Library::create()), - mp_downloader(downloader), m_remoteLibraryManager() { restoreDownloads(); @@ -510,7 +510,7 @@ void ContentManager::openBook(const QString &id) } void ContentManager::openBookPreview(const QString &id) -{ +{ try { QMutexLocker locker(&remoteLibraryLocker); const std::string &downloadUrl = diff --git a/src/contentmanager.h b/src/contentmanager.h index b3afed7..4e6563a 100644 --- a/src/contentmanager.h +++ b/src/contentmanager.h @@ -4,12 +4,12 @@ #include #include "library.h" #include "contentmanagerview.h" -#include #include "opdsrequestmanager.h" #include "contenttypefilter.h" #include "contentmanagermodel.h" +#include "downloadmanagement.h" -class ContentManager : public QObject +class ContentManager : public QObject, private DownloadManager { Q_OBJECT Q_PROPERTY(bool isLocal MEMBER m_local READ isLocal WRITE setLocal NOTIFY localChanged) @@ -136,8 +136,6 @@ private: // functions private: // data Library* mp_library; kiwix::LibraryPtr mp_remoteLibrary; - kiwix::Downloader* mp_downloader; - ContentManagerModel::Downloads m_downloads; QThread* mp_downloadUpdaterThread = nullptr; OpdsRequestManager m_remoteLibraryManager; ContentManagerView* mp_view; diff --git a/src/downloadmanagement.cpp b/src/downloadmanagement.cpp index 57e5e9b..576bb0c 100644 --- a/src/downloadmanagement.cpp +++ b/src/downloadmanagement.cpp @@ -32,3 +32,11 @@ void DownloadState::update(const DownloadInfo& downloadInfos) const bool paused = downloadInfos["status"] == "paused"; *this = {percent, completedLength, downloadSpeed, paused}; } + +//////////////////////////////////////////////////////////////////////////////// +// DowloadManager +//////////////////////////////////////////////////////////////////////////////// + +DownloadManager::DownloadManager(kiwix::Downloader *downloader) + : mp_downloader(downloader) +{} diff --git a/src/downloadmanagement.h b/src/downloadmanagement.h index 2439e0f..60d09ab 100644 --- a/src/downloadmanagement.h +++ b/src/downloadmanagement.h @@ -9,6 +9,8 @@ #include +#include + typedef QMap DownloadInfo; class DownloadState @@ -59,6 +61,13 @@ public: // types ImplType impl; mutable QMutex mutex; }; + +public: // functions + explicit DownloadManager(kiwix::Downloader *downloader); + +protected: // data + kiwix::Downloader* const mp_downloader; + Downloads m_downloads; }; #endif // DOWNLOADMANAGEMENT_H