新增一条龙配置的重命名与删除 (#2658)

This commit is contained in:
DarkFlameMaster
2026-01-19 15:36:03 +08:00
committed by GitHub
parent 3b3236d9f9
commit 2d5c7f6e1f
2 changed files with 161 additions and 36 deletions

View File

@@ -1,4 +1,4 @@
<UserControl x:Class="BetterGenshinImpact.View.Pages.OneDragonFlowPage" <UserControl x:Class="BetterGenshinImpact.View.Pages.OneDragonFlowPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors" xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
@@ -222,6 +222,7 @@
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" <TextBlock Grid.Column="0"
FontSize="16" FontSize="16"
@@ -248,10 +249,16 @@
Margin="0,0,10,0" Margin="0,0,10,0"
Icon="{ui:SymbolIcon Add24}" Icon="{ui:SymbolIcon Add24}"
Command="{Binding AddConfigCommand}" /> Command="{Binding AddConfigCommand}" />
<!--<ui:Button Grid.Column="3" <ui:Button
Icon="{ui:SymbolIcon Save24}" Grid.Column="3"
Command="{Binding SaveConfigurationCommand}" Margin="0,0,10,0"
Content="保存配置" />--> Icon="{ui:SymbolIcon Edit24}"
Command="{Binding RenameConfigCommand}" />
<ui:Button
Grid.Column="4"
Margin="0,0,10,0"
Icon="{ui:SymbolIcon Delete24}"
Command="{Binding DeleteConfigCommand}" />
</Grid> </Grid>
<Separator Margin="0,5,0,0" BorderThickness="0,1,0,0" /> <Separator Margin="0,5,0,0" BorderThickness="0,1,0,0" />
</StackPanel> </StackPanel>

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BetterGenshinImpact.Model; using BetterGenshinImpact.Model;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
@@ -738,4 +738,122 @@ public partial class OneDragonFlowViewModel : ViewModel
SaveConfig(); SaveConfig();
} }
[RelayCommand]
private void DeleteConfig()
{
if (SelectedConfig == null)
{
Toast.Warning("请先选择要删除的配置");
return;
}
var result = System.Windows.MessageBox.Show($"确定要删除配置「{SelectedConfig.Name}」吗?", "删除配置", System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxImage.Question);
if (result != System.Windows.MessageBoxResult.Yes)
{
return;
}
try
{
// 删除对应的JSON文件
var configFile = Path.Combine(OneDragonFlowConfigFolder, $"{SelectedConfig.Name}.json");
if (File.Exists(configFile))
{
File.Delete(configFile);
}
// 从列表中移除
ConfigList.Remove(SelectedConfig);
// 如果列表为空,创建默认配置
if (ConfigList.Count == 0)
{
var defaultConfig = new OneDragonFlowConfig
{
Name = "默认配置"
};
ConfigList.Add(defaultConfig);
SelectedConfig = defaultConfig;
WriteConfig(defaultConfig);
}
else
{
// 如果还有其他配置,选中第一个
SelectedConfig = ConfigList[0];
}
// 更新全局配置名称
TaskContext.Instance().Config.SelectedOneDragonFlowConfigName = SelectedConfig.Name;
// 刷新任务列表
LoadDisplayTaskListFromConfig();
// 保存配置
SaveConfig();
Toast.Success("配置删除成功");
}
catch (Exception e)
{
_logger.LogError(e, "删除配置时失败");
Toast.Error("删除配置时失败");
}
}
[RelayCommand]
private void RenameConfig()
{
if (SelectedConfig == null)
{
Toast.Warning("请先选择要重命名的配置");
return;
}
var newName = PromptDialog.Prompt("请输入新的配置名称", "重命名配置", SelectedConfig.Name);
if (string.IsNullOrEmpty(newName))
{
return;
}
if (newName == SelectedConfig.Name)
{
return;
}
if (ConfigList.Any(x => x.Name == newName))
{
Toast.Warning($"配置名称「{newName}」已存在,请使用其他名称");
return;
}
try
{
// 保存旧名称
var oldName = SelectedConfig.Name;
// 更新配置名称
SelectedConfig.Name = newName;
// 先写入新文件
WriteConfig(SelectedConfig);
// 写入成功后再删除旧文件
var oldConfigFile = Path.Combine(OneDragonFlowConfigFolder, $"{oldName}.json");
if (File.Exists(oldConfigFile))
{
File.Delete(oldConfigFile);
}
// 更新全局配置名称
TaskContext.Instance().Config.SelectedOneDragonFlowConfigName = newName;
Toast.Success("配置重命名成功");
}
catch (Exception e)
{
_logger.LogError(e, "重命名配置时失败");
Toast.Error("重命名配置时失败");
}
}
} }