Feat: Add name validation for preset creation and renaming (#6258)

This commit is contained in:
快乐凤爪王
2026-06-30 20:51:14 +08:00
committed by GitHub
parent 823b74b7e5
commit 6223ceedff
4 changed files with 26 additions and 1 deletions
@@ -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=重命名预设