diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index f863e3edc..876712096 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -29,9 +29,6 @@ #include "minecraft/PackProfile.h" #include "minecraft/mod/ModFolderModel.h" -#include "minecraft/mod/ResourcePackFolderModel.h" -#include "minecraft/mod/ShaderPackFolderModel.h" -#include "minecraft/mod/TexturePackFolderModel.h" #include "minecraft/mod/tasks/GetModDependenciesTask.h" #include "modplatform/ModIndex.h" @@ -50,12 +47,20 @@ namespace ResourceDownload { -ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, ResourceFolderModel* baseModel, bool suppressInitialSearch) +ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, + ResourceFolderModel* baseModel, + BaseInstance* instance, + QString resourcesString, + QString geometrySaveKey, + bool suppressInitialSearch) : QDialog(parent) , m_base_model(baseModel) , m_buttons(QDialogButtonBox::Help | QDialogButtonBox::Ok | QDialogButtonBox::Cancel) , m_vertical_layout(this) , m_suppressInitialSearch(suppressInitialSearch) + , m_instance(instance) + , m_resourcesString(std::move(resourcesString)) + , m_geometrySaveKey(std::move(geometrySaveKey)) { setObjectName(QStringLiteral("ResourceDownloadDialog")); @@ -85,6 +90,8 @@ ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, ResourceFolderMo helpButton->setAutoDefault(false); setWindowModality(Qt::WindowModal); + + setWindowTitle(dialogTitle()); } void ResourceDownloadDialog::accept() @@ -288,148 +295,6 @@ void ResourceDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* s result->setSearchTerm(prevPage->getSearchTerm()); } -ModDownloadDialog::ModDownloadDialog(QWidget* parent, ModFolderModel* mods, BaseInstance* instance, bool suppressInitialSearch) - : ResourceDownloadDialog(parent, mods, suppressInitialSearch), m_instance(instance) -{ - setWindowTitle(dialogTitle()); - - initializeContainer(); - connectButtons(); - - if (!geometrySaveKey().isEmpty()) { - restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8())); - } -} - -QList ModDownloadDialog::getPages() -{ - QList pages; - - auto loaders = static_cast(m_instance)->getPackProfile()->getSupportedModLoaders().value(); - - if (ModrinthAPI::validateModLoaders(loaders)) { - auto* page = Modrinth::createModPage(this, *m_instance); - page->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(page); - } - if (APPLICATION->capabilities() & Application::SupportsFlame && FlameAPI::validateModLoaders(loaders)) { - auto* page = Flame::createModPage(this, *m_instance); - page->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(page); - } - - return pages; -} - -GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask() -{ - if (!APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies - if (auto* model = dynamic_cast(getBaseModel()); model) { - QList> selectedVers; - for (const auto& selected : getTasks()) { - selectedVers.append(std::make_shared(selected->getPack(), selected->getVersion())); - } - - return makeShared(m_instance, model, selectedVers); - } - } - return nullptr; -} - -ResourcePackDownloadDialog::ResourcePackDownloadDialog(QWidget* parent, - ResourcePackFolderModel* resourcePacks, - BaseInstance* instance, - bool suppressInitialSearch) - : ResourceDownloadDialog(parent, resourcePacks, suppressInitialSearch), m_instance(instance) -{ - setWindowTitle(dialogTitle()); - - initializeContainer(); - connectButtons(); - - if (!geometrySaveKey().isEmpty()) { - restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8())); - } -} - -QList ResourcePackDownloadDialog::getPages() -{ - QList pages; - - auto* modrinthPage = Modrinth::createResourcePackResourcePage(this, *m_instance); - modrinthPage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(modrinthPage); - if (APPLICATION->capabilities() & Application::SupportsFlame) { - auto* flamePage = Flame::createResourcePackResourcePage(this, *m_instance); - flamePage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(flamePage); - } - - return pages; -} - -TexturePackDownloadDialog::TexturePackDownloadDialog(QWidget* parent, - TexturePackFolderModel* resourcePacks, - BaseInstance* instance, - bool suppressInitialSearch) - : ResourceDownloadDialog(parent, resourcePacks, suppressInitialSearch), m_instance(instance) -{ - setWindowTitle(dialogTitle()); - - initializeContainer(); - connectButtons(); - - if (!geometrySaveKey().isEmpty()) { - restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8())); - } -} - -QList TexturePackDownloadDialog::getPages() -{ - QList pages; - - auto* modrinthPage =Modrinth::createTexturePackResourcePage(this, *m_instance); - modrinthPage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(modrinthPage); - if (APPLICATION->capabilities() & Application::SupportsFlame) { - auto* flamePage = Flame::createTexturePackResourcePage(this, *m_instance); - flamePage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(flamePage); - } - - return pages; -} - -ShaderPackDownloadDialog::ShaderPackDownloadDialog(QWidget* parent, - ShaderPackFolderModel* shaders, - BaseInstance* instance, - bool suppressInitialSearch) - : ResourceDownloadDialog(parent, shaders, suppressInitialSearch), m_instance(instance) -{ - setWindowTitle(dialogTitle()); - - initializeContainer(); - connectButtons(); - - if (!geometrySaveKey().isEmpty()) { - restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8())); - } -} - -QList ShaderPackDownloadDialog::getPages() -{ - QList pages; - auto* modrinthPage = Modrinth::createShaderPackResourcePage(this, *m_instance); - modrinthPage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(modrinthPage); - if (APPLICATION->capabilities() & Application::SupportsFlame) { - auto* flamePage = Flame::createShaderPackResourcePage(this, *m_instance); - flamePage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(flamePage); - } - return pages; -} - void ResourceDownloadDialog::setResourceMetadata(const std::shared_ptr& meta) { switch (meta->provider) { @@ -448,34 +313,138 @@ void ResourceDownloadDialog::setResourceMetadata(const std::shared_ptropenProject(meta->project_id); } -DataPackDownloadDialog::DataPackDownloadDialog(QWidget* parent, - DataPackFolderModel* dataPacks, - BaseInstance* instance, - bool suppressInitialSearch) - : ResourceDownloadDialog(parent, dataPacks, suppressInitialSearch), m_instance(instance) +GetModDependenciesTask::Ptr ResourceDownloadDialog::getModDependenciesTask() { - setWindowTitle(dialogTitle()); + if (!APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies + if (auto* model = dynamic_cast(getBaseModel()); model) { + QList> selectedVers; + for (auto& selected : getTasks()) { + selectedVers.append(std::make_shared(selected->getPack(), selected->getVersion())); + } + + return makeShared(m_instance, model, selectedVers); + } + } + return nullptr; +} + +ResourceDownloadDialog* ResourceDownloadDialog::createMod(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch) +{ + auto* dialog = new ResourceDownloadDialog(parent, mods, instance, tr("mods"), "ModDownloadGeometry", suppressInitialSearch); + QList pages; + + auto loaders = static_cast(instance)->getPackProfile()->getSupportedModLoaders().value(); + + if (ModrinthAPI::validateModLoaders(loaders)) { + auto* page = Modrinth::createModPage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + } + if (APPLICATION->capabilities() & Application::SupportsFlame && FlameAPI::validateModLoaders(loaders)) { + auto* page = Flame::createModPage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + } + dialog->initPages(pages); + return dialog; +} + +ResourceDownloadDialog* ResourceDownloadDialog::createResourcePack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch) +{ + auto* dialog = new ResourceDownloadDialog(parent, mods, instance, tr("resource packs"), "RPDownloadGeometry", suppressInitialSearch); + QList pages; + + auto* page = Modrinth::createResourcePackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + if (APPLICATION->capabilities() & Application::SupportsFlame) { + auto* page = Flame::createResourcePackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + } + dialog->initPages(pages); + + return dialog; +} + +ResourceDownloadDialog* ResourceDownloadDialog::createTexturePack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch) +{ + auto* dialog = new ResourceDownloadDialog(parent, mods, instance, tr("texture packs"), "TPDownloadGeometry", suppressInitialSearch); + QList pages; + + auto* page = Modrinth::createTexturePackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + if (APPLICATION->capabilities() & Application::SupportsFlame) { + auto* page = Flame::createTexturePackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + } + dialog->initPages(pages); + + return dialog; +} + +ResourceDownloadDialog* ResourceDownloadDialog::createShaderPack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch) +{ + auto* dialog = new ResourceDownloadDialog(parent, mods, instance, tr("shader packs"), "ShaderDownloadGeometry", suppressInitialSearch); + QList pages; + + auto* page = Modrinth::createShaderPackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + if (APPLICATION->capabilities() & Application::SupportsFlame) { + auto* page = Flame::createShaderPackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + } + dialog->initPages(pages); + + return dialog; +} + +ResourceDownloadDialog* ResourceDownloadDialog::createDataPack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch) +{ + auto* dialog = new ResourceDownloadDialog(parent, mods, instance, tr("data packs"), "DataPackDownloadGeometry", suppressInitialSearch); + QList pages; + + auto* page = Modrinth::createDataPackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + if (APPLICATION->capabilities() & Application::SupportsFlame) { + auto* page = Flame::createDataPackResourcePage(dialog, *instance); + page->setSuppressInitialSearch(suppressInitialSearch); + pages.append(page); + } + dialog->initPages(pages); + + return dialog; +} + +void ResourceDownloadDialog::initPages(QList pages) +{ + m_pages = std::move(pages); initializeContainer(); connectButtons(); if (!geometrySaveKey().isEmpty()) { - restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toByteArray())); + restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8())); } } - -QList DataPackDownloadDialog::getPages() -{ - QList pages; - auto* modrinthPage =Modrinth::createDataPackResourcePage(this, *m_instance); - modrinthPage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(modrinthPage); - if (APPLICATION->capabilities() & Application::SupportsFlame) { - auto* flamePage = Flame::createDataPackResourcePage(this, *m_instance); - flamePage->setSuppressInitialSearch(m_suppressInitialSearch); - pages.append(flamePage); - } - return pages; -} - } // namespace ResourceDownload diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.h b/launcher/ui/dialogs/ResourceDownloadDialog.h index bea6c7689..530ef0ba1 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.h +++ b/launcher/ui/dialogs/ResourceDownloadDialog.h @@ -25,7 +25,6 @@ #include #include "QObjectPtr.h" -#include "minecraft/mod/DataPackFolderModel.h" #include "minecraft/mod/tasks/GetModDependenciesTask.h" #include "modplatform/ModIndex.h" #include "ui/pages/BasePageProvider.h" @@ -51,13 +50,32 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { public: using DownloadTaskPtr = shared_qobject_ptr; - ResourceDownloadDialog(QWidget* parent, ResourceFolderModel* baseModel, bool suppressInitialSearch = false); + static ResourceDownloadDialog* createMod(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch = false); + static ResourceDownloadDialog* createResourcePack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch = false); + static ResourceDownloadDialog* createTexturePack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch = false); + static ResourceDownloadDialog* createShaderPack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch = false); + static ResourceDownloadDialog* createDataPack(QWidget* parent, + ResourceFolderModel* mods, + BaseInstance* instance, + bool suppressInitialSearch = false); void initializeContainer(); void connectButtons(); //: String that gets appended to the download dialog title ("Download " + resourcesString()) - virtual QString resourcesString() const { return tr("resources"); } + QString resourcesString() const { return m_resourcesString; } QString dialogTitle() override { return tr("Download %1").arg(resourcesString()); }; @@ -72,6 +90,8 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { void setResourceMetadata(const std::shared_ptr& meta); + QList getPages() override { return m_pages; }; + public slots: void accept() override; void reject() override; @@ -82,10 +102,19 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { virtual void confirm(); protected: - virtual QString geometrySaveKey() const { return ""; } + ResourceDownloadDialog(QWidget* parent, + ResourceFolderModel* baseModel, + BaseInstance* instance, + QString resourcesString = tr("resources"), + QString geometrySaveKey = "", + bool suppressInitialSearch = false); + + QString geometrySaveKey() const { return m_geometrySaveKey; } void setButtonStatus(); - virtual GetModDependenciesTask::Ptr getModDependenciesTask() { return nullptr; } + GetModDependenciesTask::Ptr getModDependenciesTask(); + + void initPages(QList pages); protected: ResourceFolderModel* m_base_model; @@ -97,104 +126,11 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { protected: bool m_suppressInitialSearch = false; -}; - -class ModDownloadDialog final : public ResourceDownloadDialog { - Q_OBJECT - - public: - explicit ModDownloadDialog(QWidget* parent, ModFolderModel* mods, BaseInstance* instance, bool suppressInitialSearch = false); - ~ModDownloadDialog() override = default; - - //: String that gets appended to the mod download dialog title ("Download " + resourcesString()) - QString resourcesString() const override { return tr("mods"); } - QString geometrySaveKey() const override { return "ModDownloadGeometry"; } - - QList getPages() override; - GetModDependenciesTask::Ptr getModDependenciesTask() override; - - private: BaseInstance* m_instance; -}; -class ResourcePackDownloadDialog final : public ResourceDownloadDialog { - Q_OBJECT - - public: - explicit ResourcePackDownloadDialog(QWidget* parent, - ResourcePackFolderModel* resourcePacks, - BaseInstance* instance, - bool suppressInitialSearch = false); - ~ResourcePackDownloadDialog() override = default; - - //: String that gets appended to the resource pack download dialog title ("Download " + resourcesString()) - QString resourcesString() const override { return tr("resource packs"); } - QString geometrySaveKey() const override { return "RPDownloadGeometry"; } - - QList getPages() override; - - private: - BaseInstance* m_instance; -}; - -class TexturePackDownloadDialog final : public ResourceDownloadDialog { - Q_OBJECT - - public: - explicit TexturePackDownloadDialog(QWidget* parent, - TexturePackFolderModel* resourcePacks, - BaseInstance* instance, - bool suppressInitialSearch = false); - ~TexturePackDownloadDialog() override = default; - - //: String that gets appended to the texture pack download dialog title ("Download " + resourcesString()) - QString resourcesString() const override { return tr("texture packs"); } - QString geometrySaveKey() const override { return "TPDownloadGeometry"; } - - QList getPages() override; - - private: - BaseInstance* m_instance; -}; - -class ShaderPackDownloadDialog final : public ResourceDownloadDialog { - Q_OBJECT - - public: - explicit ShaderPackDownloadDialog(QWidget* parent, - ShaderPackFolderModel* shaders, - BaseInstance* instance, - bool suppressInitialSearch = false); - ~ShaderPackDownloadDialog() override = default; - - //: String that gets appended to the shader pack download dialog title ("Download " + resourcesString()) - QString resourcesString() const override { return tr("shader packs"); } - QString geometrySaveKey() const override { return "ShaderDownloadGeometry"; } - - QList getPages() override; - - private: - BaseInstance* m_instance; -}; - -class DataPackDownloadDialog final : public ResourceDownloadDialog { - Q_OBJECT - - public: - explicit DataPackDownloadDialog(QWidget* parent, - DataPackFolderModel* dataPacks, - BaseInstance* instance, - bool suppressInitialSearch = false); - ~DataPackDownloadDialog() override = default; - - //: String that gets appended to the data pack download dialog title ("Download " + resourcesString()) - QString resourcesString() const override { return tr("data packs"); } - QString geometrySaveKey() const override { return "DataPackDownloadGeometry"; } - - QList getPages() override; - - private: - BaseInstance* m_instance; + QString m_resourcesString; + QString m_geometrySaveKey; + QList m_pages; }; } // namespace ResourceDownload diff --git a/launcher/ui/pages/instance/DataPackPage.cpp b/launcher/ui/pages/instance/DataPackPage.cpp index eb59fbb1e..32bacc7d4 100644 --- a/launcher/ui/pages/instance/DataPackPage.cpp +++ b/launcher/ui/pages/instance/DataPackPage.cpp @@ -68,7 +68,7 @@ void DataPackPage::downloadDataPacks() return; // this is a null instance or a legacy instance } - m_downloadDialog = new ResourceDownload::DataPackDownloadDialog(this, m_model, m_instance); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createDataPack(this, m_model, m_instance); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &DataPackPage::downloadDialogFinished); @@ -242,9 +242,9 @@ void DataPackPage::changeDataPackVersion() return; } - ResourceDownload::DataPackDownloadDialog mdownload(this, m_model, m_instance, true); - mdownload.setResourceMetadata(resource.metadata()); - if (mdownload.exec() != 0) { + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createDataPack(this, m_model, m_instance, true); + m_downloadDialog->setResourceMetadata(resource.metadata()); + if (m_downloadDialog->exec() != 0) { auto* tasks = new ConcurrentTask("Download Data Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); @@ -263,7 +263,7 @@ void DataPackPage::changeDataPackVersion() tasks->deleteLater(); }); - for (auto& task : mdownload.getTasks()) { + for (auto& task : m_downloadDialog->getTasks()) { tasks->addTask(task); } diff --git a/launcher/ui/pages/instance/DataPackPage.h b/launcher/ui/pages/instance/DataPackPage.h index a3e6627d4..2cc799a42 100644 --- a/launcher/ui/pages/instance/DataPackPage.h +++ b/launcher/ui/pages/instance/DataPackPage.h @@ -44,7 +44,7 @@ class DataPackPage : public ExternalResourcesPage { private: DataPackFolderModel* m_model; - QPointer m_downloadDialog; + QPointer m_downloadDialog; }; /** diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 99c78647c..9e09a3119 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -173,7 +173,7 @@ void ModFolderPage::downloadMods() } } - m_downloadDialog = new ResourceDownload::ModDownloadDialog(this, m_model, m_instance); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createMod(this, m_model, m_instance); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &ModFolderPage::downloadDialogFinished); @@ -352,7 +352,7 @@ void ModFolderPage::changeModVersion() return; } - m_downloadDialog = new ResourceDownload::ModDownloadDialog(this, m_model, m_instance, true); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createMod(this, m_model, m_instance, true); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &ModFolderPage::downloadDialogFinished); diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h index 62db9fad8..2884c9432 100644 --- a/launcher/ui/pages/instance/ModFolderPage.h +++ b/launcher/ui/pages/instance/ModFolderPage.h @@ -75,7 +75,7 @@ class ModFolderPage : public ExternalResourcesPage { protected: ModFolderModel* m_model; - QPointer m_downloadDialog; + QPointer m_downloadDialog; }; class CoreModFolderPage : public ModFolderPage { diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index e4709ab2b..0b360c177 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -85,7 +85,7 @@ void ResourcePackPage::downloadResourcePacks() return; // this is a null instance or a legacy instance } - m_downloadDialog = new ResourceDownload::ResourcePackDownloadDialog(this, m_model, m_instance); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createResourcePack(this, m_model, m_instance); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &ResourcePackPage::downloadDialogFinished); @@ -259,7 +259,7 @@ void ResourcePackPage::changeResourcePackVersion() return; } - m_downloadDialog = new ResourceDownload::ResourcePackDownloadDialog(this, m_model, m_instance, true); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createResourcePack(this, m_model, m_instance, true); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &ResourcePackPage::downloadDialogFinished); diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index a29564abc..64ca2d394 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -38,8 +38,6 @@ #include "ShaderPackPage.h" #include "ui_ExternalResourcesPage.h" -#include "ResourceDownloadTask.h" - #include "minecraft/mod/ShaderPackFolderModel.h" #include "ui/dialogs/CustomMessageBox.h" @@ -82,7 +80,7 @@ void ShaderPackPage::downloadShaderPack() return; // this is a null instance or a legacy instance } - m_downloadDialog = new ResourceDownload::ShaderPackDownloadDialog(this, m_model, m_instance); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createShaderPack(this, m_model, m_instance); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &ShaderPackPage::downloadDialogFinished); @@ -256,7 +254,7 @@ void ShaderPackPage::changeShaderPackVersion() return; } - m_downloadDialog = new ResourceDownload::ShaderPackDownloadDialog(this, m_model, m_instance, true); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createShaderPack(this, m_model, m_instance, true); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &ShaderPackPage::downloadDialogFinished); diff --git a/launcher/ui/pages/instance/ShaderPackPage.h b/launcher/ui/pages/instance/ShaderPackPage.h index cc53a01e1..ab2f11835 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.h +++ b/launcher/ui/pages/instance/ShaderPackPage.h @@ -63,5 +63,5 @@ class ShaderPackPage : public ExternalResourcesPage { private: ShaderPackFolderModel* m_model; - QPointer m_downloadDialog; + QPointer m_downloadDialog; }; diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 01325e3f6..ca1e56e0a 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -37,10 +37,6 @@ #include "TexturePackPage.h" -#include "ResourceDownloadTask.h" - -#include "minecraft/mod/TexturePack.h" - #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" @@ -91,7 +87,7 @@ void TexturePackPage::downloadTexturePacks() return; // this is a null instance or a legacy instance } - m_downloadDialog = new ResourceDownload::TexturePackDownloadDialog(this, m_model, m_instance); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createTexturePack(this, m_model, m_instance); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &TexturePackPage::downloadDialogFinished); m_downloadDialog->open(); @@ -264,7 +260,7 @@ void TexturePackPage::changeTexturePackVersion() return; } - m_downloadDialog = new ResourceDownload::TexturePackDownloadDialog(this, m_model, m_instance, true); + m_downloadDialog = ResourceDownload::ResourceDownloadDialog::createTexturePack(this, m_model, m_instance, true); connect(this, &QObject::destroyed, m_downloadDialog, &QDialog::close); connect(m_downloadDialog, &QDialog::finished, this, &TexturePackPage::downloadDialogFinished); diff --git a/launcher/ui/pages/instance/TexturePackPage.h b/launcher/ui/pages/instance/TexturePackPage.h index dad0affa4..017388f68 100644 --- a/launcher/ui/pages/instance/TexturePackPage.h +++ b/launcher/ui/pages/instance/TexturePackPage.h @@ -67,5 +67,5 @@ class TexturePackPage : public ExternalResourcesPage { private: TexturePackFolderModel* m_model; - QPointer m_downloadDialog; + QPointer m_downloadDialog; }; diff --git a/launcher/ui/pages/modplatform/DataPackPage.cpp b/launcher/ui/pages/modplatform/DataPackPage.cpp index c865ea7a8..10187e61d 100644 --- a/launcher/ui/pages/modplatform/DataPackPage.cpp +++ b/launcher/ui/pages/modplatform/DataPackPage.cpp @@ -33,7 +33,7 @@ static ResourceDescriptor prepareDataPackDescriptor() }; } -DataPackResourcePage::DataPackResourcePage(DataPackDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api) +DataPackResourcePage::DataPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api) : ResourcePage(dialog, instance, prepareDataPackDescriptor(), p) { m_model = new DataPackResourceModel(instance, api, debugName(), metaEntryBase()); diff --git a/launcher/ui/pages/modplatform/DataPackPage.h b/launcher/ui/pages/modplatform/DataPackPage.h index 661fb6f2a..452dfbb62 100644 --- a/launcher/ui/pages/modplatform/DataPackPage.h +++ b/launcher/ui/pages/modplatform/DataPackPage.h @@ -14,7 +14,7 @@ class DataPackResourcePage : public ResourcePage { Q_OBJECT public: - DataPackResourcePage(DataPackDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api); + DataPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api); protected slots: void triggerSearch() override; diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp index c89cda209..d30c140ad 100644 --- a/launcher/ui/pages/modplatform/ModPage.cpp +++ b/launcher/ui/pages/modplatform/ModPage.cpp @@ -68,8 +68,11 @@ ResourceDownload::ResourceDescriptor prepareModDescriptor() } } // namespace -namespace ResourceDownload { -ModPage::ModPage(ModDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api, ModFilterWidget* filterWidget) +ModPage::ModPage(ResourceDownloadDialog* dialog, + BaseInstance& instance, + ResourceProviderData p, + ResourceAPI* api, + ModFilterWidget* filterWidget) : ResourcePage(dialog, instance, prepareModDescriptor(), std::move(p)), m_api(api) { auto* model = new ModModel(instance, api, debugName(), metaEntryBase()); diff --git a/launcher/ui/pages/modplatform/ModPage.h b/launcher/ui/pages/modplatform/ModPage.h index 5cebcd07e..2b8f2fa8b 100644 --- a/launcher/ui/pages/modplatform/ModPage.h +++ b/launcher/ui/pages/modplatform/ModPage.h @@ -12,7 +12,7 @@ namespace ResourceDownload { -class ModDownloadDialog; +class ResourceDownloadDialog; /* This page handles most logic related to browsing and selecting mods to download. */ class ModPage : public ResourcePage { @@ -21,7 +21,11 @@ class ModPage : public ResourcePage { public: auto getFilter() const -> const std::shared_ptr { return m_filter; } - ModPage(ModDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api, ModFilterWidget* filterWidget); + ModPage(ResourceDownloadDialog* dialog, + BaseInstance& instance, + ResourceProviderData p, + ResourceAPI* api, + ModFilterWidget* filterWidget); protected: void prepareProviderCategories(); diff --git a/launcher/ui/pages/modplatform/ShaderPackPage.cpp b/launcher/ui/pages/modplatform/ShaderPackPage.cpp index 319340477..bb217a30d 100644 --- a/launcher/ui/pages/modplatform/ShaderPackPage.cpp +++ b/launcher/ui/pages/modplatform/ShaderPackPage.cpp @@ -32,7 +32,7 @@ static ResourceDescriptor prepareShaderPackDescriptor() }; } -ShaderPackResourcePage::ShaderPackResourcePage(ShaderPackDownloadDialog* dialog, +ShaderPackResourcePage::ShaderPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api) diff --git a/launcher/ui/pages/modplatform/ShaderPackPage.h b/launcher/ui/pages/modplatform/ShaderPackPage.h index c5d5bb7f5..9bb1354fc 100644 --- a/launcher/ui/pages/modplatform/ShaderPackPage.h +++ b/launcher/ui/pages/modplatform/ShaderPackPage.h @@ -8,13 +8,13 @@ namespace ResourceDownload { -class ShaderPackDownloadDialog; +class ResourceDownloadDialog; class ShaderPackResourcePage : public ResourcePage { Q_OBJECT public: - ShaderPackResourcePage(ShaderPackDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api); + ShaderPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api); protected slots: void triggerSearch() override; diff --git a/launcher/ui/pages/modplatform/TexturePackPage.cpp b/launcher/ui/pages/modplatform/TexturePackPage.cpp index ac1fe9520..11b05bf89 100644 --- a/launcher/ui/pages/modplatform/TexturePackPage.cpp +++ b/launcher/ui/pages/modplatform/TexturePackPage.cpp @@ -32,7 +32,7 @@ static ResourceDescriptor prepareResourcePackDescriptor() }; } -TexturePackResourcePage::TexturePackResourcePage(TexturePackDownloadDialog* dialog, +TexturePackResourcePage::TexturePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api, diff --git a/launcher/ui/pages/modplatform/TexturePackPage.h b/launcher/ui/pages/modplatform/TexturePackPage.h index 54b41e89b..abd778d6e 100644 --- a/launcher/ui/pages/modplatform/TexturePackPage.h +++ b/launcher/ui/pages/modplatform/TexturePackPage.h @@ -15,7 +15,7 @@ class TexturePackResourcePage : public ResourcePage { Q_OBJECT public: - TexturePackResourcePage(TexturePackDownloadDialog* dialog, + TexturePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance, ResourceProviderData p, ResourceAPI* api, diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp index 85e004d29..3133ca8a7 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp @@ -57,27 +57,27 @@ static ResourceProviderData prepareFlame() }; } -ShaderPackResourcePage* Flame::createShaderPackResourcePage(ShaderPackDownloadDialog* dialog, BaseInstance& instance) +ShaderPackResourcePage* Flame::createShaderPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new ShaderPackResourcePage(dialog, instance, prepareFlame(), new FlameAPI()); } -DataPackResourcePage* Flame::createDataPackResourcePage(DataPackDownloadDialog* dialog, BaseInstance& instance) +DataPackResourcePage* Flame::createDataPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new DataPackResourcePage(dialog, instance, prepareFlame(), new FlameAPI()); } -ResourcePackResourcePage* Flame::createResourcePackResourcePage(ResourcePackDownloadDialog* dialog, BaseInstance& instance) +ResourcePackResourcePage* Flame::createResourcePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new ResourcePackResourcePage(dialog, instance, prepareFlame(), new FlameAPI()); } -TexturePackResourcePage* Flame::createTexturePackResourcePage(TexturePackDownloadDialog* dialog, BaseInstance& instance) +TexturePackResourcePage* Flame::createTexturePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new TexturePackResourcePage(dialog, instance, prepareFlame(), new FlameAPI(), new FlameTexturePackModel(instance)); } -ModPage* Flame::createModPage(ModDownloadDialog* dialog, BaseInstance& instance) +ModPage* Flame::createModPage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new ModPage(dialog, instance, prepareFlame(), new FlameAPI(), ModFilterWidget::create(&static_cast(instance), false)); diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.h b/launcher/ui/pages/modplatform/flame/FlameResourcePages.h index d9f1fe996..2c80f961f 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.h +++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.h @@ -70,11 +70,11 @@ static inline QString metaEntryBase() return "FlameMods"; } -ShaderPackResourcePage* createShaderPackResourcePage(ShaderPackDownloadDialog* dialog, BaseInstance& instance); -DataPackResourcePage* createDataPackResourcePage(DataPackDownloadDialog* dialog, BaseInstance& instance); -ResourcePackResourcePage* createResourcePackResourcePage(ResourcePackDownloadDialog* dialog, BaseInstance& instance); -TexturePackResourcePage* createTexturePackResourcePage(TexturePackDownloadDialog* dialog, BaseInstance& instance); -ModPage* createModPage(ModDownloadDialog* dialog, BaseInstance& instance); +ShaderPackResourcePage* createShaderPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +DataPackResourcePage* createDataPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +ResourcePackResourcePage* createResourcePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +TexturePackResourcePage* createTexturePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +ModPage* createModPage(ResourceDownloadDialog* dialog, BaseInstance& instance); } // namespace Flame } // namespace ResourceDownload diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp index c4d3025d2..0529b9a49 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp @@ -55,27 +55,27 @@ static ResourceProviderData prepareModrinth() }; } -ShaderPackResourcePage* Modrinth::createShaderPackResourcePage(ShaderPackDownloadDialog* dialog, BaseInstance& instance) +ShaderPackResourcePage* Modrinth::createShaderPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new ShaderPackResourcePage(dialog, instance, prepareModrinth(), new ModrinthAPI()); } -DataPackResourcePage* Modrinth::createDataPackResourcePage(DataPackDownloadDialog* dialog, BaseInstance& instance) +DataPackResourcePage* Modrinth::createDataPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new DataPackResourcePage(dialog, instance, prepareModrinth(), new ModrinthAPI()); } -ResourcePackResourcePage* Modrinth::createResourcePackResourcePage(ResourcePackDownloadDialog* dialog, BaseInstance& instance) +ResourcePackResourcePage* Modrinth::createResourcePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new ResourcePackResourcePage(dialog, instance, prepareModrinth(), new ModrinthAPI()); } -TexturePackResourcePage* Modrinth::createTexturePackResourcePage(TexturePackDownloadDialog* dialog, BaseInstance& instance) +TexturePackResourcePage* Modrinth::createTexturePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new TexturePackResourcePage(dialog, instance, prepareModrinth(), new ModrinthAPI()); } -ModPage* Modrinth::createModPage(ModDownloadDialog* dialog, BaseInstance& instance) +ModPage* Modrinth::createModPage(ResourceDownloadDialog* dialog, BaseInstance& instance) { return new ModPage(dialog, instance, prepareModrinth(), new ModrinthAPI(), ModFilterWidget::create(&static_cast(instance), true)); diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.h b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.h index 68fcbc8f5..e3bffc24b 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.h +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.h @@ -68,11 +68,11 @@ static inline QString metaEntryBase() return "ModrinthPacks"; } -ShaderPackResourcePage* createShaderPackResourcePage(ShaderPackDownloadDialog* dialog, BaseInstance& instance); -DataPackResourcePage* createDataPackResourcePage(DataPackDownloadDialog* dialog, BaseInstance& instance); -ResourcePackResourcePage* createResourcePackResourcePage(ResourcePackDownloadDialog* dialog, BaseInstance& instance); -TexturePackResourcePage* createTexturePackResourcePage(TexturePackDownloadDialog* dialog, BaseInstance& instance); -ModPage* createModPage(ModDownloadDialog* dialog, BaseInstance& instance); +ShaderPackResourcePage* createShaderPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +DataPackResourcePage* createDataPackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +ResourcePackResourcePage* createResourcePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +TexturePackResourcePage* createTexturePackResourcePage(ResourceDownloadDialog* dialog, BaseInstance& instance); +ModPage* createModPage(ResourceDownloadDialog* dialog, BaseInstance& instance); } // namespace Modrinth } // namespace ResourceDownload