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

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2021-08-23 14:08:07 +0300
committerHannah von Reth <vonreth@kde.org>2021-08-23 15:05:24 +0300
commit64668edd9aeec3f14ea4cc4d42e23cb323c5557e (patch)
treef09718357bef2aae6c5691a514bca155c1f4f667 /src/gui/folderman.cpp
parentdb53e290191bd651c0ad32ea4c7d2a7a5370926b (diff)
Fix last sync date for multiple accounts
Fixes: #8904
Diffstat (limited to 'src/gui/folderman.cpp')
-rw-r--r--src/gui/folderman.cpp55
1 files changed, 19 insertions, 36 deletions
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp
index 335091bd6..d591d2f25 100644
--- a/src/gui/folderman.cpp
+++ b/src/gui/folderman.cpp
@@ -42,35 +42,37 @@ static const int maxFoldersVersion = 1;
namespace OCC {
Q_LOGGING_CATEGORY(lcFolderMan, "gui.folder.manager", QtInfoMsg)
-void TrayOverallStatusResult::addResult(const SyncResult &result)
+void TrayOverallStatusResult::addResult(Folder *f)
{
- _overallStatus._numNewConflictItems += result._numNewConflictItems;
- _overallStatus._numErrorItems += result._numErrorItems;
- _overallStatus._numBlacklistErrors += result._numBlacklistErrors;
+ _overallStatus._numNewConflictItems += f->syncResult()._numNewConflictItems;
+ _overallStatus._numErrorItems += f->syncResult()._numErrorItems;
+ _overallStatus._numBlacklistErrors += f->syncResult()._numBlacklistErrors;
- switch (result.status()) {
- case SyncResult::Success:
- // only if every result is success
- if (_overallStatus.status() == SyncResult::Undefined) {
- _overallStatus.setStatus(SyncResult::Success);
- }
- break;
+ auto time = f->lastSyncTime();
+ if (time > lastSyncDone) {
+ lastSyncDone = time;
+ }
+
+ const auto status = f->syncPaused() ? SyncResult::Paused : f->syncResult().status();
+ switch (status) {
case SyncResult::Paused:
Q_FALLTHROUGH();
case SyncResult::SyncAbortRequested:
// Problem has a high enum value but real problems and errors
// take precedence
- if (_overallStatus.status() < SyncResult::Problem) {
- _overallStatus.setStatus(SyncResult::Paused);
+ if (_overallStatus.status() < SyncResult::Success) {
+ _overallStatus.setStatus(status);
}
break;
+ case SyncResult::Success:
+ Q_FALLTHROUGH();
case SyncResult::NotYetStarted:
Q_FALLTHROUGH();
case SyncResult::SyncPrepare:
Q_FALLTHROUGH();
case SyncResult::SyncRunning:
if (_overallStatus.status() < SyncResult::Problem) {
- _overallStatus.setStatus(SyncResult::SyncRunning);
+ _overallStatus.setStatus(status);
}
break;
case SyncResult::Undefined:
@@ -83,8 +85,8 @@ void TrayOverallStatusResult::addResult(const SyncResult &result)
case SyncResult::Error:
Q_FALLTHROUGH();
case SyncResult::SetupError:
- if (_overallStatus.status() < result.status()) {
- _overallStatus.setStatus(result.status());
+ if (_overallStatus.status() < status) {
+ _overallStatus.setStatus(status);
}
break;
}
@@ -1263,30 +1265,11 @@ TrayOverallStatusResult FolderMan::trayOverallStatus(const QList<Folder *> &fold
{
TrayOverallStatusResult result;
- // if one folder: show the state of the one folder.
- // if more folders:
// if one of them has an error -> show error
// if one is paused, but others ok, show ok
- // do not show "problem" in the tray
//
- if (folders.count() == 1) {
- const auto currentFolderLastSyncDone = QDateTime::currentDateTime().addMSecs(-1 * folders.first()->msecSinceLastSync().count());
-
- if (result.lastSyncDone.isNull()) {
- result.lastSyncDone = currentFolderLastSyncDone;
- } else {
- if (currentFolderLastSyncDone > result.lastSyncDone) {
- result.lastSyncDone = currentFolderLastSyncDone;
- }
- }
- }
for (auto *folder : folders) {
- const SyncResult folderResult = folder->syncResult();
- if (folder->syncPaused()) {
- result.addResult(SyncResult { SyncResult::Paused });
- } else {
- result.addResult(folderResult);
- }
+ result.addResult(folder);
}
return result;
}