diff --git a/src/downloadmanagement.cpp b/src/downloadmanagement.cpp index 7686d50..3e2cbeb 100644 --- a/src/downloadmanagement.cpp +++ b/src/downloadmanagement.cpp @@ -95,7 +95,9 @@ void DownloadManager::startDownloadUpdaterThread() mp_downloadUpdaterThread = QThread::create([=]() { while ( mp_downloadUpdaterThread != nullptr ) { - updateDownloads(); + for ( const auto& bookId : m_downloads.keys() ) { + updateDownload(bookId); + } QThread::msleep(1000); } }); @@ -114,19 +116,17 @@ void DownloadManager::restoreDownloads() } } -void DownloadManager::updateDownloads() +void DownloadManager::updateDownload(QString bookId) { DownloadInfo downloadInfo; - for ( const auto& bookId : m_downloads.keys() ) { - try { - downloadInfo = getDownloadInfo(bookId); - } catch ( ... ) { - emit downloadDisappeared(bookId); - continue; - } - - emit downloadUpdated(bookId, downloadInfo); + try { + downloadInfo = getDownloadInfo(bookId); + } catch ( ... ) { + emit downloadDisappeared(bookId); + return; } + + emit downloadUpdated(bookId, downloadInfo); } namespace diff --git a/src/downloadmanagement.h b/src/downloadmanagement.h index bd1b3e2..fa80484 100644 --- a/src/downloadmanagement.h +++ b/src/downloadmanagement.h @@ -97,7 +97,6 @@ public: // functions DownloadInfo getDownloadInfo(QString bookId) const; void restoreDownloads(); - void updateDownloads(); // returns the download id std::string startDownload(const kiwix::Book& book, const QString& downloadDirPath); @@ -115,6 +114,9 @@ signals: void downloadUpdated(QString bookId, const DownloadInfo& ); void downloadDisappeared(QString bookId); +private: // functions + void updateDownload(QString bookId); + private: // data const Library* const mp_library; kiwix::Downloader* const mp_downloader;