From 0da645594fbb0e8cd0b791e0901e9311d20d9b16 Mon Sep 17 00:00:00 2001 From: Yihe Li Date: Thu, 27 Mar 2025 01:20:07 +0800 Subject: [PATCH] Adjust instance view sorting mode to QComboBox and add renaming behavior Signed-off-by: Yihe Li --- launcher/Application.cpp | 2 + launcher/ui/pages/global/LauncherPage.cpp | 48 +++++++++++++++--- launcher/ui/pages/global/LauncherPage.ui | 62 ++++++++++++++++------- 3 files changed, 86 insertions(+), 26 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index c3477d331..816f7b8ab 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -709,7 +709,9 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("ToolbarsLocked", false); + // Instance m_settings->registerSetting("InstSortMode", "Name"); + m_settings->registerSetting("InstRenamingMode", "AskEverytime"); m_settings->registerSetting("SelectedInstance", QString()); // Window state and geometry diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index 04ee01b00..fab1bfe38 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -65,13 +65,19 @@ enum InstSortMode { Sort_LastLaunch }; +enum InstRenamingMode { + // Rename metadata only. + Rename_Metadata, + // Rename physical directory too. + Rename_Physical, + // Ask everytime. + Rename_Ask +}; + LauncherPage::LauncherPage(QWidget* parent) : QWidget(parent), ui(new Ui::LauncherPage) { ui->setupUi(this); - ui->sortingModeGroup->setId(ui->sortByNameBtn, Sort_Name); - ui->sortingModeGroup->setId(ui->sortLastLaunchedBtn, Sort_LastLaunch); - defaultFormat = new QTextCharFormat(ui->fontPreview->currentCharFormat()); m_languageModel = APPLICATION->translations(); @@ -234,7 +240,8 @@ void LauncherPage::applySettings() s->set("DownloadsDirWatchRecursive", ui->downloadsDirWatchRecursiveCheckBox->isChecked()); s->set("MoveModsFromDownloadsDir", ui->downloadsDirMoveCheckBox->isChecked()); - auto sortMode = (InstSortMode)ui->sortingModeGroup->checkedId(); + // Instance + auto sortMode = (InstSortMode) ui->viewSortingComboBox->currentIndex(); switch (sortMode) { case Sort_LastLaunch: s->set("InstSortMode", "LastLaunch"); @@ -245,6 +252,20 @@ void LauncherPage::applySettings() break; } + auto renamingMode = (InstRenamingMode) ui->renamingBehaviorComboBox->currentIndex(); + switch (renamingMode) { + case Rename_Metadata: + s->set("InstRenamingMode", "MetadataOnly"); + break; + case Rename_Physical: + s->set("InstRenamingMode", "PhysicalDir"); + break; + case Rename_Ask: + default: + s->set("InstRenamingMode", "AskEverytime"); + break; + } + // Cat s->set("CatOpacity", ui->catOpacitySpinBox->value()); @@ -299,13 +320,26 @@ void LauncherPage::loadSettings() ui->downloadsDirWatchRecursiveCheckBox->setChecked(s->get("DownloadsDirWatchRecursive").toBool()); ui->downloadsDirMoveCheckBox->setChecked(s->get("MoveModsFromDownloadsDir").toBool()); + // Instance QString sortMode = s->get("InstSortMode").toString(); - + InstSortMode sortModeEnum; if (sortMode == "LastLaunch") { - ui->sortLastLaunchedBtn->setChecked(true); + sortModeEnum = Sort_LastLaunch; } else { - ui->sortByNameBtn->setChecked(true); + sortModeEnum = Sort_Name; } + ui->viewSortingComboBox->setCurrentIndex(sortModeEnum); + + QString renamingMode = s->get("InstRenamingMode").toString(); + InstRenamingMode renamingModeEnum; + if (renamingMode == "MetadataOnly") { + renamingModeEnum = Rename_Metadata; + } else if (renamingMode == "PhysicalDir"){ + renamingModeEnum = Rename_Physical; + } else { + renamingModeEnum = Rename_Ask; + } + ui->renamingBehaviorComboBox->setCurrentIndex(renamingModeEnum); // Cat ui->catOpacitySpinBox->setValue(s->get("CatOpacity").toInt()); diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index 31c878f3e..01aad7af7 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -401,32 +401,59 @@ - + true - Instance view sorting mode + Instance - - - + + + - &By last launched + Instance view sorting mode - - sortingModeGroup - - - + + + + + By last launched + + + + + By name + + + + + + - By &name + Instance renaming behavior - - sortingModeGroup - + + + + + + + Rename metadata only + + + + + Rename physical directory + + + + + Ask everytime + + @@ -674,7 +701,7 @@ numberOfConcurrentDownloadsSpinBox numberOfManualRetriesSpinBox timeoutSecondsSpinBox - sortLastLaunchedBtn + sortLastLaunchedComboBox sortByNameBtn catOpacitySpinBox preferMenuBarCheckBox @@ -686,7 +713,4 @@ - - - \ No newline at end of file