新增一条龙配置的重命名与删除 (#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:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
@@ -218,40 +218,47 @@
<StackPanel Margin="0,0,0,10" DockPanel.Dock="Top">
<Grid Margin="0,0,9,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
FontSize="16"
FontWeight="Bold"
VerticalAlignment="Center"
Text="配置"
x:Name="ConfigListGrid"/>
<ComboBox Grid.Column="1"
MinWidth="200"
Height="34"
Margin="10,0,10,0"
DisplayMemberPath="Name"
ItemsSource="{Binding ConfigList}"
SelectedItem="{Binding SelectedConfig, Mode=TwoWay}">
<b:Interaction.Triggers>
<b:EventTrigger EventName="SelectionChanged">
<b:InvokeCommandAction Command="{Binding ConfigDropDownChangedCommand}"
CommandParameter="GeniusInvocation" />
</b:EventTrigger>
</b:Interaction.Triggers>
</ComboBox>
<ui:Button
Grid.Column="2"
Margin="0,0,10,0"
Icon="{ui:SymbolIcon Add24}"
Command="{Binding AddConfigCommand}" />
<!--<ui:Button Grid.Column="3"
Icon="{ui:SymbolIcon Save24}"
Command="{Binding SaveConfigurationCommand}"
Content="保存配置" />-->
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
FontSize="16"
FontWeight="Bold"
VerticalAlignment="Center"
Text="配置"
x:Name="ConfigListGrid"/>
<ComboBox Grid.Column="1"
MinWidth="200"
Height="34"
Margin="10,0,10,0"
DisplayMemberPath="Name"
ItemsSource="{Binding ConfigList}"
SelectedItem="{Binding SelectedConfig, Mode=TwoWay}">
<b:Interaction.Triggers>
<b:EventTrigger EventName="SelectionChanged">
<b:InvokeCommandAction Command="{Binding ConfigDropDownChangedCommand}"
CommandParameter="GeniusInvocation" />
</b:EventTrigger>
</b:Interaction.Triggers>
</ComboBox>
<ui:Button
Grid.Column="2"
Margin="0,0,10,0"
Icon="{ui:SymbolIcon Add24}"
Command="{Binding AddConfigCommand}" />
<ui:Button
Grid.Column="3"
Margin="0,0,10,0"
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>
<Separator Margin="0,5,0,0" BorderThickness="0,1,0,0" />
</StackPanel>

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using BetterGenshinImpact.Model;
using CommunityToolkit.Mvvm.ComponentModel;
@@ -738,4 +738,122 @@ public partial class OneDragonFlowViewModel : ViewModel
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("重命名配置时失败");
}
}
}