Merge pull request #5162 from arthomnix/quickplay-shortcut-fix

NOISSUE Fix shortcut dialog bugs
This commit is contained in:
Petr Mrázek
2023-05-24 10:02:01 +02:00
committed by GitHub

View File

@@ -45,17 +45,25 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance
// TODO: check if version is affected by crashing when joining servers on launch, ideally in meta // TODO: check if version is affected by crashing when joining servers on launch, ideally in meta
bool instanceSupportsQuickPlay = false;
auto mcInstance = std::dynamic_pointer_cast<MinecraftInstance>(instance); auto mcInstance = std::dynamic_pointer_cast<MinecraftInstance>(instance);
mcInstance->getPackProfile()->reload(Net::Mode::Offline); if (mcInstance)
if (mcInstance && mcInstance->getPackProfile()->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate)
{ {
mcInstance->worldList()->update(); mcInstance->getPackProfile()->reload(Net::Mode::Online);
for (const auto &world : mcInstance->worldList()->allWorlds())
if (mcInstance->getPackProfile()->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate)
{ {
ui->joinSingleplayer->addItem(world.folderName()); instanceSupportsQuickPlay = true;
mcInstance->worldList()->update();
for (const auto &world : mcInstance->worldList()->allWorlds())
{
ui->joinSingleplayer->addItem(world.folderName());
}
} }
} }
else
if (!instanceSupportsQuickPlay)
{ {
ui->joinServerRadioButton->setChecked(true); ui->joinServerRadioButton->setChecked(true);
ui->joinSingleplayerRadioButton->setVisible(false); ui->joinSingleplayerRadioButton->setVisible(false);
@@ -68,6 +76,8 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance
ui->createScriptCheckBox->setChecked(true); ui->createScriptCheckBox->setChecked(true);
#endif #endif
connect(ui->joinWorldCheckBox, &QCheckBox::toggled, this, &CreateShortcutDialog::updateDialogState);
updateDialogState(); updateDialogState();
} }
@@ -111,9 +121,11 @@ void CreateShortcutDialog::updateDialogState()
{ {
ui->buttonBox->button(QDialogButtonBox::StandardButton::Ok)->setEnabled( ui->buttonBox->button(QDialogButtonBox::StandardButton::Ok)->setEnabled(
!ui->shortcutPath->text().isEmpty() !ui->shortcutPath->text().isEmpty()
&& (!ui->joinWorldCheckBox->isChecked() || ui->joinServerRadioButton->isChecked() || ui->joinSingleplayerRadioButton->isChecked()) && (
&& (!ui->joinServerRadioButton->isChecked() || !ui->joinServer->text().isEmpty()) !ui->joinWorldCheckBox->isChecked()
&& (!ui->joinSingleplayerRadioButton->isChecked() || !ui->joinSingleplayer->currentText().isEmpty()) || (ui->joinServerRadioButton->isChecked() && !ui->joinServer->text().isEmpty())
|| (ui->joinSingleplayerRadioButton->isChecked() && !ui->joinSingleplayer->currentText().isEmpty())
)
&& (!ui->offlineUsernameCheckBox->isChecked() || !ui->offlineUsername->text().isEmpty()) && (!ui->offlineUsernameCheckBox->isChecked() || !ui->offlineUsername->text().isEmpty())
&& (!ui->useProfileCheckBox->isChecked() || !ui->profileComboBox->currentText().isEmpty()) && (!ui->useProfileCheckBox->isChecked() || !ui->profileComboBox->currentText().isEmpty())
); );