From b835092ae9b3ca2859a830c7d485f0c9025a6399 Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Wed, 7 Oct 2020 18:05:21 +0200 Subject: [PATCH] Use the ConflictDialog directly from the activity list No need to go to the file manager first to then have the user go through the context menu, just popup the dialog directly. Signed-off-by: Kevin Ottens --- src/gui/tray/ActivityListModel.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/gui/tray/ActivityListModel.cpp b/src/gui/tray/ActivityListModel.cpp index 3887093b7..15d7a22bd 100644 --- a/src/gui/tray/ActivityListModel.cpp +++ b/src/gui/tray/ActivityListModel.cpp @@ -22,6 +22,7 @@ #include "account.h" #include "accountstate.h" #include "accountmanager.h" +#include "conflictdialog.h" #include "folderman.h" #include "iconjob.h" #include "accessmanager.h" @@ -426,6 +427,32 @@ void ActivityListModel::triggerActionAtIndex(int id) const const auto modelIndex = index(id); const auto path = data(modelIndex, PathRole).toUrl(); + + const auto activity = _finalList.at(id); + if (activity._status == SyncFileItem::Conflict) { + Q_ASSERT(!activity._file.isEmpty()); + Q_ASSERT(!activity._folder.isEmpty()); + Q_ASSERT(Utility::isConflictFile(activity._file)); + + const auto folder = FolderMan::instance()->folder(activity._folder); + + const auto conflictedRelativePath = activity._file; + const auto baseRelativePath = folder->journalDb()->conflictFileBaseName(conflictedRelativePath.toUtf8()); + + const auto dir = QDir(folder->path()); + const auto conflictedPath = dir.filePath(conflictedRelativePath); + const auto basePath = dir.filePath(baseRelativePath); + + const auto baseName = QFileInfo(basePath).fileName(); + + ConflictDialog dialog; + dialog.setBaseFilename(baseName); + dialog.setLocalVersionFilename(conflictedPath); + dialog.setRemoteVersionFilename(basePath); + dialog.exec(); + return; + } + if (path.isValid()) { QDesktopServices::openUrl(path); } else { -- 2.30.2