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