From 44a4712e611a5dbee9d2d2e31228b25fb4c6e031 Mon Sep 17 00:00:00 2001 From: arthomnix Date: Mon, 22 May 2023 17:30:02 +0100 Subject: [PATCH 1/6] NOISSUE Fix shortcut dialog bugs Fixes bugs in the create shortcut dialog where the OK button and server address text box were always disabled on instances that don't support Quick Play. --- launcher/ui/dialogs/CreateShortcutDialog.cpp | 8 +++++--- launcher/ui/dialogs/CreateShortcutDialog.ui | 21 +++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index f3b1e5c9..161cccba 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -111,9 +111,11 @@ void CreateShortcutDialog::updateDialogState() { ui->buttonBox->button(QDialogButtonBox::StandardButton::Ok)->setEnabled( !ui->shortcutPath->text().isEmpty() - && (!ui->joinWorldCheckBox->isChecked() || ui->joinServerRadioButton->isChecked() || ui->joinSingleplayerRadioButton->isChecked()) - && (!ui->joinServerRadioButton->isChecked() || !ui->joinServer->text().isEmpty()) - && (!ui->joinSingleplayerRadioButton->isChecked() || !ui->joinSingleplayer->currentText().isEmpty()) + && ( + !ui->joinWorldCheckBox->isChecked() + || (ui->joinServerRadioButton->isChecked() && !ui->joinServer->text().isEmpty()) + || (ui->joinSingleplayerRadioButton->isChecked() && !ui->joinSingleplayer->currentText().isEmpty()) + ) && (!ui->offlineUsernameCheckBox->isChecked() || !ui->offlineUsername->text().isEmpty()) && (!ui->useProfileCheckBox->isChecked() || !ui->profileComboBox->currentText().isEmpty()) ); diff --git a/launcher/ui/dialogs/CreateShortcutDialog.ui b/launcher/ui/dialogs/CreateShortcutDialog.ui index 59659656..d8f5dd85 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.ui +++ b/launcher/ui/dialogs/CreateShortcutDialog.ui @@ -1,9 +1,4 @@ - CreateShortcutDialog @@ -454,6 +449,22 @@ + + joinWorldCheckBox + toggled(bool) + CreateShortcutDialog + updateDialogState() + + + 140 + 59 + + + 397 + 164 + + + updateDialogState() From e1b7630677e660693d5834a2d5fe061cf2dc46c4 Mon Sep 17 00:00:00 2001 From: arthomnix Date: Mon, 22 May 2023 17:34:43 +0100 Subject: [PATCH 2/6] NOISSUE add copyright header back to ui file --- launcher/ui/dialogs/CreateShortcutDialog.ui | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.ui b/launcher/ui/dialogs/CreateShortcutDialog.ui index d8f5dd85..2ea45db9 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.ui +++ b/launcher/ui/dialogs/CreateShortcutDialog.ui @@ -1,4 +1,9 @@ + CreateShortcutDialog From 29c78b56fc288de2583d054ce37e9b541c288155 Mon Sep 17 00:00:00 2001 From: arthomnix Date: Mon, 22 May 2023 17:39:37 +0100 Subject: [PATCH 3/6] NOISSUE reload pack profile in online mode so the Minecraft release date is loaded properly --- launcher/ui/dialogs/CreateShortcutDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index 161cccba..04955844 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -46,7 +46,7 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance // TODO: check if version is affected by crashing when joining servers on launch, ideally in meta auto mcInstance = std::dynamic_pointer_cast(instance); - mcInstance->getPackProfile()->reload(Net::Mode::Offline); + mcInstance->getPackProfile()->reload(Net::Mode::Online); if (mcInstance && mcInstance->getPackProfile()->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate) { mcInstance->worldList()->update(); From d6dabfa67df9fbde4186e2314c933b47d6959d59 Mon Sep 17 00:00:00 2001 From: arthomnix Date: Mon, 22 May 2023 17:59:26 +0100 Subject: [PATCH 4/6] NOISSUE Only reload the pack profile if the cast to MinecraftInstance was successful Prevents a potential segfault if the instance is not a MinecraftInstance --- launcher/ui/dialogs/CreateShortcutDialog.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index 04955844..934f3a64 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -46,13 +46,17 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance // TODO: check if version is affected by crashing when joining servers on launch, ideally in meta auto mcInstance = std::dynamic_pointer_cast(instance); - mcInstance->getPackProfile()->reload(Net::Mode::Online); - if (mcInstance && mcInstance->getPackProfile()->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate) + if (mcInstance) { - mcInstance->worldList()->update(); - for (const auto &world : mcInstance->worldList()->allWorlds()) + mcInstance->getPackProfile()->reload(Net::Mode::Online); + + if (mcInstance->getPackProfile()->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate) { - ui->joinSingleplayer->addItem(world.folderName()); + mcInstance->worldList()->update(); + for (const auto &world : mcInstance->worldList()->allWorlds()) + { + ui->joinSingleplayer->addItem(world.folderName()); + } } } else From 72e62058c05e3b987de3017959746ba221610764 Mon Sep 17 00:00:00 2001 From: arthomnix Date: Tue, 23 May 2023 16:47:27 +0100 Subject: [PATCH 5/6] NOISSUE Connect signal in code instead of ui file --- launcher/ui/dialogs/CreateShortcutDialog.cpp | 2 ++ launcher/ui/dialogs/CreateShortcutDialog.ui | 16 ---------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index 934f3a64..fa95bf87 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -72,6 +72,8 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance ui->createScriptCheckBox->setChecked(true); #endif + connect(ui->joinWorldCheckBox, &QCheckBox::toggled, this, &CreateShortcutDialog::updateDialogState); + updateDialogState(); } diff --git a/launcher/ui/dialogs/CreateShortcutDialog.ui b/launcher/ui/dialogs/CreateShortcutDialog.ui index 2ea45db9..59659656 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.ui +++ b/launcher/ui/dialogs/CreateShortcutDialog.ui @@ -454,22 +454,6 @@ - - joinWorldCheckBox - toggled(bool) - CreateShortcutDialog - updateDialogState() - - - 140 - 59 - - - 397 - 164 - - - updateDialogState() From 39780c72382f398fb903d8bb883138701ac00e9b Mon Sep 17 00:00:00 2001 From: arthomnix Date: Tue, 23 May 2023 16:52:27 +0100 Subject: [PATCH 6/6] NOISSUE Fix release date check --- launcher/ui/dialogs/CreateShortcutDialog.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index fa95bf87..dc8415e6 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -45,6 +45,8 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance // 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(instance); if (mcInstance) { @@ -52,6 +54,7 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance if (mcInstance->getPackProfile()->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate) { + instanceSupportsQuickPlay = true; mcInstance->worldList()->update(); for (const auto &world : mcInstance->worldList()->allWorlds()) { @@ -59,7 +62,8 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance } } } - else + + if (!instanceSupportsQuickPlay) { ui->joinServerRadioButton->setChecked(true); ui->joinSingleplayerRadioButton->setVisible(false);