remove extra ResourceDownloadDialogs

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2026-02-07 00:20:43 +02:00
parent e0b8d6e0fc
commit f00903d6e3
No known key found for this signature in database
GPG key ID: 55EF5DA53DB36318
23 changed files with 229 additions and 323 deletions

View file

@ -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<BasePage*> ModDownloadDialog::getPages()
{
QList<BasePage*> pages;
auto loaders = static_cast<MinecraftInstance*>(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<ModFolderModel*>(getBaseModel()); model) {
QList<std::shared_ptr<GetModDependenciesTask::PackDependency>> selectedVers;
for (const auto& selected : getTasks()) {
selectedVers.append(std::make_shared<GetModDependenciesTask::PackDependency>(selected->getPack(), selected->getVersion()));
}
return makeShared<GetModDependenciesTask>(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<BasePage*> ResourcePackDownloadDialog::getPages()
{
QList<BasePage*> 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<BasePage*> TexturePackDownloadDialog::getPages()
{
QList<BasePage*> 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<BasePage*> ShaderPackDownloadDialog::getPages()
{
QList<BasePage*> 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<Metadata::ModStruct>& meta)
{
switch (meta->provider) {
@ -448,34 +313,138 @@ void ResourceDownloadDialog::setResourceMetadata(const std::shared_ptr<Metadata:
page->openProject(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<ModFolderModel*>(getBaseModel()); model) {
QList<std::shared_ptr<GetModDependenciesTask::PackDependency>> selectedVers;
for (auto& selected : getTasks()) {
selectedVers.append(std::make_shared<GetModDependenciesTask::PackDependency>(selected->getPack(), selected->getVersion()));
}
return makeShared<GetModDependenciesTask>(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<BasePage*> pages;
auto loaders = static_cast<MinecraftInstance*>(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<BasePage*> 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<BasePage*> 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<BasePage*> 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<BasePage*> 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<BasePage*> 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<BasePage*> DataPackDownloadDialog::getPages()
{
QList<BasePage*> 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