[Pkg-owncloud-commits] [owncloud-client] 189/332: SocketAPI: Enhance SyncFileStatus to have share information.
Sandro Knauß
hefee-guest at moszumanska.debian.org
Thu Aug 14 21:06:58 UTC 2014
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 c6deb392fdab1a5161a3fe2cc6f00ede2e561a54
Author: Klaas Freitag <freitag at owncloud.com>
Date: Thu Jul 10 14:27:52 2014 +0200
SocketAPI: Enhance SyncFileStatus to have share information.
Added a new class SyncFileStatus to reflect that properly.
---
src/CMakeLists.txt | 1 +
src/mirall/folder.cpp | 22 +++++------
src/mirall/folder.h | 19 +---------
src/mirall/socketapi.cpp | 68 ++++++++++-----------------------
src/mirall/syncfilestatus.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++
src/mirall/syncfilestatus.h | 56 ++++++++++++++++++++++++++++
6 files changed, 177 insertions(+), 76 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e7748b6..f802f91 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -87,6 +87,7 @@ set(libsync_SRCS
mirall/clientproxy.cpp
mirall/syncrunfilelog.cpp
mirall/cookiejar.cpp
+ mirall/syncfilestatus.cpp
creds/dummycredentials.cpp
creds/abstractcredentials.cpp
creds/credentialsfactory.cpp
diff --git a/src/mirall/folder.cpp b/src/mirall/folder.cpp
index f534a2e..5f14ae9 100644
--- a/src/mirall/folder.cpp
+++ b/src/mirall/folder.cpp
@@ -373,17 +373,17 @@ void Folder::bubbleUpSyncResult()
qDebug() << "Processing result list and logging took " << timer.elapsed() << " Milliseconds.";
_syncResult.setWarnCount(ignoredItems);
- createGuiLog( firstItemNew._file, FILE_STATUS_NEW, newItems );
- createGuiLog( firstItemDeleted._file, FILE_STATUS_REMOVE, removedItems );
- createGuiLog( firstItemUpdated._file, FILE_STATUS_UPDATED, updatedItems );
+ createGuiLog( firstItemNew._file, SyncFileStatus(SyncFileStatus::STATUS_NEW), newItems );
+ createGuiLog( firstItemDeleted._file, SyncFileStatus(SyncFileStatus::STATUS_REMOVE), removedItems );
+ createGuiLog( firstItemUpdated._file, SyncFileStatus(SyncFileStatus::STATUS_UPDATED), updatedItems );
if( !firstItemRenamed.isEmpty() ) {
- SyncFileStatus status = FILE_STATUS_RENAME;
+ SyncFileStatus status(SyncFileStatus::STATUS_RENAME);
// if the path changes it's rather a move
QDir renTarget = QFileInfo(firstItemRenamed._renameTarget).dir();
QDir renSource = QFileInfo(firstItemRenamed._file).dir();
if(renTarget != renSource) {
- status = FILE_STATUS_MOVE;
+ status.set(SyncFileStatus::STATUS_MOVE);
}
createGuiLog( firstItemRenamed._file, status, renamedItems, firstItemRenamed._renameTarget );
}
@@ -402,36 +402,36 @@ void Folder::createGuiLog( const QString& filename, SyncFileStatus status, int c
// not all possible values of status are evaluated here because the others
// are not used in the calling function. Please check there.
- switch (status) {
- case FILE_STATUS_REMOVE:
+ switch (status.tag()) {
+ case SyncFileStatus::STATUS_REMOVE:
if( count > 1 ) {
text = tr("%1 and %2 other files have been removed.", "%1 names a file.").arg(file).arg(count-1);
} else {
text = tr("%1 has been removed.", "%1 names a file.").arg(file);
}
break;
- case FILE_STATUS_NEW:
+ case SyncFileStatus::STATUS_NEW:
if( count > 1 ) {
text = tr("%1 and %2 other files have been downloaded.", "%1 names a file.").arg(file).arg(count-1);
} else {
text = tr("%1 has been downloaded.", "%1 names a file.").arg(file);
}
break;
- case FILE_STATUS_UPDATED:
+ case SyncFileStatus::STATUS_UPDATED:
if( count > 1 ) {
text = tr("%1 and %2 other files have been updated.").arg(file).arg(count-1);
} else {
text = tr("%1 has been updated.", "%1 names a file.").arg(file);
}
break;
- case FILE_STATUS_RENAME:
+ case SyncFileStatus::STATUS_RENAME:
if( count > 1 ) {
text = tr("%1 has been renamed to %2 and %3 other files have been renamed.").arg(file).arg(renameTarget).arg(count-1);
} else {
text = tr("%1 has been renamed to %2.", "%1 and %2 name files.").arg(file).arg(renameTarget);
}
break;
- case FILE_STATUS_MOVE:
+ case SyncFileStatus::STATUS_MOVE:
if( count > 1 ) {
text = tr("%1 has been moved to %2 and %3 other files have been moved.").arg(file).arg(renameTarget).arg(count-1);
} else {
diff --git a/src/mirall/folder.h b/src/mirall/folder.h
index 22f9f68..3eb319a 100644
--- a/src/mirall/folder.h
+++ b/src/mirall/folder.h
@@ -21,6 +21,7 @@
#include "mirall/progressdispatcher.h"
#include "mirall/syncjournaldb.h"
#include "mirall/clientproxy.h"
+#include "mirall/syncfilestatus.h"
#include <csync.h>
@@ -42,23 +43,7 @@ class SyncEngine;
class FolderWatcher;
-enum SyncFileStatus {
- FILE_STATUS_NONE,
- FILE_STATUS_EVAL,
- FILE_STATUS_REMOVE,
- FILE_STATUS_RENAME,
- FILE_STATUS_MOVE,
- FILE_STATUS_NEW,
- FILE_STATUS_CONFLICT,
- FILE_STATUS_IGNORE,
- FILE_STATUS_SYNC,
- FILE_STATUS_STAT_ERROR,
- FILE_STATUS_ERROR,
- FILE_STATUS_UPDATED,
- FILE_STATUS_SHARED
-};
-
-class Folder : public QObject
+class OWNCLOUDSYNC_EXPORT Folder : public QObject
{
Q_OBJECT
diff --git a/src/mirall/socketapi.cpp b/src/mirall/socketapi.cpp
index 4b960fd..f88b942 100644
--- a/src/mirall/socketapi.cpp
+++ b/src/mirall/socketapi.cpp
@@ -72,7 +72,7 @@ SyncFileStatus recursiveFolderStatus(Folder *folder, const QString& fileName )
const QStringList dirEntries = dir.entryList( QDir::AllEntries | QDir::NoDotAndDotDot );
- SyncFileStatus result = FILE_STATUS_SYNC;
+ SyncFileStatus result(SyncFileStatus::STATUS_SYNC);
foreach( const QString entry, dirEntries ) {
QFileInfo fi(entry);
@@ -88,10 +88,10 @@ SyncFileStatus recursiveFolderStatus(Folder *folder, const QString& fileName )
sfs = fileStatus(folder, fs );
}
- if( sfs == FILE_STATUS_STAT_ERROR || sfs == FILE_STATUS_ERROR ) {
- return FILE_STATUS_ERROR;
- } else if( sfs == FILE_STATUS_EVAL || sfs == FILE_STATUS_NEW) {
- result = FILE_STATUS_EVAL;
+ if( sfs.tag() == SyncFileStatus::STATUS_STAT_ERROR || sfs.tag() == SyncFileStatus::STATUS_ERROR ) {
+ return SyncFileStatus::STATUS_ERROR;
+ } else if( sfs.tag() == SyncFileStatus::STATUS_EVAL || sfs.tag() == SyncFileStatus::STATUS_NEW) {
+ result.set(SyncFileStatus::STATUS_EVAL);
}
}
return result;
@@ -112,12 +112,12 @@ SyncFileStatus fileStatus(Folder *folder, const QString& fileName )
QFileInfo fi(file);
if( !fi.exists() ) {
- return FILE_STATUS_STAT_ERROR;
+ return SyncFileStatus(SyncFileStatus::STATUS_STAT_ERROR);
}
// file is ignored?
if( fi.isSymLink() ) {
- return FILE_STATUS_IGNORE;
+ return SyncFileStatus(SyncFileStatus::STATUS_IGNORE);
}
int type = CSYNC_FTW_TYPE_FILE;
if( fi.isDir() ) {
@@ -126,28 +126,28 @@ SyncFileStatus fileStatus(Folder *folder, const QString& fileName )
CSYNC_EXCLUDE_TYPE excl = csync_excluded(folder->csyncContext(), file.toUtf8(), type);
if( excl != CSYNC_NOT_EXCLUDED ) {
- return FILE_STATUS_IGNORE;
+ return SyncFileStatus(SyncFileStatus::STATUS_IGNORE);
}
- SyncFileStatus stat = FILE_STATUS_NONE;
SyncJournalFileRecord rec = folder->journalDb()->getFileRecord(fileName);
if( !rec.isValid() ) {
- return FILE_STATUS_NEW;
+ return SyncFileStatus(SyncFileStatus::STATUS_NEW);
}
+ SyncFileStatus stat(SyncFileStatus::STATUS_NONE);
if( type == CSYNC_FTW_TYPE_DIR ) {
// compute recursive status of the directory
stat = recursiveFolderStatus( folder, fileName );
} else if(fi.lastModified() != rec._modtime ) {
// file was locally modified.
- stat = FILE_STATUS_EVAL;
+ stat.set(SyncFileStatus::STATUS_EVAL);
} else {
- stat = FILE_STATUS_SYNC;
+ stat.set(SyncFileStatus::STATUS_SYNC);
}
if (rec._remotePerm.contains("S")) {
// FIXME! that should be an additional flag
- stat = FILE_STATUS_SHARED;
+ stat.setSharedWithMe(true);
}
return stat;
@@ -294,44 +294,16 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, QLocalSock
QString statusString;
- Folder* folder = FolderMan::instance()->folderForPath( argument );
- // this can happen in offline mode e.g.: nothing to worry about
- if (!folder) {
+ Folder* syncFolder = FolderMan::instance()->folderForPath( argument );
+ if (!syncFolder) {
+ // this can happen in offline mode e.g.: nothing to worry about
DEBUG << "folder offline or not watched:" << argument;
statusString = QLatin1String("NOP");
- }
+ } else {
+ const QString file = argument.mid(syncFolder->path().length());
+ SyncFileStatus fileStatus = SocketApiHelper::fileStatus(syncFolder, file);
- if( statusString.isEmpty() ) {
- SyncFileStatus fileStatus = SocketApiHelper::fileStatus(folder, argument.mid(folder->path().length()) );
-
- switch(fileStatus)
- {
- case FILE_STATUS_NONE:
- statusString = QLatin1String("NONE");
- break;
- case FILE_STATUS_EVAL:
- case FILE_STATUS_NEW:
- statusString = QLatin1String("NEED_SYNC");
- break;
- case FILE_STATUS_IGNORE:
- statusString = QLatin1String("IGNORE");
- break;
- case FILE_STATUS_SYNC:
- case FILE_STATUS_UPDATED:
- statusString = QLatin1String("OK");
- break;
- case FILE_STATUS_STAT_ERROR:
- case FILE_STATUS_ERROR:
- statusString = QLatin1String("ERROR");
- break;
- case FILE_STATUS_SHARED:
- statusString = QLatin1String("SHARED");
- break;
- default:
- qWarning() << "This status should not be there" << fileStatus;
- Q_ASSERT(false);
- statusString = QLatin1String("NONE");
- }
+ statusString = fileStatus.toSocketAPIString();
}
QString message = QLatin1String("STATUS:")+statusString+QLatin1Char(':')+argument;
diff --git a/src/mirall/syncfilestatus.cpp b/src/mirall/syncfilestatus.cpp
new file mode 100644
index 0000000..8c8770a
--- /dev/null
+++ b/src/mirall/syncfilestatus.cpp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) by Klaas Freitag <freitag at owncloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include "mirall/syncfilestatus.h"
+
+#include <QDebug>
+
+namespace Mirall {
+SyncFileStatus::SyncFileStatus()
+ :_tag(STATUS_NONE), _sharedWithMe(false)
+{
+}
+
+SyncFileStatus::SyncFileStatus(SyncFileStatusTag tag)
+ :_tag(tag), _sharedWithMe(false)
+{
+
+}
+
+void SyncFileStatus::set(SyncFileStatusTag tag)
+{
+ _tag = tag;
+}
+
+SyncFileStatus::SyncFileStatusTag SyncFileStatus::tag()
+{
+ return _tag;
+}
+
+void SyncFileStatus::setSharedWithMe(bool isShared)
+{
+ _sharedWithMe = isShared;
+}
+
+bool SyncFileStatus::sharedWithMe()
+{
+ return _sharedWithMe;
+}
+
+QString SyncFileStatus::toSocketAPIString() const
+{
+ QString statusString;
+
+ switch(_tag)
+ {
+ case STATUS_NONE:
+ statusString = QLatin1String("NONE");
+ break;
+ case STATUS_EVAL:
+ statusString = QLatin1String("SYNC");
+ break;
+ case STATUS_NEW:
+ statusString = QLatin1String("NEW");
+ break;
+ case STATUS_IGNORE:
+ statusString = QLatin1String("IGNORE");
+ break;
+ case STATUS_SYNC:
+ case STATUS_UPDATED:
+ statusString = QLatin1String("OK");
+ break;
+ case STATUS_STAT_ERROR:
+ case STATUS_ERROR:
+ statusString = QLatin1String("ERROR");
+ break;
+ default:
+ qWarning() << "This status should not be here:" << _tag;
+ Q_ASSERT(false);
+ statusString = QLatin1String("NONE");
+ }
+ if(_sharedWithMe) {
+ statusString += QLatin1String("+SWM");
+ }
+
+ return statusString;
+}
+}
diff --git a/src/mirall/syncfilestatus.h b/src/mirall/syncfilestatus.h
new file mode 100644
index 0000000..2c3e6ea
--- /dev/null
+++ b/src/mirall/syncfilestatus.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) by Klaas Freitag <freitag at owncloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#ifndef SYNCFILESTATUS_H
+#define SYNCFILESTATUS_H
+
+#include <QString>
+
+namespace Mirall {
+
+class SyncFileStatus
+{
+public:
+ enum SyncFileStatusTag {
+ STATUS_NONE,
+ STATUS_EVAL,
+ STATUS_REMOVE,
+ STATUS_RENAME,
+ STATUS_MOVE,
+ STATUS_NEW,
+ STATUS_CONFLICT,
+ STATUS_IGNORE,
+ STATUS_SYNC,
+ STATUS_STAT_ERROR,
+ STATUS_ERROR,
+ STATUS_UPDATED
+ };
+
+ SyncFileStatus();
+ SyncFileStatus(SyncFileStatusTag);
+
+ void set(SyncFileStatusTag tag);
+ SyncFileStatusTag tag();
+
+ void setSharedWithMe( bool isShared );
+ bool sharedWithMe();
+
+ QString toSocketAPIString() const;
+private:
+ SyncFileStatusTag _tag;
+ bool _sharedWithMe;
+
+};
+}
+
+#endif // SYNCFILESTATUS_H
--
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