From ea8f105292058289ec7350d61ab5fec1c3e94306 Mon Sep 17 00:00:00 2001 From: Yihe Li Date: Sun, 18 May 2025 23:03:14 +0800 Subject: [PATCH] Add stubs and b asic integration with MainWindow Signed-off-by: Yihe Li --- launcher/ui/MainWindow.cpp | 44 ++------------------ launcher/ui/MainWindow.h | 3 -- launcher/ui/MainWindow.ui | 33 --------------- launcher/ui/dialogs/CreateShortcutDialog.cpp | 44 ++++++++++++++++++-- launcher/ui/dialogs/CreateShortcutDialog.h | 2 + 5 files changed, 47 insertions(+), 79 deletions(-) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 7cc28917a..062175ece 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -110,7 +110,6 @@ #include "ui/widgets/LabeledToolButton.h" #include "minecraft/PackProfile.h" -#include "minecraft/ShortcutUtils.h" #include "minecraft/VersionFile.h" #include "minecraft/WorldList.h" #include "minecraft/mod/ModFolderModel.h" @@ -209,26 +208,6 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi exportInstanceMenu->addAction(ui->actionExportInstanceMrPack); exportInstanceMenu->addAction(ui->actionExportInstanceFlamePack); ui->actionExportInstance->setMenu(exportInstanceMenu); - - QList shortcutActions = { ui->actionCreateInstanceShortcutOther }; - if (!DesktopServices::isFlatpak()) { - QString desktopDir = FS::getDesktopDir(); - QString applicationDir = FS::getApplicationsDir(); - - if (!applicationDir.isEmpty()) - shortcutActions.push_front(ui->actionCreateInstanceShortcutApplications); - - if (!desktopDir.isEmpty()) - shortcutActions.push_front(ui->actionCreateInstanceShortcutDesktop); - } - - if (shortcutActions.length() > 1) { - auto shortcutInstanceMenu = new QMenu(this); - - for (auto action : shortcutActions) - shortcutInstanceMenu->addAction(action); - ui->actionCreateInstanceShortcut->setMenu(shortcutInstanceMenu); - } } // hide, disable and show stuff @@ -1552,25 +1531,10 @@ void MainWindow::on_actionCreateInstanceShortcut_triggered() if (!m_selectedInstance) return; - if (DesktopServices::isFlatpak()) - on_actionCreateInstanceShortcutOther_triggered(); - else - on_actionCreateInstanceShortcutDesktop_triggered(); -} - -void MainWindow::on_actionCreateInstanceShortcutDesktop_triggered() -{ - ShortcutUtils::createInstanceShortcutOnDesktop({ m_selectedInstance.get(), m_selectedInstance->name(), tr("instance"), this }); -} - -void MainWindow::on_actionCreateInstanceShortcutApplications_triggered() -{ - ShortcutUtils::createInstanceShortcutInApplications({ m_selectedInstance.get(), m_selectedInstance->name(), tr("instance"), this }); -} - -void MainWindow::on_actionCreateInstanceShortcutOther_triggered() -{ - ShortcutUtils::createInstanceShortcutInOther({ m_selectedInstance.get(), m_selectedInstance->name(), tr("instance"), this }); + CreateShortcutDialog shortcutDlg(m_selectedInstance, this); + if (!shortcutDlg.exec()) + return; + shortcutDlg.createShortcut(); } void MainWindow::taskEnd() diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h index 20ab21e67..0e692eda7 100644 --- a/launcher/ui/MainWindow.h +++ b/launcher/ui/MainWindow.h @@ -166,9 +166,6 @@ class MainWindow : public QMainWindow { void on_actionEditInstance_triggered(); void on_actionCreateInstanceShortcut_triggered(); - void on_actionCreateInstanceShortcutDesktop_triggered(); - void on_actionCreateInstanceShortcutApplications_triggered(); - void on_actionCreateInstanceShortcutOther_triggered(); void taskEnd(); diff --git a/launcher/ui/MainWindow.ui b/launcher/ui/MainWindow.ui index 6530e2c5a..1499ec872 100644 --- a/launcher/ui/MainWindow.ui +++ b/launcher/ui/MainWindow.ui @@ -771,39 +771,6 @@ Open the Java folder in a file browser. Only available if the built-in Java downloader is used. - - - Desktop - - - Creates a shortcut to this instance on your desktop - - - QAction::TextHeuristicRole - - - - - Applications - - - Create a shortcut of this instance on your start menu - - - QAction::TextHeuristicRole - - - - - Other... - - - Creates a shortcut in a folder selected by you - - - QAction::TextHeuristicRole - - diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index eda8eb214..8b6ce8a04 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -50,21 +50,59 @@ #include "FileSystem.h" #include "InstanceList.h" #include "icons/IconList.h" +#include "minecraft/ShortcutUtils.h" CreateShortcutDialog::CreateShortcutDialog(InstancePtr instance, QWidget* parent) : QDialog(parent), ui(new Ui::CreateShortcutDialog), m_instance(instance) { ui->setupUi(this); - resize(minimumSizeHint()); - layout()->setSizeConstraint(QLayout::SetFixedSize); InstIconKey = instance->iconKey(); ui->iconButton->setIcon(APPLICATION->icons()->getIcon(InstIconKey)); ui->instNameTextBox->setText(instance->name()); - ui->instNameTextBox->setFocus(); } CreateShortcutDialog::~CreateShortcutDialog() { delete ui; } + +void CreateShortcutDialog::on_iconButton_clicked() +{ + IconPickerDialog dlg(this); + dlg.execWithSelection(InstIconKey); + + if (dlg.result() == QDialog::Accepted) { + InstIconKey = dlg.selectedIconKey; + ui->iconButton->setIcon(APPLICATION->icons()->getIcon(InstIconKey)); + } +} + +void CreateShortcutDialog::on_saveTargetSelectionBox_currentIndexChanged(int index) +{} + +void CreateShortcutDialog::on_instNameTextBox_textChanged(const QString& arg1) +{} + +void CreateShortcutDialog::on_overrideAccountCheckbox_stateChanged(int state) +{} + +void CreateShortcutDialog::on_accountSelectionBox_currentIndexChanged(int index) +{} + +void CreateShortcutDialog::on_targetCheckbox_stateChanged(int state) +{} + +void CreateShortcutDialog::on_worldSelectionBox_currentIndexChanged(int index) +{} + +void CreateShortcutDialog::on_serverAddressTextBox_textChanged(const QString& arg1) +{} + +void CreateShortcutDialog::targetChanged() +{} + +// Real work +void CreateShortcutDialog::createShortcut() const +{} + diff --git a/launcher/ui/dialogs/CreateShortcutDialog.h b/launcher/ui/dialogs/CreateShortcutDialog.h index 5fba78931..be0a5e792 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.h +++ b/launcher/ui/dialogs/CreateShortcutDialog.h @@ -31,6 +31,8 @@ class CreateShortcutDialog : public QDialog { explicit CreateShortcutDialog(InstancePtr instance, QWidget* parent = nullptr); ~CreateShortcutDialog(); + void createShortcut() const; + private slots: // Icon, target and name void on_iconButton_clicked();