mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-15 07:43:20 +08:00
新增一条龙配置的重命名与删除 (#2658)
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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("重命名配置时失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user