From: alex-z Date: Tue, 6 Sep 2022 15:03:31 +0000 (+0300) Subject: Start sync immediately after modifying the selective sync settings. X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~291^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1b98733b1a1acb5bee67fac386899321ff61f38e;p=nextcloud-desktop.git Start sync immediately after modifying the selective sync settings. Signed-off-by: alex-z --- 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; NavigationPaneHelper _navigationPaneHelper; diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp index 80080acc5..6969fa29c 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(); } diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 5ac455321..8c34ea7a2 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -1056,11 +1056,9 @@ void SyncEngine::switchToVirtualFiles(const QString &localPath, SyncJournalDb &j void SyncEngine::abort() { - if (_propagator) - qCInfo(lcEngine) << "Aborting sync"; - if (_propagator) { // If we're already in the propagation phase, aborting that is sufficient + qCInfo(lcEngine) << "Aborting sync in propagator..."; _propagator->abort(); } else if (_discoveryPhase) { // Delete the discovery and all child jobs after ensuring @@ -1068,7 +1066,8 @@ void SyncEngine::abort() disconnect(_discoveryPhase.data(), nullptr, this, nullptr); _discoveryPhase.take()->deleteLater(); - Q_EMIT syncError(tr("Synchronization will resume shortly.")); + Q_EMIT addErrorToGui(SyncFileItem::SoftError, tr("Synchronization has been aborted."), tr("It will resume shortly.")); + qCInfo(lcEngine) << "Aborting sync in discovery..."; finalize(false); } }