aboutsummaryrefslogtreecommitdiff
path: root/libs/installer_fomod_plus/patchwizard/FomodPlusPatchWizard.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/installer_fomod_plus/patchwizard/FomodPlusPatchWizard.h')
-rw-r--r--libs/installer_fomod_plus/patchwizard/FomodPlusPatchWizard.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/libs/installer_fomod_plus/patchwizard/FomodPlusPatchWizard.h b/libs/installer_fomod_plus/patchwizard/FomodPlusPatchWizard.h
new file mode 100644
index 0000000..2324fb0
--- /dev/null
+++ b/libs/installer_fomod_plus/patchwizard/FomodPlusPatchWizard.h
@@ -0,0 +1,54 @@
+#pragma once
+#include "../installer/lib/Logger.h"
+#include "lib/PatchFinder.h"
+
+#include <iplugintool.h>
+#include <qtmetamacros.h>
+
+using namespace MOBase;
+
+class FomodPlusPatchWizard final : public IPluginTool {
+ Q_OBJECT
+ Q_INTERFACES(MOBase::IPlugin MOBase::IPluginTool)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+ Q_PLUGIN_METADATA(IID "io.clearing.FomodPlusPatchWizard" FILE "fomodpluspatchwizard.json")
+#endif
+
+public:
+ bool init(IOrganizer* organizer) override;
+
+ [[nodiscard]] QString name() const override { return tr("Patch Wizard"); };
+
+ [[nodiscard]] QString author() const override { return "clearing"; };
+
+ [[nodiscard]] QString description() const override { return tr("Find missing patches from FOMODs in your load order."); };
+
+ [[nodiscard]] VersionInfo version() const override { return { 1, 0, 0, VersionInfo::RELEASE_BETA }; };
+
+ [[nodiscard]] QList<PluginSetting> settings() const override { return {}; };
+
+ [[nodiscard]] QString displayName() const override { return tr("Patch Wizard"); };
+
+ [[nodiscard]] QString tooltip() const override { return tr("Find missing patches from FOMODs in your load order."); };
+
+ [[nodiscard]] QIcon icon() const override { return QIcon(":/fomod/hat"); }
+
+ void display() const override;
+
+private:
+ Logger& log = Logger::getInstance();
+ QDialog* mDialog{ nullptr };
+ IOrganizer* mOrganizer{ nullptr };
+ std::unique_ptr<PatchFinder> mPatchFinder{ nullptr };
+ std::vector<AvailablePatch> mAvailablePatches;
+
+ void setupEmptyState() const;
+ void setupPatchList() const;
+ void onRescanClicked();
+
+ void logMessage(const LogLevel level, const std::string& message) const
+ {
+ log.logMessage(level, "[PATCHFINDER] " + message);
+ }
+
+}; \ No newline at end of file