mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-26 22:35:55 +03:00
Start file conflict resolve dialog asynchronous
Fixes #2804 Signed-off-by: Felix Weilbach <felix.weilbach@t-online.de>
This commit is contained in:
parent
71f0b45412
commit
51d8cf8102
2 changed files with 18 additions and 8 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue