From: Kevin Ottens Date: Wed, 7 Oct 2020 16:05:21 +0000 (+0200) Subject: Use the ConflictDialog directly from the activity list X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~22^2~95^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b835092ae9b3ca2859a830c7d485f0c9025a6399;p=nextcloud-desktop.git 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 --- 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 {