[Pkg-owncloud-commits] [owncloud-client] 343/470: SyncFileStatusTracker: Add a method to handle the root item.
Sandro Knauß
hefee-guest at moszumanska.debian.org
Thu May 12 16:25:23 UTC 2016
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit 0f3d6d4160dcd17c794106eb71b2c1933c60da10
Author: Klaas Freitag <freitag at owncloud.com>
Date: Fri Apr 15 15:02:02 2016 +0200
SyncFileStatusTracker: Add a method to handle the root item.
---
src/libsync/syncfilestatustracker.cpp | 45 ++++++++++++++++++++++++++++++++++-
src/libsync/syncfilestatustracker.h | 3 +++
2 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/src/libsync/syncfilestatustracker.cpp b/src/libsync/syncfilestatustracker.cpp
index 8f4f734..a2df3bc 100644
--- a/src/libsync/syncfilestatustracker.cpp
+++ b/src/libsync/syncfilestatustracker.cpp
@@ -77,6 +77,43 @@ SyncFileStatusTracker::SyncFileStatusTracker(SyncEngine *syncEngine)
this, SLOT(slotItemCompleted(const SyncFileItem&)));
}
+SyncFileStatus SyncFileStatusTracker::rootStatus()
+{
+ /* Possible values for the status:
+ enum SyncFileStatusTag {
+ StatusNone,
+ StatusSync,
+ StatusWarning,
+ StatusUpToDate,
+ StatusError,
+ };
+ */
+ SyncFileStatus status = SyncFileStatus::StatusUpToDate;
+
+ if( !_syncEngine ) return SyncFileStatus::StatusNone;
+
+ if( _syncEngine->isSyncRunning() ) {
+ status = SyncFileStatus::StatusSync;
+ } else {
+ // sync is not running. Check dirty list and _syncProblems
+ int errs = 0, warns = 0;
+ for (auto it = _syncProblems.begin(); it != _syncProblems.end(); ++it) {
+ if( it->second == SyncFileStatus::StatusError ) {
+ errs ++;
+ break; // stop if an error found at all.
+ } else {
+ warns ++;
+ }
+ }
+ if( errs ) {
+ status = SyncFileStatus::StatusError;
+ } else if( warns ) {
+ status = SyncFileStatus::StatusWarning;
+ }
+ }
+ return status;
+
+}
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
{
@@ -86,6 +123,11 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
qDebug() << "Removed trailing slash: " << fileName;
}
+ if( fileName.isEmpty() ) {
+ // this is the root sync folder.
+ return rootStatus();
+
+ }
// The SyncEngine won't notify us at all for CSYNC_FILE_SILENTLY_EXCLUDED
// and CSYNC_FILE_EXCLUDE_AND_REMOVE excludes. Even though it's possible
// that the status of CSYNC_FILE_EXCLUDE_LIST excludes will change if the user
@@ -96,8 +138,9 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
return SyncFileStatus(SyncFileStatus::StatusWarning);
SyncFileItem* item = _syncEngine->findSyncItem(fileName);
- if (item)
+ if (item) {
return fileStatus(*item);
+ }
// If we're not currently syncing that file, look it up in the database to know if it's shared
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(fileName);
diff --git a/src/libsync/syncfilestatustracker.h b/src/libsync/syncfilestatustracker.h
index e8e3984..fe8b9b9 100644
--- a/src/libsync/syncfilestatustracker.h
+++ b/src/libsync/syncfilestatustracker.h
@@ -45,10 +45,13 @@ private slots:
private:
SyncFileStatus fileStatus(const SyncFileItem& item);
+ SyncFileStatus rootStatus();
+
void invalidateParentPaths(const QString& path);
QString getSystemDestination(const SyncFileItem& syncEnginePath);
SyncEngine* _syncEngine;
+
std::map<QString, SyncFileStatus::SyncFileStatusTag> _syncProblems;
};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list