Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex-z <blackslayer4@gmail.com>2022-09-06 18:03:31 +0300
committeralex-z <blackslayer4@gmail.com>2022-09-06 18:03:31 +0300
commit32bf3d1a9871c8977020be98a8379750985f8cad (patch)
treee7ffa466f5dfb2b522ad20bc4c5e6217b2b277a0
parent6accbd069ccec8332b4093c4a6e0e74a0f73933d (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.cpp12
-rw-r--r--src/gui/folderman.h5
-rw-r--r--src/gui/folderstatusmodel.cpp2
-rw-r--r--src/gui/selectivesyncdialog.cpp2
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();
}