suppoer non mods deps

fixes #3962

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2026-04-03 15:20:25 +03:00
parent 245ff2b555
commit 2e45d135c5
No known key found for this signature in database
GPG key ID: 55EF5DA53DB36318
17 changed files with 282 additions and 205 deletions

View file

@ -25,6 +25,7 @@
#include <utility>
#include "Application.h"
#include "BaseInstance.h"
#include "ResourceDownloadTask.h"
#include "minecraft/PackProfile.h"
@ -50,12 +51,16 @@
namespace ResourceDownload {
ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, ResourceFolderModel* baseModel, bool suppressInitialSearch)
ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent,
ResourceFolderModel* baseModel,
BaseInstance* inst,
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(inst)
{
setObjectName(QStringLiteral("ResourceDownloadDialog"));
@ -200,9 +205,9 @@ void ResourceDownloadDialog::confirm()
confirmDialog->appendResource({ .name = task->getName(),
.filename = task->getFilename(),
.provider = ModPlatform::ProviderCapabilities::name(task->getProvider()),
.required_by = extraInfo.required_by,
.required_by = extraInfo.requiredBy,
.version_type = task->getVersion().version_type.toString(),
.enabled = !extraInfo.maybe_installed });
.enabled = !extraInfo.maybeInstalled });
}
if (confirmDialog->exec() != 0) {
@ -237,7 +242,32 @@ ResourcePage* ResourceDownloadDialog::selectedPage()
void ResourceDownloadDialog::addResource(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& ver, QString downloadReason)
{
removeResource(pack->name);
selectedPage()->addResourceToPage(pack, ver, getBaseModel(), std::move(downloadReason));
auto* model = getBaseModel();
auto* instance = dynamic_cast<MinecraftInstance*>(m_instance);
if (instance) {
switch (pack->resourceType) {
case ModPlatform::ResourceType::Mod:
model = instance->loaderModList();
break;
case ModPlatform::ResourceType::ResourcePack:
model = instance->resourcePackList();
break;
case ModPlatform::ResourceType::ShaderPack:
model = instance->shaderPackList();
break;
case ModPlatform::ResourceType::DataPack:
model = instance->dataPackList();
break;
// case ModPlatform::ResourceType::World:
// model = instance->worldList();
case ModPlatform::ResourceType::TexturePack:
model = instance->texturePackList();
break;
default:
break;
}
}
selectedPage()->addResourceToPage(pack, ver, model, std::move(downloadReason));
setButtonStatus();
}
@ -289,13 +319,25 @@ void ResourceDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* s
}
ModDownloadDialog::ModDownloadDialog(QWidget* parent, ModFolderModel* mods, BaseInstance* instance, bool suppressInitialSearch)
: ResourceDownloadDialog(parent, mods, suppressInitialSearch), m_instance(instance)
: ResourceDownloadDialog(parent, mods, instance, suppressInitialSearch), m_instance(instance)
{
setWindowTitle(dialogTitle());
initializeContainer();
connectButtons();
// need to load all resources for dependency task
auto* mInstance = dynamic_cast<MinecraftInstance*>(instance);
if (mInstance) {
for (auto* model : mInstance->resourceLists()) {
if (model) {
if (model->empty()) {
model->startWatching();
}
}
}
}
if (!geometrySaveKey().isEmpty()) {
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8()));
}
@ -340,7 +382,7 @@ ResourcePackDownloadDialog::ResourcePackDownloadDialog(QWidget* parent,
ResourcePackFolderModel* resourcePacks,
BaseInstance* instance,
bool suppressInitialSearch)
: ResourceDownloadDialog(parent, resourcePacks, suppressInitialSearch), m_instance(instance)
: ResourceDownloadDialog(parent, resourcePacks, instance, suppressInitialSearch), m_instance(instance)
{
setWindowTitle(dialogTitle());
@ -372,7 +414,7 @@ TexturePackDownloadDialog::TexturePackDownloadDialog(QWidget* parent,
TexturePackFolderModel* resourcePacks,
BaseInstance* instance,
bool suppressInitialSearch)
: ResourceDownloadDialog(parent, resourcePacks, suppressInitialSearch), m_instance(instance)
: ResourceDownloadDialog(parent, resourcePacks, instance, suppressInitialSearch), m_instance(instance)
{
setWindowTitle(dialogTitle());
@ -404,7 +446,7 @@ ShaderPackDownloadDialog::ShaderPackDownloadDialog(QWidget* parent,
ShaderPackFolderModel* shaders,
BaseInstance* instance,
bool suppressInitialSearch)
: ResourceDownloadDialog(parent, shaders, suppressInitialSearch), m_instance(instance)
: ResourceDownloadDialog(parent, shaders, instance, suppressInitialSearch), m_instance(instance)
{
setWindowTitle(dialogTitle());
@ -452,7 +494,7 @@ DataPackDownloadDialog::DataPackDownloadDialog(QWidget* parent,
DataPackFolderModel* dataPacks,
BaseInstance* instance,
bool suppressInitialSearch)
: ResourceDownloadDialog(parent, dataPacks, suppressInitialSearch), m_instance(instance)
: ResourceDownloadDialog(parent, dataPacks, instance, suppressInitialSearch), m_instance(instance)
{
setWindowTitle(dialogTitle());