diff options
author | alex-z <blackslayer4@gmail.com> | 2022-09-06 18:03:31 +0300 |
---|---|---|
committer | alex-z <blackslayer4@gmail.com> | 2022-09-06 18:03:31 +0300 |
commit | 32bf3d1a9871c8977020be98a8379750985f8cad (patch) | |
tree | e7ffa466f5dfb2b522ad20bc4c5e6217b2b277a0 | |
parent | 6accbd069ccec8332b4093c4a6e0e74a0f73933d (diff) |
Start sync immediately after modifying the selective sync settings.bugfix/selective-sync-abort-error
Signed-off-by: alex-z <blackslayer4@gmail.com>
-rw-r--r-- | src/gui/folderman.cpp | 12 | ||||
-rw-r--r-- | src/gui/folderman.h | 5 | ||||
-rw-r--r-- | src/gui/folderstatusmodel.cpp | 2 | ||||
-rw-r--r-- | src/gui/selectivesyncdialog.cpp | 2 |
4 files changed, 19 insertions, 2 deletions
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 2191037d0..beac2f093 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -643,6 +643,12 @@ void FolderMan::scheduleFolder(Folder *f) startScheduledSyncSoon(); } +void FolderMan::scheduleFolderForImmediateSync(Folder *f) +{ + _nextSyncShouldStartImmediately = true; + scheduleFolder(f); +} + void FolderMan::scheduleFolderNext(Folder *f) { auto alias = f->alias(); @@ -792,6 +798,12 @@ void FolderMan::startScheduledSyncSoon() // Time since the last sync run counts against the delay msDelay = qMax(1ll, msDelay - msSinceLastSync); + if (_nextSyncShouldStartImmediately) { + _nextSyncShouldStartImmediately = false; + qCInfo(lcFolderMan) << "Next sync is marked to start immediately, so setting the delay to '0'"; + msDelay = 0; + } + qCInfo(lcFolderMan) << "Starting the next scheduled sync in" << (msDelay / 1000) << "seconds"; _startScheduledSyncTimer.start(msDelay); } diff --git a/src/gui/folderman.h b/src/gui/folderman.h index 3677073c3..689d102d1 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -193,6 +193,9 @@ public: /** Queues a folder for syncing. */ void scheduleFolder(Folder *); + /** Queues a folder for syncing that starts immediately. */ + void scheduleFolderForImmediateSync(Folder *); + /** Puts a folder in the very front of the queue. */ void scheduleFolderNext(Folder *); @@ -357,6 +360,8 @@ private: /// Picks the next scheduled folder and starts the sync QTimer _startScheduledSyncTimer; + bool _nextSyncShouldStartImmediately = false; + QScopedPointer<SocketApi> _socketApi; NavigationPaneHelper _navigationPaneHelper; diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp index 51bbe4f74..ef8e00de2 100644 --- a/src/gui/folderstatusmodel.cpp +++ b/src/gui/folderstatusmodel.cpp @@ -931,7 +931,7 @@ void FolderStatusModel::slotApplySelectiveSync() folder->journalDb()->schedulePathForRemoteDiscovery(it); folder->schedulePathForLocalDiscovery(it); } - FolderMan::instance()->scheduleFolder(folder); + FolderMan::instance()->scheduleFolderForImmediateSync(folder); } } diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp index 06efaf90b..3b8a33612 100644 --- a/src/gui/selectivesyncdialog.cpp +++ b/src/gui/selectivesyncdialog.cpp @@ -544,7 +544,7 @@ void SelectiveSyncDialog::accept() _folder->schedulePathForLocalDiscovery(it); } - folderMan->scheduleFolder(_folder); + folderMan->scheduleFolderForImmediateSync(_folder); } QDialog::accept(); } |