diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs index 54ed3441..ba2e8cbf 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs @@ -50,4 +50,9 @@ internal sealed class Achievement /// 图标 /// public string? Icon { get; set; } + + /// + /// 版本 + /// + public string Version { get; set; } = default!; } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs index f5fe92d6..e171df65 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs @@ -3679,7 +3679,7 @@ namespace Snap.Hutao.Resource.Localization { } /// - /// 查找类似 搜索成就名称,描述或编号 的本地化字符串。 + /// 查找类似 搜索成就名称,描述,版本或编号 的本地化字符串。 /// internal static string ViewPageAchievementSearchPlaceholder { get { diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index b2a94458..1e705ef7 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -1380,7 +1380,7 @@ 删除当前存档 - 搜索成就名称,描述或编号 + 搜索成就名称,描述,版本或编号 优先未完成 diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml index 434094f1..19f20d64 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml @@ -32,7 +32,10 @@ - + @@ -53,7 +56,7 @@ DefaultLabelPosition="Right"> - + + + + + + + + + + + ((AchievementView)obj).Inner.Id == achievementId; + return; } - else + + if (VersionRegex().IsMatch(search)) { - Achievements.Filter = obj => - { - AchievementView view = (AchievementView)obj; - return view.Inner.Title.Contains(search, StringComparison.CurrentCultureIgnoreCase) - || view.Inner.Description.Contains(search, StringComparison.CurrentCultureIgnoreCase); - }; + Achievements.Filter = obj => ((AchievementView)obj).Inner.Version == search; + return; } + + Achievements.Filter = obj => + { + AchievementView view = (AchievementView)obj; + return view.Inner.Title.Contains(search, StringComparison.CurrentCultureIgnoreCase) + || view.Inner.Description.Contains(search, StringComparison.CurrentCultureIgnoreCase); + }; } } } @@ -407,4 +413,7 @@ internal sealed partial class AchievementViewModel : Abstraction.ViewModel, INav UpdateAchievementsFinishPercent(); } } + + [GeneratedRegex("\\d\\.\\d")] + private static partial Regex VersionRegex(); } \ No newline at end of file