diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index 8b6ce8a04..38c22d861 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -60,6 +60,11 @@ CreateShortcutDialog::CreateShortcutDialog(InstancePtr instance, QWidget* parent InstIconKey = instance->iconKey(); ui->iconButton->setIcon(APPLICATION->icons()->getIcon(InstIconKey)); ui->instNameTextBox->setText(instance->name()); + + m_QuickJoinSupported = instance->traits().contains("feature:is_quick_play_singleplayer"); + if (!m_QuickJoinSupported) { + // TODO: Remove radio box and add a single server address textbox instead + } } CreateShortcutDialog::~CreateShortcutDialog() @@ -78,31 +83,35 @@ void CreateShortcutDialog::on_iconButton_clicked() } } -void CreateShortcutDialog::on_saveTargetSelectionBox_currentIndexChanged(int index) -{} +void CreateShortcutDialog::on_saveTargetSelectionBox_currentIndexChanged(int index) {} -void CreateShortcutDialog::on_instNameTextBox_textChanged(const QString& arg1) -{} +void CreateShortcutDialog::on_instNameTextBox_textChanged(const QString& arg1) {} -void CreateShortcutDialog::on_overrideAccountCheckbox_stateChanged(int state) -{} +void CreateShortcutDialog::on_overrideAccountCheckbox_stateChanged(int state) {} -void CreateShortcutDialog::on_accountSelectionBox_currentIndexChanged(int index) -{} +void CreateShortcutDialog::on_accountSelectionBox_currentIndexChanged(int index) {} -void CreateShortcutDialog::on_targetCheckbox_stateChanged(int state) -{} +void CreateShortcutDialog::on_targetCheckbox_stateChanged(int state) {} -void CreateShortcutDialog::on_worldSelectionBox_currentIndexChanged(int index) -{} +void CreateShortcutDialog::on_worldSelectionBox_currentIndexChanged(int index) {} -void CreateShortcutDialog::on_serverAddressTextBox_textChanged(const QString& arg1) -{} +void CreateShortcutDialog::on_serverAddressBox_textChanged(const QString& arg1) {} -void CreateShortcutDialog::targetChanged() -{} +void CreateShortcutDialog::targetChanged() {} // Real work -void CreateShortcutDialog::createShortcut() const -{} - +void CreateShortcutDialog::createShortcut() +{ + QString targetString = tr("instance"); + QStringList extraArgs; + if (ui->targetCheckbox->isChecked()) { + if (ui->worldTarget->isChecked()) { + targetString = tr("world"); + extraArgs = { "--world", /* world ID */ }; + } else if (ui->serverTarget->isChecked()) { + targetString = tr("server"); + extraArgs = { "--server", /* server address */ }; + } + } + ShortcutUtils::createInstanceShortcutOnDesktop({ m_instance.get(), m_instance->name(), targetString, this, extraArgs }); +} diff --git a/launcher/ui/dialogs/CreateShortcutDialog.h b/launcher/ui/dialogs/CreateShortcutDialog.h index be0a5e792..7be6b339c 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.h +++ b/launcher/ui/dialogs/CreateShortcutDialog.h @@ -31,7 +31,7 @@ class CreateShortcutDialog : public QDialog { explicit CreateShortcutDialog(InstancePtr instance, QWidget* parent = nullptr); ~CreateShortcutDialog(); - void createShortcut() const; + void createShortcut(); private slots: // Icon, target and name @@ -46,13 +46,15 @@ class CreateShortcutDialog : public QDialog { // Override target (world, server) void on_targetCheckbox_stateChanged(int state); void on_worldSelectionBox_currentIndexChanged(int index); - void on_serverAddressTextBox_textChanged(const QString& arg1); + void on_serverAddressBox_textChanged(const QString& arg1); void targetChanged(); private: - /* data */ + // Data Ui::CreateShortcutDialog* ui; QString InstIconKey; InstancePtr m_instance; bool m_QuickJoinSupported = false; + + // Index representations }; diff --git a/launcher/ui/dialogs/CreateShortcutDialog.ui b/launcher/ui/dialogs/CreateShortcutDialog.ui index 364c42b15..e45a8428a 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.ui +++ b/launcher/ui/dialogs/CreateShortcutDialog.ui @@ -10,7 +10,7 @@ 0 0 450 - 365 + 370 @@ -161,9 +161,15 @@ - - - Server Address + + + + 0 + 0 + + + + true