From 6ba6ad0ee8c384a938b74893a4b4b236482f0d3f Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Fri, 9 Feb 2024 18:01:07 +0400 Subject: [PATCH] ContentManager::startDownload() --- src/contentmanager.cpp | 24 ++++++++++++++++-------- src/contentmanager.h | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index 8c11b8a..a895aac 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -499,6 +499,19 @@ const kiwix::Book& ContentManager::getRemoteOrLocalBook(const QString &id) } } +std::string ContentManager::startDownload(const kiwix::Book& book) +{ + auto downloadPath = KiwixApp::instance()->getSettingsManager()->getDownloadDir(); + checkEnoughStorageAvailable(book, downloadPath); + + typedef std::vector> DownloadOptions; + + const DownloadOptions downloadOptions{{"dir", downloadPath.toStdString()}}; + + const auto d = mp_downloader->startDownload(book.getUrl(), downloadOptions); + return d->getDid(); +} + void ContentManager::downloadBook(const QString &id) { if (!mp_downloader) @@ -506,18 +519,13 @@ void ContentManager::downloadBook(const QString &id) const auto& book = getRemoteOrLocalBook(id); - auto downloadPath = KiwixApp::instance()->getSettingsManager()->getDownloadDir(); - checkEnoughStorageAvailable(book, downloadPath); - - std::shared_ptr download; + std::string downloadId; try { - std::pair downloadDir("dir", downloadPath.toStdString()); - const std::vector> options = { downloadDir }; - download = mp_downloader->startDownload(book.getUrl(), options); + downloadId = startDownload(book); } catch (std::exception& e) { throwDownloadUnavailableError(); } - downloadStarted(book, download->getDid()); + downloadStarted(book, downloadId); } void ContentManager::eraseBookFilesFromComputer(const QString dirPath, const QString fileName, const bool moveToTrash) diff --git a/src/contentmanager.h b/src/contentmanager.h index 4f581c3..b19a80a 100644 --- a/src/contentmanager.h +++ b/src/contentmanager.h @@ -85,6 +85,7 @@ private: // functions // the remote or local library (in that order). const kiwix::Book& getRemoteOrLocalBook(const QString &id); + std::string startDownload(const kiwix::Book& book); void downloadStarted(const kiwix::Book& book, const std::string& downloadId); void downloadCancelled(QString bookId); void downloadCompleted(QString bookId, QString path);