*/
#include "syncconflictsmodel.h"
+
#include "folderman.h"
#include <QLoggingCategory>
}
}
+void SyncConflictsModel::applyResolution()
+{
+ for(const auto &syncConflict : qAsConst(mConflictData)) {
+ if (syncConflict.isValid()) {
+ qCInfo(lcSyncConflictsModel) << syncConflict.mExistingFilePath << syncConflict.mConflictingFilePath << syncConflict.solution();
+ ConflictSolver solver;
+ solver.setLocalVersionFilename(syncConflict.mConflictingFilePath);
+ solver.setRemoteVersionFilename(syncConflict.mExistingFilePath);
+ solver.exec(syncConflict.solution());
+ }
+ }
+}
+
void SyncConflictsModel::updateConflictsData()
{
mConflictData.clear();
QUrl{QStringLiteral("image://tray-image-provider/:/fileicon") + conflictFileInfo.filePath()},
false,
false,
+ existingFileInfo.filePath(),
+ conflictFileInfo.filePath(),
};
mConflictData.push_back(std::move(newConflictData));
}
}
+ConflictSolver::Solution SyncConflictsModel::ConflictInfo::solution() const
+{
+ auto result = ConflictSolver::Solution{};
+
+ if (mConflictSelected && mExistingSelected) {
+ result = ConflictSolver::KeepBothVersions;
+ } else if (!mConflictSelected && mExistingSelected) {
+ result = ConflictSolver::KeepLocalVersion;
+ } else if (mConflictSelected && !mExistingSelected) {
+ result = ConflictSolver::KeepRemoteVersion;
+ }
+
+ return result;
+}
+
+bool SyncConflictsModel::ConflictInfo::isValid() const
+{
+ return mConflictSelected || mExistingSelected;
+}
+
}
#include "tray/activitydata.h"
+#include "conflictsolver.h"
+
#include <QAbstractListModel>
#include <QMimeDatabase>
#include <QLocale>
QUrl mConflictPreviewUrl;
bool mExistingSelected = false;
bool mConflictSelected = false;
+ QString mExistingFilePath;
+ QString mConflictingFilePath;
+
+ [[nodiscard]] ConflictSolver::Solution solution() const;
+ [[nodiscard]] bool isValid() const;
};
public:
void selectAllConflicting(bool selected);
+ void applyResolution();
+
signals:
void conflictActivitiesChanged();