nextcloud-desktop/src/libsync/syncresult.h
Christian Kamm 797473ba1f SyncResult: Make sure the number of conflicts is correct #6226
If the SyncResult incorrectly believes that there are no conflicts, the
tray icon won't be correct and there will be no warning about unresolved
conflicts on the account.

Nevertheless, it's pretty awkward that the IssuesWidget is better
informed about pending conflicts than the Folder itself. This kind of
backwards data flow is very confusing.

Unfortunately the only alternative I see is to either keep track of
this information in two places (also in Folder), or create a common
data-holding class that can serve as a model instance for the issues
view as well as provide data directly to the Folder - which would
have been a much larger change.
2018-03-06 13:02:54 +01:00

115 lines
3.4 KiB
C++

/*
* Copyright (C) by Duncan Mac-Vicar P. <duncan@kde.org>
*
* 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; either version 2 of the License, or
* (at your option) any later version.
*
* 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 MIRALL_SYNCRESULT_H
#define MIRALL_SYNCRESULT_H
#include <QStringList>
#include <QHash>
#include <QDateTime>
#include "owncloudlib.h"
#include "syncfileitem.h"
namespace OCC {
/**
* @brief The SyncResult class
* @ingroup libsync
*/
class OWNCLOUDSYNC_EXPORT SyncResult
{
public:
enum Status {
Undefined,
NotYetStarted,
SyncPrepare,
SyncRunning,
SyncAbortRequested,
Success,
Problem,
Error,
SetupError,
Paused
};
SyncResult();
void reset();
void appendErrorString(const QString &);
QString errorString() const;
QStringList errorStrings() const;
void clearErrors();
void setStatus(Status);
Status status() const;
QString statusString() const;
QDateTime syncTime() const;
void setFolder(const QString &folder);
QString folder() const;
bool foundFilesNotSynced() const { return _foundFilesNotSynced; }
bool folderStructureWasChanged() const { return _folderStructureWasChanged; }
int numNewItems() const { return _numNewItems; }
int numRemovedItems() const { return _numRemovedItems; }
int numUpdatedItems() const { return _numUpdatedItems; }
int numRenamedItems() const { return _numRenamedItems; }
int numNewConflictItems() const { return _numNewConflictItems; }
int numOldConflictItems() const { return _numOldConflictItems; }
void setNumOldConflictItems(int n) { _numOldConflictItems = n; }
int numErrorItems() const { return _numErrorItems; }
bool hasUnresolvedConflicts() const { return _numNewConflictItems + _numOldConflictItems > 0; }
const SyncFileItemPtr &firstItemNew() const { return _firstItemNew; }
const SyncFileItemPtr &firstItemDeleted() const { return _firstItemDeleted; }
const SyncFileItemPtr &firstItemUpdated() const { return _firstItemUpdated; }
const SyncFileItemPtr &firstItemRenamed() const { return _firstItemRenamed; }
const SyncFileItemPtr &firstNewConflictItem() const { return _firstNewConflictItem; }
const SyncFileItemPtr &firstItemError() const { return _firstItemError; }
void processCompletedItem(const SyncFileItemPtr &item);
private:
Status _status;
SyncFileItemVector _syncItems;
QDateTime _syncTime;
QString _folder;
/**
* when the sync tool support this...
*/
QStringList _errors;
bool _foundFilesNotSynced;
bool _folderStructureWasChanged;
// count new, removed and updated items
int _numNewItems;
int _numRemovedItems;
int _numUpdatedItems;
int _numRenamedItems;
int _numNewConflictItems;
int _numOldConflictItems;
int _numErrorItems;
SyncFileItemPtr _firstItemNew;
SyncFileItemPtr _firstItemDeleted;
SyncFileItemPtr _firstItemUpdated;
SyncFileItemPtr _firstItemRenamed;
SyncFileItemPtr _firstNewConflictItem;
SyncFileItemPtr _firstItemError;
};
}
#endif