mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2026-10-29 15:10:30 +08:00
Feat: Add name validation for preset creation and renaming (#6258)
This commit is contained in:
@@ -180,6 +180,13 @@ final class PresetManagementPane extends ComponentSublist {
|
||||
setDescription(setting != null ? getPresetDisplayName(setting) : "");
|
||||
}
|
||||
|
||||
// Used to check the preset name.
|
||||
private boolean isPresetNameExists(String name, @Nullable GameSettings.Preset excludeSetting) {
|
||||
return SettingsManager.getGameSettings().stream()
|
||||
.filter(setting -> excludeSetting == null || setting != excludeSetting)
|
||||
.anyMatch(setting -> Objects.equals(name, getPresetDisplayName(setting)));
|
||||
}
|
||||
|
||||
/// Creates a new preset and selects it for editing.
|
||||
private void createPreset() {
|
||||
int number = createDefaultPresetNumber();
|
||||
@@ -188,6 +195,15 @@ final class PresetManagementPane extends ComponentSublist {
|
||||
.setPromptText(i18n("settings.type.global.preset.auto_name", number));
|
||||
Controllers.prompt(new PromptDialogPane.Builder(i18n("settings.type.global.preset.create"), (questions, handler) -> {
|
||||
String name = (String) questions.get(0).getValue();
|
||||
|
||||
if (StringUtils.isNotBlank(name)) {
|
||||
String trimmedName = name.trim();
|
||||
if (isPresetNameExists(trimmedName, null)) {
|
||||
handler.reject(i18n("settings.type.global.preset.duplicate_name"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GameSettings.Preset setting = new GameSettings.Preset(SettingsManager.gameSettingsPresets().newPresetId());
|
||||
if (StringUtils.isBlank(name)) {
|
||||
setting.autoNameNumberProperty().setValue(number);
|
||||
@@ -233,7 +249,13 @@ final class PresetManagementPane extends ComponentSublist {
|
||||
return;
|
||||
}
|
||||
|
||||
setting.nameProperty().setValue(LocalizedText.plain(name.trim()));
|
||||
String trimmedName = name.trim();
|
||||
if (isPresetNameExists(trimmedName, setting)) {
|
||||
handler.reject(i18n("settings.type.global.preset.duplicate_name"));
|
||||
return;
|
||||
}
|
||||
|
||||
setting.nameProperty().setValue(LocalizedText.plain(trimmedName));
|
||||
setting.autoNameNumberProperty().setValue(null);
|
||||
handler.resolve();
|
||||
}).addQuestion(nameQuestion));
|
||||
|
||||
@@ -1630,6 +1630,7 @@ settings.type.global.manage=Global Settings
|
||||
settings.type.global.preset=Preset
|
||||
settings.type.global.preset.create=Create Preset
|
||||
settings.type.global.preset.default=Use Default Preset
|
||||
settings.type.global.preset.duplicate_name=Preset name already exists
|
||||
settings.type.global.preset.manage_all=Default Preset
|
||||
settings.type.global.preset.name=Preset Name
|
||||
settings.type.global.preset.rename=Rename Preset
|
||||
|
||||
@@ -1421,6 +1421,7 @@ settings.type.global.manage=全域遊戲設定
|
||||
settings.type.global.preset=預設
|
||||
settings.type.global.preset.create=新增預設
|
||||
settings.type.global.preset.default=使用預設項目
|
||||
settings.type.global.preset.duplicate_name=預設名稱已存在
|
||||
settings.type.global.preset.manage_all=預設項目
|
||||
settings.type.global.preset.name=預設名稱
|
||||
settings.type.global.preset.rename=重新命名預設
|
||||
|
||||
@@ -1426,6 +1426,7 @@ settings.type.global.manage=全局游戏设置
|
||||
settings.type.global.preset=预设
|
||||
settings.type.global.preset.create=新建预设
|
||||
settings.type.global.preset.default=使用默认预设
|
||||
settings.type.global.preset.duplicate_name=预设名称已存在
|
||||
settings.type.global.preset.manage_all=默认预设
|
||||
settings.type.global.preset.name=预设名称
|
||||
settings.type.global.preset.rename=重命名预设
|
||||
|
||||
Reference in New Issue
Block a user