aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/modplatform/ModPage.h
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/ui/pages/modplatform/ModPage.h')
-rw-r--r--launcher/ui/pages/modplatform/ModPage.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/launcher/ui/pages/modplatform/ModPage.h b/launcher/ui/pages/modplatform/ModPage.h
new file mode 100644
index 00000000..c0102549
--- /dev/null
+++ b/launcher/ui/pages/modplatform/ModPage.h
@@ -0,0 +1,57 @@
+#pragma once
+
+#include <Application.h>
+#include <QWidget>
+
+#include "modplatform/ModIndex.h"
+#include "tasks/Task.h"
+#include "ui/pages/BasePage.h"
+#include "ui/pages/modplatform/ModModel.h"
+
+class ModDownloadDialog;
+
+namespace Ui {
+class ModPage;
+}
+
+class ModPage : public QWidget, public BasePage {
+ Q_OBJECT
+
+ public:
+ explicit ModPage(ModDownloadDialog* dialog, BaseInstance* instance);
+ virtual ~ModPage();
+
+ inline virtual QString displayName() const override = 0;
+ inline virtual QIcon icon() const override = 0;
+ inline virtual QString id() const override = 0;
+ inline virtual QString helpPage() const override = 0;
+
+ inline virtual QString debugName() const = 0;
+ inline virtual QString metaEntryBase() const = 0;
+
+ virtual bool shouldDisplay() const override = 0;
+
+ void openedImpl() override;
+ bool eventFilter(QObject* watched, QEvent* event) override;
+
+ BaseInstance* m_instance;
+
+ protected:
+ virtual void onModVersionSucceed(ModPage*, QByteArray*, QString) = 0;
+
+ void updateSelectionButton();
+
+ protected slots:
+ void triggerSearch();
+ void onSelectionChanged(QModelIndex first, QModelIndex second);
+ void onVersionSelectionChanged(QString data);
+ void onModSelected();
+
+ protected:
+ Ui::ModPage* ui = nullptr;
+ ModDownloadDialog* dialog = nullptr;
+ ModPlatform::ListModel* listModel = nullptr;
+ ModPlatform::IndexedPack current;
+
+ int selectedVersion = -1;
+};