mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-06-12 05:07:46 +02:00
Add option to install mod loader during instance creation
This commit is contained in:
@ -59,6 +59,11 @@ VanillaPage::VanillaPage(NewInstanceDialog *dialog, QWidget *parent)
|
||||
connect(ui->releaseFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged);
|
||||
connect(ui->experimentsFilter, &QCheckBox::stateChanged, this, &VanillaPage::filterChanged);
|
||||
connect(ui->refreshBtn, &QPushButton::clicked, this, &VanillaPage::refresh);
|
||||
|
||||
connect(ui->loaderVersionList, &VersionSelectWidget::selectedVersionChanged, this, &VanillaPage::setSelectedLoaderVersion);
|
||||
connect(ui->loaderBtnGroup, &QButtonGroup::idToggled, this, &VanillaPage::loaderFilterChanged);
|
||||
connect(ui->loaderRefreshBtn, &QPushButton::clicked, this, &VanillaPage::loaderRefresh);
|
||||
|
||||
}
|
||||
|
||||
void VanillaPage::openedImpl()
|
||||
@ -80,6 +85,13 @@ void VanillaPage::refresh()
|
||||
ui->versionList->loadList();
|
||||
}
|
||||
|
||||
void VanillaPage::loaderRefresh()
|
||||
{
|
||||
if(ui->noneFilter->isChecked())
|
||||
return;
|
||||
ui->loaderVersionList->loadList();
|
||||
}
|
||||
|
||||
void VanillaPage::filterChanged()
|
||||
{
|
||||
QStringList out;
|
||||
@ -99,6 +111,38 @@ void VanillaPage::filterChanged()
|
||||
ui->versionList->setFilter(BaseVersionList::TypeRole, new RegexpFilter(regexp, false));
|
||||
}
|
||||
|
||||
void VanillaPage::loaderFilterChanged()
|
||||
{
|
||||
if(ui->noneFilter->isChecked())
|
||||
{
|
||||
ui->loaderVersionList->setExactFilter(BaseVersionList::ParentVersionRole, "AAA"); // empty list
|
||||
// TODO: The below message does not show when the add instance window is first opened. This should be fixed.
|
||||
ui->loaderVersionList->setEmptyString(tr("No mod loader is selected."));
|
||||
return;
|
||||
}
|
||||
else if(ui->forgeFilter->isChecked())
|
||||
{
|
||||
ui->loaderVersionList->setExactFilter(BaseVersionList::ParentVersionRole, m_selectedVersion->descriptor());
|
||||
m_selectedLoader = "net.minecraftforge";
|
||||
}
|
||||
else if(ui->fabricFilter->isChecked())
|
||||
{
|
||||
ui->loaderVersionList->setExactFilter(BaseVersionList::ParentVersionRole, "");
|
||||
m_selectedLoader = "net.fabricmc.fabric-loader";
|
||||
}
|
||||
else if(ui->liteLoaderFilter->isChecked())
|
||||
{
|
||||
ui->loaderVersionList->setExactFilter(BaseVersionList::ParentVersionRole, m_selectedVersion->descriptor());
|
||||
m_selectedLoader = "com.mumfrey.liteloader";
|
||||
}
|
||||
|
||||
auto vlist = APPLICATION->metadataIndex()->get(m_selectedLoader);
|
||||
ui->loaderVersionList->initialize(vlist.get());
|
||||
ui->loaderVersionList->selectRecommended();
|
||||
suggestCurrent();
|
||||
ui->loaderVersionList->setEmptyString(tr("No versions are currently available for Minecraft %1").arg(m_selectedVersion->descriptor()));
|
||||
}
|
||||
|
||||
VanillaPage::~VanillaPage()
|
||||
{
|
||||
delete ui;
|
||||
@ -119,6 +163,16 @@ BaseVersionPtr VanillaPage::selectedVersion() const
|
||||
return m_selectedVersion;
|
||||
}
|
||||
|
||||
BaseVersionPtr VanillaPage::selectedLoaderVersion() const
|
||||
{
|
||||
return m_selectedLoaderVersion;
|
||||
}
|
||||
|
||||
QString VanillaPage::selectedLoader() const
|
||||
{
|
||||
return m_selectedLoader;
|
||||
}
|
||||
|
||||
void VanillaPage::suggestCurrent()
|
||||
{
|
||||
if (!isOpened)
|
||||
@ -132,7 +186,15 @@ void VanillaPage::suggestCurrent()
|
||||
return;
|
||||
}
|
||||
|
||||
dialog->setSuggestedPack(m_selectedVersion->descriptor(), new InstanceCreationTask(m_selectedVersion));
|
||||
// List is empty if either no mod loader is selected, or no versions are available
|
||||
if(!ui->loaderVersionList->hasVersions())
|
||||
dialog->setSuggestedPack(m_selectedVersion->descriptor(), new InstanceCreationTask(m_selectedVersion));
|
||||
else
|
||||
{
|
||||
dialog->setSuggestedPack(m_selectedVersion->descriptor(),
|
||||
new InstanceCreationTask(m_selectedVersion, m_selectedLoader,
|
||||
m_selectedLoaderVersion));
|
||||
}
|
||||
dialog->setSuggestedIcon("default");
|
||||
}
|
||||
|
||||
@ -140,4 +202,11 @@ void VanillaPage::setSelectedVersion(BaseVersionPtr version)
|
||||
{
|
||||
m_selectedVersion = version;
|
||||
suggestCurrent();
|
||||
loaderFilterChanged();
|
||||
}
|
||||
|
||||
void VanillaPage::setSelectedLoaderVersion(BaseVersionPtr version)
|
||||
{
|
||||
m_selectedLoaderVersion = version;
|
||||
suggestCurrent();
|
||||
}
|
||||
|
Reference in New Issue
Block a user