conflictItemWidget.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <QFile>
  3. #include <QWidget>
  4. #include <QListWidget>
  5. #include "FileDiff.h"
  6. class Ui_ConflictItemWidget;
  7. namespace craftlab::fakeraid
  8. {
  9. class ConflictItemWidget : public QWidget
  10. {
  11. Q_OBJECT
  12. public:
  13. enum class Action
  14. {
  15. Undefined,
  16. UseVersion,
  17. Copy,
  18. Remove,
  19. Ignore,
  20. };
  21. static ConflictItemWidget* FromMissingFile(QListWidget* parent, const std::vector<std::string>& rootPaths, const std::string& filename, const std::vector<bool>& version);
  22. static ConflictItemWidget* FromMissingDir(QListWidget* parent, const std::vector<std::string>& rootPaths, const std::string& filename, const std::vector<bool>& version);
  23. static ConflictItemWidget* FromConflict(QListWidget* parent, const std::vector<std::string>& rootPaths, const std::string& filename, const std::vector<int>& version);
  24. Action GetAction() const;
  25. void SetAction(Action&& action);
  26. std::string GetFileName() const;
  27. int GetVersionToUse() const;
  28. signals:
  29. void ActionChanged();
  30. private:
  31. ConflictItemWidget(QListWidget* parent, const QFile& fullPath, const std::string& filename);
  32. static void listRepositories(const std::vector<int>& repo, std::stringstream& stream);
  33. static std::map<int, std::vector<int>> groupFileByVersion(const std::vector<int>& versions);
  34. static std::vector<int> versionExistsToVersionNumber(const std::vector<bool> exists);
  35. static void populateListStream(const std::map<int, std::vector<int>>& repoByVersion, std::stringstream& stream);
  36. const std::string filename;
  37. Action currentAction = Action::Undefined;
  38. std::unique_ptr<Ui_ConflictItemWidget> ui;
  39. };
  40. }