From 39b7ac90d40eb53d7b88ef99b0fa46fb3e1840b9 Mon Sep 17 00:00:00 2001
From: flow <flowlnlnln@gmail.com>
Date: Fri, 16 Dec 2022 21:44:21 -0300
Subject: refactor(RD): unify download dialogs into a single file

No need for multiple files since the subclasses are so small now

Signed-off-by: flow <flowlnlnln@gmail.com>
---
 launcher/ui/dialogs/ModDownloadDialog.cpp          | 63 --------------------
 launcher/ui/dialogs/ModDownloadDialog.h            | 50 ----------------
 launcher/ui/dialogs/ResourceDownloadDialog.cpp     | 67 ++++++++++++++++++++++
 launcher/ui/dialogs/ResourceDownloadDialog.h       | 51 +++++++++++++++-
 launcher/ui/pages/instance/ModFolderPage.cpp       |  2 +-
 launcher/ui/pages/modplatform/ModPage.cpp          |  2 +-
 .../pages/modplatform/flame/FlameResourcePages.cpp |  2 +-
 .../pages/modplatform/modrinth/ModrinthModel.cpp   |  1 -
 .../modplatform/modrinth/ModrinthResourcePages.cpp |  2 +-
 9 files changed, 120 insertions(+), 120 deletions(-)
 delete mode 100644 launcher/ui/dialogs/ModDownloadDialog.cpp
 delete mode 100644 launcher/ui/dialogs/ModDownloadDialog.h

(limited to 'launcher/ui')

diff --git a/launcher/ui/dialogs/ModDownloadDialog.cpp b/launcher/ui/dialogs/ModDownloadDialog.cpp
deleted file mode 100644
index 89b87300..00000000
--- a/launcher/ui/dialogs/ModDownloadDialog.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-only
-/*
- *  Prism Launcher - Minecraft Launcher
- *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
- *  Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
- *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, version 3.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-
-#include "ModDownloadDialog.h"
-
-#include "Application.h"
-
-#include "ui/pages/modplatform/flame/FlameResourcePages.h"
-#include "ui/pages/modplatform/modrinth/ModrinthResourcePages.h"
-
-namespace ResourceDownload {
-
-ModDownloadDialog::ModDownloadDialog(QWidget* parent, const std::shared_ptr<ModFolderModel>& mods, BaseInstance* instance)
-    : ResourceDownloadDialog(parent, mods), m_instance(instance)
-{
-    initializeContainer();
-    connectButtons();
-
-    restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("ModDownloadGeometry").toByteArray()));
-}
-
-void ModDownloadDialog::accept()
-{
-    APPLICATION->settings()->set("ModDownloadGeometry", saveGeometry().toBase64());
-    QDialog::accept();
-}
-
-void ModDownloadDialog::reject()
-{
-    APPLICATION->settings()->set("ModDownloadGeometry", saveGeometry().toBase64());
-    QDialog::reject();
-}
-
-QList<BasePage*> ModDownloadDialog::getPages()
-{
-    QList<BasePage*> pages;
-
-    pages.append(ModrinthModPage::create(this, *m_instance));
-    if (APPLICATION->capabilities() & Application::SupportsFlame)
-        pages.append(FlameModPage::create(this, *m_instance));
-
-    m_selectedPage = dynamic_cast<ModPage*>(pages[0]);
-
-    return pages;
-}
-
-}  // namespace ResourceDownload
diff --git a/launcher/ui/dialogs/ModDownloadDialog.h b/launcher/ui/dialogs/ModDownloadDialog.h
deleted file mode 100644
index b378b5a9..00000000
--- a/launcher/ui/dialogs/ModDownloadDialog.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-only
-/*
- *  Prism Launcher - Minecraft Launcher
- *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
- *  Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
- *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, version 3.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "minecraft/mod/ModFolderModel.h"
-
-#include "ui/dialogs/ResourceDownloadDialog.h"
-
-class QDialogButtonBox;
-
-namespace ResourceDownload {
-
-class ModDownloadDialog final : public ResourceDownloadDialog {
-    Q_OBJECT
-
-   public:
-    explicit ModDownloadDialog(QWidget* parent, const std::shared_ptr<ModFolderModel>& mods, BaseInstance* instance);
-    ~ModDownloadDialog() override = default;
-
-    //: String that gets appended to the mod download dialog title ("Download " + resourcesString())
-    [[nodiscard]] QString resourceString() const override { return tr("mods"); }
-
-    QList<BasePage*> getPages() override;
-
-   public slots:
-    void accept() override;
-    void reject() override;
-
-   private:
-    BaseInstance* m_instance;
-};
-
-}  // namespace ResourceDownload
diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp
index b143750b..523a1636 100644
--- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp
+++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp
@@ -1,3 +1,22 @@
+// SPDX-License-Identifier: GPL-3.0-only
+/*
+ *  Prism Launcher - Minecraft Launcher
+ *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ *  Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
+ *
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, version 3.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
 #include "ResourceDownloadDialog.h"
 
 #include <QPushButton>
@@ -5,8 +24,15 @@
 #include "Application.h"
 #include "ResourceDownloadTask.h"
 
+#include "minecraft/mod/ModFolderModel.h"
+
 #include "ui/dialogs/ReviewMessageBox.h"
+
 #include "ui/pages/modplatform/ResourcePage.h"
+
+#include "ui/pages/modplatform/flame/FlameResourcePages.h"
+#include "ui/pages/modplatform/modrinth/ModrinthResourcePages.h"
+
 #include "ui/widgets/PageContainer.h"
 
 namespace ResourceDownload {
@@ -41,6 +67,22 @@ ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, const std::share
     setWindowTitle(dialogTitle());
 }
 
+void ResourceDownloadDialog::accept()
+{
+    if (!geometrySaveKey().isEmpty())
+        APPLICATION->settings()->set(geometrySaveKey(), saveGeometry().toBase64());
+
+    QDialog::accept();
+}
+
+void ResourceDownloadDialog::reject()
+{
+    if (!geometrySaveKey().isEmpty())
+        APPLICATION->settings()->set(geometrySaveKey(), saveGeometry().toBase64());
+
+    QDialog::reject();
+}
+
 // NOTE: We can't have this in the ctor because PageContainer calls a virtual function, and so
 // won't work with subclasses if we put it in this ctor.
 void ResourceDownloadDialog::initializeContainer()
@@ -153,4 +195,29 @@ void ResourceDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* s
     m_selectedPage->setSearchTerm(prev_page->getSearchTerm());
 }
 
+
+
+ModDownloadDialog::ModDownloadDialog(QWidget* parent, const std::shared_ptr<ModFolderModel>& mods, BaseInstance* instance)
+    : ResourceDownloadDialog(parent, mods), m_instance(instance)
+{
+    initializeContainer();
+    connectButtons();
+
+    if (!geometrySaveKey().isEmpty())
+        restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toByteArray()));
+}
+
+QList<BasePage*> ModDownloadDialog::getPages()
+{
+    QList<BasePage*> pages;
+
+    pages.append(ModrinthModPage::create(this, *m_instance));
+    if (APPLICATION->capabilities() & Application::SupportsFlame)
+        pages.append(FlameModPage::create(this, *m_instance));
+
+    m_selectedPage = dynamic_cast<ModPage*>(pages[0]);
+
+    return pages;
+}
+
 }  // namespace ResourceDownload
diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.h b/launcher/ui/dialogs/ResourceDownloadDialog.h
index 3b234cd1..29813493 100644
--- a/launcher/ui/dialogs/ResourceDownloadDialog.h
+++ b/launcher/ui/dialogs/ResourceDownloadDialog.h
@@ -1,3 +1,22 @@
+// SPDX-License-Identifier: GPL-3.0-only
+/*
+ *  Prism Launcher - Minecraft Launcher
+ *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ *  Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
+ *
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, version 3.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
 #pragma once
 
 #include <QDialog>
@@ -6,11 +25,13 @@
 
 #include "ui/pages/BasePageProvider.h"
 
-class ResourceDownloadTask;
-class ResourceFolderModel;
+class BaseInstance;
+class ModFolderModel;
 class PageContainer;
 class QVBoxLayout;
 class QDialogButtonBox;
+class ResourceDownloadTask;
+class ResourceFolderModel;
 
 namespace ResourceDownload {
 
@@ -40,11 +61,18 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider {
     const QList<ResourceDownloadTask*> getTasks();
     [[nodiscard]] const std::shared_ptr<ResourceFolderModel> getBaseModel() const { return m_base_model; }
 
+   public slots:
+    void accept() override;
+    void reject() override;
+
    protected slots:
     void selectedPageChanged(BasePage* previous, BasePage* selected);
 
     virtual void confirm();
 
+   protected:
+    [[nodiscard]] virtual QString geometrySaveKey() const { return ""; }
+
    protected:
     const std::shared_ptr<ResourceFolderModel> m_base_model;
 
@@ -57,4 +85,23 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider {
     QHash<QString, ResourceDownloadTask*> m_selected;
 };
 
+
+
+class ModDownloadDialog final : public ResourceDownloadDialog {
+    Q_OBJECT
+
+   public:
+    explicit ModDownloadDialog(QWidget* parent, const std::shared_ptr<ModFolderModel>& mods, BaseInstance* instance);
+    ~ModDownloadDialog() override = default;
+
+    //: String that gets appended to the mod download dialog title ("Download " + resourcesString())
+    [[nodiscard]] QString resourceString() const override { return tr("mods"); }
+    [[nodiscard]] QString geometrySaveKey() const override { return "ModDownloadGeometry"; }
+
+    QList<BasePage*> getPages() override;
+
+   private:
+    BaseInstance* m_instance;
+};
+
 }  // namespace ResourceDownload
diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp
index 7c4b8952..d9069915 100644
--- a/launcher/ui/pages/instance/ModFolderPage.cpp
+++ b/launcher/ui/pages/instance/ModFolderPage.cpp
@@ -49,8 +49,8 @@
 
 #include "ui/GuiUtil.h"
 #include "ui/dialogs/CustomMessageBox.h"
-#include "ui/dialogs/ModDownloadDialog.h"
 #include "ui/dialogs/ModUpdateDialog.h"
+#include "ui/dialogs/ResourceDownloadDialog.h"
 
 #include "DesktopServices.h"
 
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index 8941d9b7..8d441546 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -49,7 +49,7 @@
 #include "minecraft/MinecraftInstance.h"
 #include "minecraft/PackProfile.h"
 
-#include "ui/dialogs/ModDownloadDialog.h"
+#include "ui/dialogs/ResourceDownloadDialog.h"
 
 #include "ui/pages/modplatform/ModModel.h"
 
diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp
index 723819fb..2a8ab526 100644
--- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp
+++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp
@@ -38,7 +38,7 @@
 #include "ui_ResourcePage.h"
 
 #include "FlameResourceModels.h"
-#include "ui/dialogs/ModDownloadDialog.h"
+#include "ui/dialogs/ResourceDownloadDialog.h"
 
 namespace ResourceDownload {
 
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp
index e6704eef..80850b4c 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp
@@ -40,7 +40,6 @@
 #include "Json.h"
 #include "minecraft/MinecraftInstance.h"
 #include "minecraft/PackProfile.h"
-#include "ui/dialogs/ModDownloadDialog.h"
 #include "ui/widgets/ProjectItem.h"
 
 #include <QMessageBox>
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp
index 5d2680b0..1352e2f6 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp
@@ -38,7 +38,7 @@
 
 #include "modplatform/modrinth/ModrinthAPI.h"
 
-#include "ui/dialogs/ModDownloadDialog.h"
+#include "ui/dialogs/ResourceDownloadDialog.h"
 
 #include "ui/pages/modplatform/modrinth/ModrinthResourceModels.h"
 
-- 
cgit