Fix crash and make loader override more consistent with other option groups
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
parent
178965676e
commit
956f5ee180
2 changed files with 50 additions and 36 deletions
|
@ -104,19 +104,21 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance,
|
||||||
if (!value)
|
if (!value)
|
||||||
m_instance->settings()->reset("GlobalDataPacksPath");
|
m_instance->settings()->reset("GlobalDataPacksPath");
|
||||||
});
|
});
|
||||||
connect(m_ui->dataPacksPathEdit, &QLineEdit::editingFinished, this, &MinecraftSettingsWidget::editedDataPacksPath);
|
connect(m_ui->dataPacksPathEdit, &QLineEdit::editingFinished, this, &MinecraftSettingsWidget::saveDataPacksPath);
|
||||||
connect(m_ui->dataPacksPathBrowse, &QPushButton::clicked, this, &MinecraftSettingsWidget::selectDataPacksFolder);
|
connect(m_ui->dataPacksPathBrowse, &QPushButton::clicked, this, &MinecraftSettingsWidget::selectDataPacksFolder);
|
||||||
|
|
||||||
connect(m_ui->loaderGroup, &QGroupBox::toggled, this, [this](bool value) {
|
connect(m_ui->loaderGroup, &QGroupBox::toggled, this, [this](bool value) {
|
||||||
m_instance->settings()->set("OverrideModDownloadLoaders", value);
|
m_instance->settings()->set("OverrideModDownloadLoaders", value);
|
||||||
if (!value)
|
if (value)
|
||||||
|
saveSelectedLoaders();
|
||||||
|
else
|
||||||
m_instance->settings()->reset("ModDownloadLoaders");
|
m_instance->settings()->reset("ModDownloadLoaders");
|
||||||
});
|
});
|
||||||
connect(m_ui->neoForge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged);
|
connect(m_ui->neoForge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders);
|
||||||
connect(m_ui->forge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged);
|
connect(m_ui->forge, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders);
|
||||||
connect(m_ui->fabric, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged);
|
connect(m_ui->fabric, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders);
|
||||||
connect(m_ui->quilt, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged);
|
connect(m_ui->quilt, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders);
|
||||||
connect(m_ui->liteLoader, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::selectedLoadersChanged);
|
connect(m_ui->liteLoader, &QCheckBox::stateChanged, this, &MinecraftSettingsWidget::saveSelectedLoaders);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui->maximizedWarning->hide();
|
m_ui->maximizedWarning->hide();
|
||||||
|
@ -251,22 +253,28 @@ void MinecraftSettingsWidget::loadSettings()
|
||||||
m_ui->fabric->blockSignals(true);
|
m_ui->fabric->blockSignals(true);
|
||||||
m_ui->quilt->blockSignals(true);
|
m_ui->quilt->blockSignals(true);
|
||||||
m_ui->liteLoader->blockSignals(true);
|
m_ui->liteLoader->blockSignals(true);
|
||||||
auto instLoaders = m_instance->getPackProfile()->getSupportedModLoaders().value();
|
|
||||||
m_ui->loaderGroup->setChecked(settings->get("OverrideModDownloadLoaders").toBool());
|
const bool overrideLoaders = settings->get("OverrideModDownloadLoaders").toBool();
|
||||||
auto loaders = Json::toStringList(settings->get("ModDownloadLoaders").toString());
|
const QStringList loaders = Json::toStringList(settings->get("ModDownloadLoaders").toString());
|
||||||
if (loaders.isEmpty()) {
|
|
||||||
m_ui->neoForge->setChecked(instLoaders & ModPlatform::NeoForge);
|
m_ui->loaderGroup->setChecked(overrideLoaders);
|
||||||
m_ui->forge->setChecked(instLoaders & ModPlatform::Forge);
|
|
||||||
m_ui->fabric->setChecked(instLoaders & ModPlatform::Fabric);
|
if (overrideLoaders) {
|
||||||
m_ui->quilt->setChecked(instLoaders & ModPlatform::Quilt);
|
|
||||||
m_ui->liteLoader->setChecked(instLoaders & ModPlatform::LiteLoader);
|
|
||||||
} else {
|
|
||||||
m_ui->neoForge->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::NeoForge)));
|
m_ui->neoForge->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::NeoForge)));
|
||||||
m_ui->forge->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Forge)));
|
m_ui->forge->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Forge)));
|
||||||
m_ui->fabric->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Fabric)));
|
m_ui->fabric->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Fabric)));
|
||||||
m_ui->quilt->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Quilt)));
|
m_ui->quilt->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::Quilt)));
|
||||||
m_ui->liteLoader->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::LiteLoader)));
|
m_ui->liteLoader->setChecked(loaders.contains(getModLoaderAsString(ModPlatform::LiteLoader)));
|
||||||
|
} else {
|
||||||
|
auto instLoaders = m_instance->getPackProfile()->getSupportedModLoaders().value_or(ModPlatform::ModLoaderTypes(0));
|
||||||
|
|
||||||
|
m_ui->neoForge->setChecked(instLoaders & ModPlatform::NeoForge);
|
||||||
|
m_ui->forge->setChecked(instLoaders & ModPlatform::Forge);
|
||||||
|
m_ui->fabric->setChecked(instLoaders & ModPlatform::Fabric);
|
||||||
|
m_ui->quilt->setChecked(instLoaders & ModPlatform::Quilt);
|
||||||
|
m_ui->liteLoader->setChecked(instLoaders & ModPlatform::LiteLoader);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui->loaderGroup->blockSignals(false);
|
m_ui->loaderGroup->blockSignals(false);
|
||||||
m_ui->neoForge->blockSignals(false);
|
m_ui->neoForge->blockSignals(false);
|
||||||
m_ui->forge->blockSignals(false);
|
m_ui->forge->blockSignals(false);
|
||||||
|
@ -504,7 +512,29 @@ bool MinecraftSettingsWidget::isQuickPlaySupported()
|
||||||
return m_instance->traits().contains("feature:is_quick_play_singleplayer");
|
return m_instance->traits().contains("feature:is_quick_play_singleplayer");
|
||||||
}
|
}
|
||||||
|
|
||||||
void MinecraftSettingsWidget::editedDataPacksPath()
|
void MinecraftSettingsWidget::saveSelectedLoaders()
|
||||||
|
{
|
||||||
|
QStringList loaders;
|
||||||
|
|
||||||
|
if (m_ui->neoForge->isChecked())
|
||||||
|
loaders << getModLoaderAsString(ModPlatform::NeoForge);
|
||||||
|
|
||||||
|
if (m_ui->forge->isChecked())
|
||||||
|
loaders << getModLoaderAsString(ModPlatform::Forge);
|
||||||
|
|
||||||
|
if (m_ui->fabric->isChecked())
|
||||||
|
loaders << getModLoaderAsString(ModPlatform::Fabric);
|
||||||
|
|
||||||
|
if (m_ui->quilt->isChecked())
|
||||||
|
loaders << getModLoaderAsString(ModPlatform::Quilt);
|
||||||
|
|
||||||
|
if (m_ui->liteLoader->isChecked())
|
||||||
|
loaders << getModLoaderAsString(ModPlatform::LiteLoader);
|
||||||
|
|
||||||
|
m_instance->settings()->set("ModDownloadLoaders", Json::fromStringList(loaders));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MinecraftSettingsWidget::saveDataPacksPath()
|
||||||
{
|
{
|
||||||
if (QDir::separator() != '/')
|
if (QDir::separator() != '/')
|
||||||
m_ui->dataPacksPathEdit->setText(m_ui->dataPacksPathEdit->text().replace(QDir::separator(), '/'));
|
m_ui->dataPacksPathEdit->setText(m_ui->dataPacksPathEdit->text().replace(QDir::separator(), '/'));
|
||||||
|
@ -531,19 +561,3 @@ void MinecraftSettingsWidget::selectDataPacksFolder()
|
||||||
m_ui->dataPacksPathEdit->setText(path);
|
m_ui->dataPacksPathEdit->setText(path);
|
||||||
m_instance->settings()->set("GlobalDataPacksPath", path);
|
m_instance->settings()->set("GlobalDataPacksPath", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MinecraftSettingsWidget::selectedLoadersChanged()
|
|
||||||
{
|
|
||||||
QStringList loaders;
|
|
||||||
if (m_ui->neoForge->isChecked())
|
|
||||||
loaders << getModLoaderAsString(ModPlatform::NeoForge);
|
|
||||||
if (m_ui->forge->isChecked())
|
|
||||||
loaders << getModLoaderAsString(ModPlatform::Forge);
|
|
||||||
if (m_ui->fabric->isChecked())
|
|
||||||
loaders << getModLoaderAsString(ModPlatform::Fabric);
|
|
||||||
if (m_ui->quilt->isChecked())
|
|
||||||
loaders << getModLoaderAsString(ModPlatform::Quilt);
|
|
||||||
if (m_ui->liteLoader->isChecked())
|
|
||||||
loaders << getModLoaderAsString(ModPlatform::LiteLoader);
|
|
||||||
m_instance->settings()->set("ModDownloadLoaders", Json::fromStringList(loaders));
|
|
||||||
}
|
|
||||||
|
|
|
@ -57,8 +57,8 @@ class MinecraftSettingsWidget : public QWidget {
|
||||||
void updateAccountsMenu(const SettingsObject& settings);
|
void updateAccountsMenu(const SettingsObject& settings);
|
||||||
bool isQuickPlaySupported();
|
bool isQuickPlaySupported();
|
||||||
private slots:
|
private slots:
|
||||||
void selectedLoadersChanged();
|
void saveSelectedLoaders();
|
||||||
void editedDataPacksPath();
|
void saveDataPacksPath();
|
||||||
void selectDataPacksFolder();
|
void selectDataPacksFolder();
|
||||||
|
|
||||||
MinecraftInstancePtr m_instance;
|
MinecraftInstancePtr m_instance;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue