mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-07-06 13:26:58 +03:00
suppoer non mods deps
fixes #3962 Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
245ff2b555
commit
2e45d135c5
17 changed files with 282 additions and 205 deletions
|
|
@ -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());
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue