{Content->Download}Manager::getDownloadInfo()

This commit is contained in:
Veloman Yunkan 2024-05-23 12:42:30 +04:00 committed by Kelson
parent bfad2291c8
commit ff48029f01
4 changed files with 43 additions and 38 deletions

View File

@ -95,7 +95,7 @@ void openFileLocation(QString path, QWidget *parent = nullptr)
ContentManager::ContentManager(Library* library, kiwix::Downloader* downloader, QObject *parent) ContentManager::ContentManager(Library* library, kiwix::Downloader* downloader, QObject *parent)
: QObject(parent), : QObject(parent),
DownloadManager(downloader), DownloadManager(library, downloader),
mp_library(library), mp_library(library),
mp_remoteLibrary(kiwix::Library::create()), mp_remoteLibrary(kiwix::Library::create()),
m_remoteLibraryManager() m_remoteLibraryManager()
@ -528,24 +528,6 @@ void ContentManager::openBookPreview(const QString &id)
} catch (...) {} } 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) void ContentManager::downloadStarted(const kiwix::Book& book, const std::string& downloadId)
{ {
kiwix::Book bookCopy(book); 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) void ContentManager::updateDownload(QString bookId, const DownloadInfo& downloadInfo)
{ {
const auto downloadState = m_downloads.value(bookId); const auto downloadState = m_downloads.value(bookId);

View File

@ -130,7 +130,6 @@ private: // functions
void downloadStarted(const kiwix::Book& book, const std::string& downloadId); void downloadStarted(const kiwix::Book& book, const std::string& downloadId);
void downloadDisappeared(QString bookId); void downloadDisappeared(QString bookId);
void downloadCompleted(QString bookId, QString path); void downloadCompleted(QString bookId, QString path);
DownloadInfo getDownloadInfo(QString bookId) const;
void restoreDownloads(); void restoreDownloads();
private: // data private: // data

View File

@ -37,6 +37,40 @@ void DownloadState::update(const DownloadInfo& downloadInfos)
// DowloadManager // DowloadManager
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
DownloadManager::DownloadManager(kiwix::Downloader *downloader) DownloadManager::DownloadManager(const Library* lib, kiwix::Downloader *downloader)
: mp_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()) }
};
}

View File

@ -11,6 +11,8 @@
#include <kiwix/downloader.h> #include <kiwix/downloader.h>
#include "library.h"
typedef QMap<QString, QVariant> DownloadInfo; typedef QMap<QString, QVariant> DownloadInfo;
class DownloadState class DownloadState
@ -63,9 +65,12 @@ public: // types
}; };
public: // functions public: // functions
explicit DownloadManager(kiwix::Downloader *downloader); DownloadManager(const Library* lib, kiwix::Downloader *downloader);
DownloadInfo getDownloadInfo(QString bookId) const;
protected: // data protected: // data
const Library* const mp_library;
kiwix::Downloader* const mp_downloader; kiwix::Downloader* const mp_downloader;
Downloads m_downloads; Downloads m_downloads;
}; };