diff --git a/launcher/ui/dialogs/NewInstanceDialog.cpp b/launcher/ui/dialogs/NewInstanceDialog.cpp index 8cf094527..39c433de7 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.cpp +++ b/launcher/ui/dialogs/NewInstanceDialog.cpp @@ -255,7 +255,7 @@ InstanceTask* NewInstanceDialog::extractTask() InstanceTask* extracted = creationTask.release(); InstanceName inst_name(ui->instNameTextBox->placeholderText().trimmed(), importVersion); - inst_name.setName(ui->instNameTextBox->text().trimmed()); + inst_name.setName(resolveWildcardName(ui->instNameTextBox->text().trimmed())); extracted->setName(inst_name); extracted->setGroup(instGroup()); @@ -276,7 +276,7 @@ QString NewInstanceDialog::instName() const { auto result = ui->instNameTextBox->text().trimmed(); if (result.size()) { - return result; + return resolveWildcardName(result); } result = ui->instNameTextBox->placeholderText().trimmed(); if (result.size()) { @@ -285,6 +285,17 @@ QString NewInstanceDialog::instName() const return QString(); } +QString NewInstanceDialog::resolveWildcardName(const QString& typed) const +{ + if (!typed.contains('*')) { + return typed; + } + + auto suggested = ui->instNameTextBox->placeholderText().trimmed(); + QString result = typed; + return result.replace('*', suggested); +} + QString NewInstanceDialog::instGroup() const { return ui->groupBox->currentText(); diff --git a/launcher/ui/dialogs/NewInstanceDialog.h b/launcher/ui/dialogs/NewInstanceDialog.h index e97c9f543..3a66619c5 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.h +++ b/launcher/ui/dialogs/NewInstanceDialog.h @@ -75,6 +75,8 @@ class NewInstanceDialog : public QDialog, public BasePageProvider { QString instGroup() const; QString iconKey() const; + QString resolveWildcardName(const QString& typed) const; + public slots: void accept() override; void reject() override; diff --git a/launcher/ui/pages/modplatform/CustomPage.cpp b/launcher/ui/pages/modplatform/CustomPage.cpp index f24abf9fb..d93942c9b 100644 --- a/launcher/ui/pages/modplatform/CustomPage.cpp +++ b/launcher/ui/pages/modplatform/CustomPage.cpp @@ -184,6 +184,26 @@ QString CustomPage::selectedLoader() const return m_selectedLoader; } +QString CustomPage::selectedLoaderName() const +{ + if (ui->neoForgeFilter->isChecked()) { + return ui->neoForgeFilter->text(); + } + if (ui->forgeFilter->isChecked()) { + return ui->forgeFilter->text(); + } + if (ui->fabricFilter->isChecked()) { + return ui->fabricFilter->text(); + } + if (ui->quiltFilter->isChecked()) { + return ui->quiltFilter->text(); + } + if (ui->liteLoaderFilter->isChecked()) { + return ui->liteLoaderFilter->text(); + } + return QString(); +} + void CustomPage::suggestCurrent() { if (!isOpened) { @@ -199,8 +219,8 @@ void CustomPage::suggestCurrent() if (ui->loaderVersionList->selectedVersion() == nullptr) dialog->setSuggestedPack(m_selectedVersion->descriptor(), new VanillaCreationTask(m_selectedVersion)); else { - dialog->setSuggestedPack(m_selectedVersion->descriptor(), - new VanillaCreationTask(m_selectedVersion, m_selectedLoader, m_selectedLoaderVersion)); + QString suggestedName = QString("%1 %2").arg(m_selectedVersion->descriptor(), selectedLoaderName()); + dialog->setSuggestedPack(suggestedName, new VanillaCreationTask(m_selectedVersion, m_selectedLoader, m_selectedLoaderVersion)); } dialog->setSuggestedIcon("default"); } diff --git a/launcher/ui/pages/modplatform/CustomPage.h b/launcher/ui/pages/modplatform/CustomPage.h index 2bfb1de29..e1bd456b7 100644 --- a/launcher/ui/pages/modplatform/CustomPage.h +++ b/launcher/ui/pages/modplatform/CustomPage.h @@ -65,6 +65,7 @@ class CustomPage : public QWidget, public BasePage { BaseVersion::Ptr selectedVersion() const; BaseVersion::Ptr selectedLoaderVersion() const; QString selectedLoader() const; + QString selectedLoaderName() const; public slots: void setSelectedVersion(BaseVersion::Ptr version);