From ff48029f019fcd0d0dbcba822a7305422afdb0b8 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Thu, 23 May 2024 12:42:30 +0400 Subject: [PATCH] {Content->Download}Manager::getDownloadInfo() --- src/contentmanager.cpp | 35 +---------------------------------- src/contentmanager.h | 1 - src/downloadmanagement.cpp | 38 ++++++++++++++++++++++++++++++++++++-- src/downloadmanagement.h | 7 ++++++- 4 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index 0c0f999..a2baf3b 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -95,7 +95,7 @@ void openFileLocation(QString path, QWidget *parent = nullptr) ContentManager::ContentManager(Library* library, kiwix::Downloader* downloader, QObject *parent) : QObject(parent), - DownloadManager(downloader), + DownloadManager(library, downloader), mp_library(library), mp_remoteLibrary(kiwix::Library::create()), m_remoteLibraryManager() @@ -528,24 +528,6 @@ void ContentManager::openBookPreview(const QString &id) } catch (...) {} } -namespace -{ - -QString downloadStatus2QString(kiwix::Download::StatusResult status) -{ - switch(status){ - case kiwix::Download::K_ACTIVE: return "active"; - case kiwix::Download::K_WAITING: return "waiting"; - case kiwix::Download::K_PAUSED: return "paused"; - case kiwix::Download::K_ERROR: return "error"; - case kiwix::Download::K_COMPLETE: return "completed"; - case kiwix::Download::K_REMOVED: return "removed"; - default: return "unknown"; - } -} - -} // unnamed namespace - void ContentManager::downloadStarted(const kiwix::Book& book, const std::string& downloadId) { kiwix::Book bookCopy(book); @@ -590,21 +572,6 @@ void ContentManager::downloadCompleted(QString bookId, QString path) } } -DownloadInfo ContentManager::getDownloadInfo(QString bookId) const -{ - auto& b = mp_library->getBookById(bookId); - const auto d = mp_downloader->getDownload(b.getDownloadId()); - d->updateStatus(true); - - return { - { "status" , downloadStatus2QString(d->getStatus()) }, - { "completedLength" , QString::number(d->getCompletedLength()) }, - { "totalLength" , QString::number(d->getTotalLength()) }, - { "downloadSpeed" , QString::number(d->getDownloadSpeed()) }, - { "path" , QString::fromStdString(d->getPath()) } - }; -} - void ContentManager::updateDownload(QString bookId, const DownloadInfo& downloadInfo) { const auto downloadState = m_downloads.value(bookId); diff --git a/src/contentmanager.h b/src/contentmanager.h index 4e6563a..8c0416b 100644 --- a/src/contentmanager.h +++ b/src/contentmanager.h @@ -130,7 +130,6 @@ private: // functions void downloadStarted(const kiwix::Book& book, const std::string& downloadId); void downloadDisappeared(QString bookId); void downloadCompleted(QString bookId, QString path); - DownloadInfo getDownloadInfo(QString bookId) const; void restoreDownloads(); private: // data diff --git a/src/downloadmanagement.cpp b/src/downloadmanagement.cpp index 576bb0c..7537c5f 100644 --- a/src/downloadmanagement.cpp +++ b/src/downloadmanagement.cpp @@ -37,6 +37,40 @@ void DownloadState::update(const DownloadInfo& downloadInfos) // DowloadManager //////////////////////////////////////////////////////////////////////////////// -DownloadManager::DownloadManager(kiwix::Downloader *downloader) - : mp_downloader(downloader) +DownloadManager::DownloadManager(const Library* lib, kiwix::Downloader *downloader) + : mp_library(lib) + , mp_downloader(downloader) {} + +namespace +{ + +QString downloadStatus2QString(kiwix::Download::StatusResult status) +{ + switch(status){ + case kiwix::Download::K_ACTIVE: return "active"; + case kiwix::Download::K_WAITING: return "waiting"; + case kiwix::Download::K_PAUSED: return "paused"; + case kiwix::Download::K_ERROR: return "error"; + case kiwix::Download::K_COMPLETE: return "completed"; + case kiwix::Download::K_REMOVED: return "removed"; + default: return "unknown"; + } +} + +} // unnamed namespace + +DownloadInfo DownloadManager::getDownloadInfo(QString bookId) const +{ + auto& b = mp_library->getBookById(bookId); + const auto d = mp_downloader->getDownload(b.getDownloadId()); + d->updateStatus(true); + + return { + { "status" , downloadStatus2QString(d->getStatus()) }, + { "completedLength" , QString::number(d->getCompletedLength()) }, + { "totalLength" , QString::number(d->getTotalLength()) }, + { "downloadSpeed" , QString::number(d->getDownloadSpeed()) }, + { "path" , QString::fromStdString(d->getPath()) } + }; +} diff --git a/src/downloadmanagement.h b/src/downloadmanagement.h index 60d09ab..8990fde 100644 --- a/src/downloadmanagement.h +++ b/src/downloadmanagement.h @@ -11,6 +11,8 @@ #include +#include "library.h" + typedef QMap DownloadInfo; class DownloadState @@ -63,9 +65,12 @@ public: // types }; public: // functions - explicit DownloadManager(kiwix::Downloader *downloader); + DownloadManager(const Library* lib, kiwix::Downloader *downloader); + + DownloadInfo getDownloadInfo(QString bookId) const; protected: // data + const Library* const mp_library; kiwix::Downloader* const mp_downloader; Downloads m_downloads; };