diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Panel/PanelSelector.xaml.cs b/src/Snap.Hutao/Snap.Hutao/Control/Panel/PanelSelector.xaml.cs index 266d2a77..8ce1ca54 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Panel/PanelSelector.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Panel/PanelSelector.xaml.cs @@ -3,6 +3,7 @@ using CommunityToolkit.WinUI.Controls; using Microsoft.UI.Xaml; +using Snap.Hutao.Core.Setting; namespace Snap.Hutao.Control.Panel; @@ -11,6 +12,8 @@ namespace Snap.Hutao.Control.Panel; /// [HighQuality] [DependencyProperty("Current", typeof(string), List)] +[DependencyProperty("LocalSettingKeySuffixForCurrent", typeof(string))] +[DependencyProperty("LocalSettingKeyExtraForCurrent", typeof(string), "")] internal sealed partial class PanelSelector : Segmented { public const string List = nameof(List); @@ -42,21 +45,41 @@ internal sealed partial class PanelSelector : Segmented selectedIndexChangedCallbackToken = RegisterPropertyChangedCallback(SelectedIndexProperty, OnSelectedIndexChanged); } - private void OnSelectedIndexChanged(DependencyObject sender, DependencyProperty dp) - { - Current = IndexTypeMap[(int)GetValue(dp)]; - } - - private void OnRootLoaded(object sender, RoutedEventArgs e) + private static void OnSelectedIndexChanged(DependencyObject sender, DependencyProperty dp) { PanelSelector selector = (PanelSelector)sender; - selector.SelectedItem = selector.Items.Cast().Single(item => (string)item.Tag == Current); + selector.Current = IndexTypeMap[(int)selector.GetValue(dp)]; + + if (!string.IsNullOrEmpty(selector.LocalSettingKeySuffixForCurrent)) + { + LocalSetting.Set(GetSettingKey(selector), selector.Current); + } } - private void OnRootUnload(object sender, RoutedEventArgs e) + private static void OnRootLoaded(object sender, RoutedEventArgs e) { - UnregisterPropertyChangedCallback(SelectedIndexProperty, selectedIndexChangedCallbackToken); - Loaded -= loadedEventHandler; - Unloaded -= unloadedEventHandler; + PanelSelector selector = (PanelSelector)sender; + + if (string.IsNullOrEmpty(selector.LocalSettingKeySuffixForCurrent)) + { + return; + } + + string value = LocalSetting.Get(GetSettingKey(selector), selector.Current); + selector.Current = value; + + selector.SelectedItem = selector.Items.Cast().Single(item => (string)item.Tag == selector.Current); + } + + private static void OnRootUnload(object sender, RoutedEventArgs e) + { + PanelSelector selector = (PanelSelector)sender; + selector.UnregisterPropertyChangedCallback(SelectedIndexProperty, selector.selectedIndexChangedCallbackToken); + selector.Unloaded -= selector.unloadedEventHandler; + } + + private static string GetSettingKey(PanelSelector selector) + { + return $"Control.PanelSelector.{selector.LocalSettingKeySuffixForCurrent}{selector.LocalSettingKeyExtraForCurrent}"; } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs index 917583f1..e6392eee 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs @@ -120,6 +120,7 @@ internal sealed class TypedWishSummaryBuilder { // base Name = context.Name, + TypeName = $"{context.DistributionType:D}", From = fromTimeTracker, To = toTimeTracker, TotalCount = totalCountTracker, diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/StatisticsCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/StatisticsCard.xaml index 388f4d05..30b344c8 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/StatisticsCard.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/StatisticsCard.xaml @@ -151,6 +151,8 @@ x:Name="ItemsPanelSelector" Margin="6,0,0,0" Current="Grid" + LocalSettingKeyExtraForCurrent="{Binding TypeName}" + LocalSettingKeySuffixForCurrent="StatisticsCard.OrangeList" Visibility="{x:Bind DetailExpander.IsExpanded, Converter={StaticResource BoolToVisibilityConverter}, Mode=OneWay}"/> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml index 1c4ddf73..cee08806 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml @@ -202,7 +202,10 @@ - + - + - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml index 9624fac5..017ee457 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml @@ -76,7 +76,10 @@ BorderThickness="0" DefaultLabelPosition="Right"> - + - + public string Name { get; set; } = default!; + /// + /// 类型名称,不受语言影响 + /// + public string? TypeName { get; set; } + /// /// 总数 ///