mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 13:25:52 +03:00
Added progressInfo / cleanup to acitivtymodel
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
This commit is contained in:
parent
84066634e7
commit
eeefbe57af
2 changed files with 70 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
#include "accountmanager.h"
|
||||
#include "owncloudgui.h"
|
||||
#include "UserModel.h"
|
||||
#include "syncengine.h"
|
||||
|
||||
#include <QDesktopServices>
|
||||
#include <QIcon>
|
||||
|
@ -17,12 +18,80 @@ User::User(AccountStatePtr &account, const bool &isCurrent, QObject* parent)
|
|||
, _isCurrentUser(isCurrent)
|
||||
, _activityModel(new ActivityListModel(_account.data()))
|
||||
{
|
||||
connect(ProgressDispatcher::instance(), &ProgressDispatcher::progressInfo,
|
||||
this, &User::slotProgressInfo);
|
||||
connect(ProgressDispatcher::instance(), &ProgressDispatcher::itemCompleted,
|
||||
this, &User::slotItemCompleted);
|
||||
connect(ProgressDispatcher::instance(), &ProgressDispatcher::syncError,
|
||||
this, &User::slotAddError);
|
||||
}
|
||||
|
||||
void User::slotProgressInfo(const QString &folder, const ProgressInfo &progress)
|
||||
{
|
||||
if (progress.status() == ProgressInfo::Reconcile) {
|
||||
// Wipe all non-persistent entries - as well as the persistent ones
|
||||
// in cases where a local discovery was done.
|
||||
auto f = FolderMan::instance()->folder(folder);
|
||||
if (!f)
|
||||
return;
|
||||
const auto &engine = f->syncEngine();
|
||||
const auto style = engine.lastLocalDiscoveryStyle();
|
||||
foreach (Activity activity, _activityModel->errorsList()) {
|
||||
if (activity._folder != folder) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (style == LocalDiscoveryStyle::FilesystemOnly) {
|
||||
_activityModel->removeActivityFromActivityList(activity);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (activity._status == SyncFileItem::Conflict && !QFileInfo(f->path() + activity._file).exists()) {
|
||||
_activityModel->removeActivityFromActivityList(activity);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (activity._status == SyncFileItem::FileLocked && !QFileInfo(f->path() + activity._file).exists()) {
|
||||
_activityModel->removeActivityFromActivityList(activity);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (activity._status == SyncFileItem::FileIgnored && !QFileInfo(f->path() + activity._file).exists()) {
|
||||
_activityModel->removeActivityFromActivityList(activity);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!QFileInfo(f->path() + activity._file).exists()) {
|
||||
_activityModel->removeActivityFromActivityList(activity);
|
||||
continue;
|
||||
}
|
||||
|
||||
auto path = QFileInfo(activity._file).dir().path().toUtf8();
|
||||
if (path == ".")
|
||||
path.clear();
|
||||
|
||||
if (engine.shouldDiscoverLocally(path))
|
||||
_activityModel->removeActivityFromActivityList(activity);
|
||||
}
|
||||
}
|
||||
|
||||
if (progress.status() == ProgressInfo::Done) {
|
||||
// We keep track very well of pending conflicts.
|
||||
// Inform other components about them.
|
||||
QStringList conflicts;
|
||||
foreach (Activity activity, _activityModel->errorsList()) {
|
||||
if (activity._folder == folder
|
||||
&& activity._status == SyncFileItem::Conflict) {
|
||||
conflicts.append(activity._file);
|
||||
}
|
||||
}
|
||||
|
||||
emit ProgressDispatcher::instance()->folderConflicts(folder, conflicts);
|
||||
}
|
||||
}
|
||||
|
||||
void User::slotAddError(const QString &folderAlias, const QString &message, ErrorCategory category)
|
||||
{
|
||||
auto folderInstance = FolderMan::instance()->folder(folderAlias);
|
||||
|
|
|
@ -38,6 +38,7 @@ public:
|
|||
|
||||
public slots:
|
||||
void slotItemCompleted(const QString &folder, const SyncFileItemPtr &item);
|
||||
void slotProgressInfo(const QString &folder, const ProgressInfo &progress);
|
||||
void slotAddError(const QString &folderAlias, const QString &message, ErrorCategory category);
|
||||
|
||||
private:
|
||||
|
|
Loading…
Reference in a new issue