Download paused state in UI set by updater thread

Now the downloader paused/active state in UI is set by the updater
thread. This will make it easier to restore downloads after closing
and re-opening kiwix-desktop.
This commit is contained in:
Veloman Yunkan 2024-03-28 12:24:49 +04:00
parent 840ca4c2c3
commit 550604b442
3 changed files with 3 additions and 20 deletions

View File

@ -501,7 +501,7 @@ DownloadInfo ContentManager::getDownloadInfo(QString bookId) const
void ContentManager::updateDownload(QString bookId, const DownloadInfo& downloadInfo)
{
const auto downloadState = m_downloads.value(bookId);
if ( downloadState && !downloadState->paused ) {
if ( downloadState ) {
if ( downloadInfo["status"].toString() == "completed" ) {
downloadCompleted(bookId, downloadInfo["path"].toString());
} else {
@ -684,9 +684,6 @@ void ContentManager::pauseBook(const QString& id, QModelIndex index)
if (download->getStatus() == kiwix::Download::K_ACTIVE) {
try {
download->pauseDownload();
if ( const auto downloadState = m_downloads.value(id) ) {
downloadState->pause();
}
} catch (const kiwix::AriaError&) {
// Download has completed before the pause request was handled.
// Most likely the download was already complete at the time
@ -704,9 +701,6 @@ void ContentManager::resumeBook(const QString& id, QModelIndex index)
auto download = mp_downloader->getDownload(b.getDownloadId());
if (download->getStatus() == kiwix::Download::K_PAUSED) {
download->resumeDownload();
if ( const auto downloadState = m_downloads.value(id) ) {
downloadState->resume();
}
}
managerModel->triggerDataUpdateAt(index);
}

View File

@ -32,17 +32,8 @@ void DownloadState::update(const DownloadInfo& downloadInfos)
percent = QString::number(percent, 'g', 3).toDouble();
auto completedLength = convertToUnits(downloadInfos["completedLength"].toDouble());
auto downloadSpeed = convertToUnits(downloadInfos["downloadSpeed"].toDouble()) + "/s";
*this = {percent, completedLength, downloadSpeed, false};
}
void DownloadState::pause()
{
this->paused = true;
}
void DownloadState::resume()
{
this->paused = false;
const bool paused = downloadInfos["status"] == "paused";
*this = {percent, completedLength, downloadSpeed, paused};
}

View File

@ -17,8 +17,6 @@ public:
bool paused = false;
public:
void pause();
void resume();
void update(const DownloadInfo& info);
};