From d04d53d55860473c21700d4cf880b060ae1211d6 Mon Sep 17 00:00:00 2001 From: alex-z Date: Tue, 6 Sep 2022 14:36:29 +0300 Subject: [PATCH] Fix wrong estimated time when doing sync. Signed-off-by: alex-z --- src/gui/folderstatusmodel.cpp | 26 ++++++++++++++++++++------ src/gui/folderstatusmodel.h | 2 ++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp index 51bbe4f748406..80080acc5dbac 100644 --- a/src/gui/folderstatusmodel.cpp +++ b/src/gui/folderstatusmodel.cpp @@ -963,6 +963,10 @@ void FolderStatusModel::slotSetProgress(const ProgressInfo &progress) auto *pi = &_folders[folderIndex]._progress; + if (progress.status() == ProgressInfo::Starting) { + _isSyncRunningForAwhile = false; + } + QVector roles; roles << FolderStatusDelegate::SyncProgressItemString << FolderStatusDelegate::WarningCount @@ -1086,13 +1090,23 @@ void FolderStatusModel::slotSetProgress(const ProgressInfo &progress) QString s1 = Utility::octetsToString(completedSize); QString s2 = Utility::octetsToString(totalSize); - if (progress.trustEta()) { + const auto estimatedEta = progress.totalProgress().estimatedEta; + + if (progress.trustEta() && (estimatedEta > 0 || _isSyncRunningForAwhile)) { + _isSyncRunningForAwhile = true; //: Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - overallSyncString = tr("%5 left, %1 of %2, file %3 of %4") - .arg(s1, s2) - .arg(currentFile) - .arg(totalFileCount) - .arg(Utility::durationToDescriptiveString1(progress.totalProgress().estimatedEta)); + if (estimatedEta == 0) { + overallSyncString = tr("A few seconds left, %1 of %2, file %3 of %4") + .arg(s1, s2) + .arg(currentFile) + .arg(totalFileCount); + } else { + overallSyncString = tr("%5 left, %1 of %2, file %3 of %4") + .arg(s1, s2) + .arg(currentFile) + .arg(totalFileCount) + .arg(Utility::durationToDescriptiveString1(estimatedEta)); + } } else { //: Example text: "12 MB of 345 MB, file 6 of 7" diff --git a/src/gui/folderstatusmodel.h b/src/gui/folderstatusmodel.h index 896a19550bdee..9896d5644efc8 100644 --- a/src/gui/folderstatusmodel.h +++ b/src/gui/folderstatusmodel.h @@ -147,6 +147,8 @@ private slots: const AccountState *_accountState = nullptr; bool _dirty = false; // If the selective sync checkboxes were changed + bool _isSyncRunningForAwhile = false; + /** * Keeps track of items that are fetching data from the server. *