Start file conflict resolve dialog asynchronous

Fixes #2804

Signed-off-by: Felix Weilbach <felix.weilbach@t-online.de>
This commit is contained in:
Felix Weilbach 2021-01-26 11:35:39 +01:00 committed by Kevin Ottens (Rebase PR Action)
parent 71f0b45412
commit 51d8cf8102
2 changed files with 18 additions and 8 deletions

View file

@ -26,6 +26,7 @@
#include "folderman.h"
#include "iconjob.h"
#include "accessmanager.h"
#include "owncloudgui.h"
#include "ActivityData.h"
#include "ActivityListModel.h"
@ -417,7 +418,7 @@ void ActivityListModel::removeActivityFromActivityList(Activity activity)
}
}
void ActivityListModel::triggerDefaultAction(int activityIndex) const
void ActivityListModel::triggerDefaultAction(int activityIndex)
{
if (activityIndex < 0 || activityIndex >= _finalList.size()) {
qCWarning(lcActivity) << "Couldn't trigger default action at index" << activityIndex << "/ final list size:" << _finalList.size();
@ -444,13 +445,19 @@ void ActivityListModel::triggerDefaultAction(int activityIndex) const
const auto baseName = QFileInfo(basePath).fileName();
ConflictDialog dialog;
dialog.setBaseFilename(baseName);
dialog.setLocalVersionFilename(conflictedPath);
dialog.setRemoteVersionFilename(basePath);
if (dialog.exec() == ConflictDialog::Accepted) {
folder->scheduleThisFolderSoon();
if (!_currentConflictDialog.isNull()) {
_currentConflictDialog->close();
}
_currentConflictDialog = new ConflictDialog;
_currentConflictDialog->setBaseFilename(baseName);
_currentConflictDialog->setLocalVersionFilename(conflictedPath);
_currentConflictDialog->setRemoteVersionFilename(basePath);
_currentConflictDialog->setAttribute(Qt::WA_DeleteOnClose);
connect(_currentConflictDialog, &ConflictDialog::accepted, folder, [folder]() {
folder->scheduleThisFolderSoon();
});
_currentConflictDialog->open();
ownCloudGui::raiseDialog(_currentConflictDialog);
return;
}

View file

@ -26,6 +26,7 @@ namespace OCC {
Q_DECLARE_LOGGING_CATEGORY(lcActivity)
class AccountState;
class ConflictDialog;
/**
* @brief The ActivityListModel
@ -74,7 +75,7 @@ public:
void removeActivityFromActivityList(int row);
void removeActivityFromActivityList(Activity activity);
Q_INVOKABLE void triggerDefaultAction(int activityIndex) const;
Q_INVOKABLE void triggerDefaultAction(int activityIndex);
Q_INVOKABLE void triggerAction(int activityIndex, int actionIndex);
public slots:
@ -113,6 +114,8 @@ private:
int _maxActivities = 100;
int _maxActivitiesDays = 30;
bool _showMoreActivitiesAvailableEntry = false;
QPointer<ConflictDialog> _currentConflictDialog;
};
}