aboutsummaryrefslogtreecommitdiff
path: root/launcher/pages
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-07-25 19:11:59 +0200
committerPetr Mrázek <peterix@gmail.com>2021-07-25 19:50:44 +0200
commit20b9f2b42a3b58b6081af271774fbcc34025dccb (patch)
tree064fa59facb3357139b47bd4e60bfc8edb35ca11 /launcher/pages
parentdd133680858351e3e07690e286882327a4f42ba5 (diff)
downloadPrismLauncher-20b9f2b42a3b58b6081af271774fbcc34025dccb.tar.gz
PrismLauncher-20b9f2b42a3b58b6081af271774fbcc34025dccb.tar.bz2
PrismLauncher-20b9f2b42a3b58b6081af271774fbcc34025dccb.zip
NOISSUE Flatten gui and logic libraries into MultiMC
Diffstat (limited to 'launcher/pages')
-rw-r--r--launcher/pages/BasePage.h58
-rw-r--r--launcher/pages/BasePageContainer.h10
-rw-r--r--launcher/pages/BasePageProvider.h68
-rw-r--r--launcher/pages/global/AccountListPage.cpp217
-rw-r--r--launcher/pages/global/AccountListPage.h84
-rw-r--r--launcher/pages/global/AccountListPage.ui98
-rw-r--r--launcher/pages/global/CustomCommandsPage.cpp51
-rw-r--r--launcher/pages/global/CustomCommandsPage.h55
-rw-r--r--launcher/pages/global/ExternalToolsPage.cpp233
-rw-r--r--launcher/pages/global/ExternalToolsPage.h74
-rw-r--r--launcher/pages/global/ExternalToolsPage.ui194
-rw-r--r--launcher/pages/global/JavaPage.cpp153
-rw-r--r--launcher/pages/global/JavaPage.h72
-rw-r--r--launcher/pages/global/JavaPage.ui260
-rw-r--r--launcher/pages/global/LanguagePage.cpp51
-rw-r--r--launcher/pages/global/LanguagePage.h60
-rw-r--r--launcher/pages/global/MinecraftPage.cpp90
-rw-r--r--launcher/pages/global/MinecraftPage.h70
-rw-r--r--launcher/pages/global/MinecraftPage.ui189
-rw-r--r--launcher/pages/global/MultiMCPage.cpp467
-rw-r--r--launcher/pages/global/MultiMCPage.h103
-rw-r--r--launcher/pages/global/MultiMCPage.ui584
-rw-r--r--launcher/pages/global/PasteEEPage.cpp81
-rw-r--r--launcher/pages/global/PasteEEPage.h62
-rw-r--r--launcher/pages/global/PasteEEPage.ui128
-rw-r--r--launcher/pages/global/ProxyPage.cpp101
-rw-r--r--launcher/pages/global/ProxyPage.h66
-rw-r--r--launcher/pages/global/ProxyPage.ui203
-rw-r--r--launcher/pages/instance/GameOptionsPage.cpp37
-rw-r--r--launcher/pages/instance/GameOptionsPage.h63
-rw-r--r--launcher/pages/instance/GameOptionsPage.ui88
-rw-r--r--launcher/pages/instance/InstanceSettingsPage.cpp338
-rw-r--r--launcher/pages/instance/InstanceSettingsPage.h76
-rw-r--r--launcher/pages/instance/InstanceSettingsPage.ui548
-rw-r--r--launcher/pages/instance/LegacyUpgradePage.cpp50
-rw-r--r--launcher/pages/instance/LegacyUpgradePage.h64
-rw-r--r--launcher/pages/instance/LegacyUpgradePage.ui47
-rw-r--r--launcher/pages/instance/LogPage.cpp312
-rw-r--r--launcher/pages/instance/LogPage.h86
-rw-r--r--launcher/pages/instance/LogPage.ui182
-rw-r--r--launcher/pages/instance/ModFolderPage.cpp363
-rw-r--r--launcher/pages/instance/ModFolderPage.h119
-rw-r--r--launcher/pages/instance/ModFolderPage.ui164
-rw-r--r--launcher/pages/instance/NotesPage.cpp21
-rw-r--r--launcher/pages/instance/NotesPage.h60
-rw-r--r--launcher/pages/instance/NotesPage.ui49
-rw-r--r--launcher/pages/instance/OtherLogsPage.cpp313
-rw-r--r--launcher/pages/instance/OtherLogsPage.h81
-rw-r--r--launcher/pages/instance/OtherLogsPage.ui150
-rw-r--r--launcher/pages/instance/ResourcePackPage.h23
-rw-r--r--launcher/pages/instance/ScreenshotsPage.cpp422
-rw-r--r--launcher/pages/instance/ScreenshotsPage.h89
-rw-r--r--launcher/pages/instance/ScreenshotsPage.ui87
-rw-r--r--launcher/pages/instance/ServersPage.cpp768
-rw-r--r--launcher/pages/instance/ServersPage.h94
-rw-r--r--launcher/pages/instance/ServersPage.ui194
-rw-r--r--launcher/pages/instance/TexturePackPage.h22
-rw-r--r--launcher/pages/instance/VersionPage.cpp642
-rw-r--r--launcher/pages/instance/VersionPage.h104
-rw-r--r--launcher/pages/instance/VersionPage.ui285
-rw-r--r--launcher/pages/instance/WorldListPage.cpp408
-rw-r--r--launcher/pages/instance/WorldListPage.h99
-rw-r--r--launcher/pages/instance/WorldListPage.ui161
-rw-r--r--launcher/pages/modplatform/ImportPage.cpp130
-rw-r--r--launcher/pages/modplatform/ImportPage.h70
-rw-r--r--launcher/pages/modplatform/ImportPage.ui52
-rw-r--r--launcher/pages/modplatform/VanillaPage.cpp104
-rw-r--r--launcher/pages/modplatform/VanillaPage.h75
-rw-r--r--launcher/pages/modplatform/VanillaPage.ui169
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlFilterModel.cpp81
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlFilterModel.h34
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlListModel.cpp194
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlListModel.h52
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp209
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlOptionalModDialog.h66
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlOptionalModDialog.ui65
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlPage.cpp175
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlPage.h87
-rw-r--r--launcher/pages/modplatform/atlauncher/AtlPage.ui97
-rw-r--r--launcher/pages/modplatform/flame/FlameModel.cpp259
-rw-r--r--launcher/pages/modplatform/flame/FlameModel.h76
-rw-r--r--launcher/pages/modplatform/flame/FlamePage.cpp185
-rw-r--r--launcher/pages/modplatform/flame/FlamePage.h80
-rw-r--r--launcher/pages/modplatform/flame/FlamePage.ui90
-rw-r--r--launcher/pages/modplatform/ftb/FtbFilterModel.cpp64
-rw-r--r--launcher/pages/modplatform/ftb/FtbFilterModel.h33
-rw-r--r--launcher/pages/modplatform/ftb/FtbListModel.cpp304
-rw-r--r--launcher/pages/modplatform/ftb/FtbListModel.h69
-rw-r--r--launcher/pages/modplatform/ftb/FtbPage.cpp145
-rw-r--r--launcher/pages/modplatform/ftb/FtbPage.h80
-rw-r--r--launcher/pages/modplatform/ftb/FtbPage.ui84
-rw-r--r--launcher/pages/modplatform/legacy_ftb/ListModel.cpp260
-rw-r--r--launcher/pages/modplatform/legacy_ftb/ListModel.h78
-rw-r--r--launcher/pages/modplatform/legacy_ftb/Page.cpp369
-rw-r--r--launcher/pages/modplatform/legacy_ftb/Page.h119
-rw-r--r--launcher/pages/modplatform/legacy_ftb/Page.ui135
-rw-r--r--launcher/pages/modplatform/technic/TechnicData.h42
-rw-r--r--launcher/pages/modplatform/technic/TechnicModel.cpp238
-rw-r--r--launcher/pages/modplatform/technic/TechnicModel.h70
-rw-r--r--launcher/pages/modplatform/technic/TechnicPage.cpp198
-rw-r--r--launcher/pages/modplatform/technic/TechnicPage.h78
-rw-r--r--launcher/pages/modplatform/technic/TechnicPage.ui95
102 files changed, 15302 insertions, 0 deletions
diff --git a/launcher/pages/BasePage.h b/launcher/pages/BasePage.h
new file mode 100644
index 00000000..408965d0
--- /dev/null
+++ b/launcher/pages/BasePage.h
@@ -0,0 +1,58 @@
+/* Copyright 2013-2021 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <QString>
+#include <QIcon>
+#include <memory>
+
+#include "BasePageContainer.h"
+
+class BasePage
+{
+public:
+ virtual ~BasePage() {}
+ virtual QString id() const = 0;
+ virtual QString displayName() const = 0;
+ virtual QIcon icon() const = 0;
+ virtual bool apply() { return true; }
+ virtual bool shouldDisplay() const { return true; }
+ virtual QString helpPage() const { return QString(); }
+ void opened()
+ {
+ isOpened = true;
+ openedImpl();
+ }
+ void closed()
+ {
+ isOpened = false;
+ closedImpl();
+ }
+ virtual void openedImpl() {}
+ virtual void closedImpl() {}
+ virtual void setParentContainer(BasePageContainer * container)
+ {
+ m_container = container;
+ };
+public:
+ int stackIndex = -1;
+ int listIndex = -1;
+protected:
+ BasePageContainer * m_container = nullptr;
+ bool isOpened = false;
+};
+
+typedef std::shared_ptr<BasePage> BasePagePtr;
diff --git a/launcher/pages/BasePageContainer.h b/launcher/pages/BasePageContainer.h
new file mode 100644
index 00000000..f8c7adeb
--- /dev/null
+++ b/launcher/pages/BasePageContainer.h
@@ -0,0 +1,10 @@
+#pragma once
+
+class BasePageContainer
+{
+public:
+ virtual ~BasePageContainer(){};
+ virtual bool selectPage(QString pageId) = 0;
+ virtual void refreshContainer() = 0;
+ virtual bool requestClose() = 0;
+};
diff --git a/launcher/pages/BasePageProvider.h b/launcher/pages/BasePageProvider.h
new file mode 100644
index 00000000..7bfaaf3b
--- /dev/null
+++ b/launcher/pages/BasePageProvider.h
@@ -0,0 +1,68 @@
+/* Copyright 2013-2021 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "pages/BasePage.h"
+#include <memory>
+#include <functional>
+
+class BasePageProvider
+{
+public:
+ virtual QList<BasePage *> getPages() = 0;
+ virtual QString dialogTitle() = 0;
+};
+
+class GenericPageProvider : public BasePageProvider
+{
+ typedef std::function<BasePage *()> PageCreator;
+public:
+ explicit GenericPageProvider(const QString &dialogTitle)
+ : m_dialogTitle(dialogTitle)
+ {
+ }
+ virtual ~GenericPageProvider() {}
+
+ QList<BasePage *> getPages() override
+ {
+ QList<BasePage *> pages;
+ for (PageCreator creator : m_creators)
+ {
+ pages.append(creator());
+ }
+ return pages;
+ }
+ QString dialogTitle() override { return m_dialogTitle; }
+
+ void setDialogTitle(const QString &title)
+ {
+ m_dialogTitle = title;
+ }
+ void addPageCreator(PageCreator page)
+ {
+ m_creators.append(page);
+ }
+
+ template<typename PageClass>
+ void addPage()
+ {
+ addPageCreator([](){return new PageClass();});
+ }
+
+private:
+ QList<PageCreator> m_creators;
+ QString m_dialogTitle;
+};
diff --git a/launcher/pages/global/AccountListPage.cpp b/launcher/pages/global/AccountListPage.cpp
new file mode 100644
index 00000000..ff3736ed
--- /dev/null
+++ b/launcher/pages/global/AccountListPage.cpp
@@ -0,0 +1,217 @@
+/* Copyright 2013-2021 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "AccountListPage.h"
+#include "ui_AccountListPage.h"
+
+#include <QItemSelectionModel>
+#include <QMenu>
+
+#include <QDebug>
+
+#include "net/NetJob.h"
+#include "Env.h"
+
+#include "dialogs/ProgressDialog.h"
+#include "dialogs/LoginDialog.h"
+#include "dialogs/CustomMessageBox.h"
+#include "dialogs/SkinUploadDialog.h"
+#include "tasks/Task.h"
+#include "minecraft/auth/YggdrasilTask.h"
+#include "minecraft/services/SkinDelete.h"
+
+#include "MultiMC.h"
+
+#include "BuildConfig.h"
+
+AccountListPage::AccountListPage(QWidget *parent)
+ : QMainWindow(parent), ui(new Ui::AccountListPage)
+{
+ ui->setupUi(this);
+ ui->listView->setEmptyString(tr(
+ "Welcome!\n"
+ "If you're new here, you can click the \"Add\" button to add your Mojang or Minecraft account."
+ ));
+ ui->listView->setEmptyMode(VersionListView::String);
+ ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);
+
+ m_accounts = MMC->accounts();
+
+ ui->listView->setModel(m_accounts.get());
+ ui->listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
+ ui->listView->setSelectionMode(QAbstractItemView::SingleSelection);
+
+ // Expand the account column
+ ui->listView->header()->setSectionResizeMode(1, QHeaderView::Stretch);
+
+ QItemSelectionModel *selectionModel = ui->listView->selectionModel();
+