diff --git a/src/Snap.Hutao/Snap.Hutao.Test/BaseClassLibrary/JsonSerializeTest.cs b/src/Snap.Hutao/Snap.Hutao.Test/BaseClassLibrary/JsonSerializeTest.cs index c9b65c17..40fa90bc 100644 --- a/src/Snap.Hutao/Snap.Hutao.Test/BaseClassLibrary/JsonSerializeTest.cs +++ b/src/Snap.Hutao/Snap.Hutao.Test/BaseClassLibrary/JsonSerializeTest.cs @@ -13,19 +13,19 @@ public sealed class JsonSerializeTest NumberHandling = JsonNumberHandling.AllowReadingFromString, }; - private const string SmapleObjectJson = """ + private const string SampleObjectJson = """ { "A" :1 } """; - private const string SmapleEmptyStringObjectJson = """ + private const string SampleEmptyStringObjectJson = """ { "A" : "" } """; - private const string SmapleNumberKeyDictionaryJson = """ + private const string SampleNumberKeyDictionaryJson = """ { "111" : "12", "222" : "34" @@ -35,7 +35,7 @@ public sealed class JsonSerializeTest [TestMethod] public void DelegatePropertyCanSerialize() { - SampleDelegatePropertyClass sample = JsonSerializer.Deserialize(SmapleObjectJson)!; + SampleDelegatePropertyClass sample = JsonSerializer.Deserialize(SampleObjectJson)!; Assert.AreEqual(sample.B, 1); } @@ -43,14 +43,23 @@ public sealed class JsonSerializeTest [ExpectedException(typeof(JsonException))] public void EmptyStringCannotSerializeAsNumber() { - SampleStringReadWriteNumberPropertyClass sample = JsonSerializer.Deserialize(SmapleEmptyStringObjectJson)!; + SampleStringReadWriteNumberPropertyClass sample = JsonSerializer.Deserialize(SampleEmptyStringObjectJson)!; Assert.AreEqual(sample.A, 0); } + [TestMethod] + public void EmptyStringCanSerializeAsUri() + { + SampleEmptyUriClass sample = JsonSerializer.Deserialize(SampleEmptyStringObjectJson)!; + Uri.TryCreate("", UriKind.RelativeOrAbsolute, out Uri? value); + Console.WriteLine(value); + Assert.AreEqual(sample.A, value); + } + [TestMethod] public void NumberStringKeyCanSerializeAsKey() { - Dictionary sample = JsonSerializer.Deserialize>(SmapleNumberKeyDictionaryJson, AlowStringNumberOptions)!; + Dictionary sample = JsonSerializer.Deserialize>(SampleNumberKeyDictionaryJson, AlowStringNumberOptions)!; Assert.AreEqual(sample[111], "12"); } @@ -92,6 +101,11 @@ public sealed class JsonSerializeTest public int A { get; set; } } + private sealed class SampleEmptyUriClass + { + public Uri A { get; set; } = default!; + } + private sealed class SampleByteArrayPropertyClass { public byte[]? Array { get; set; } diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml b/src/Snap.Hutao/Snap.Hutao/App.xaml index f81d7596..6cf4c5e3 100644 --- a/src/Snap.Hutao/Snap.Hutao/App.xaml +++ b/src/Snap.Hutao/Snap.Hutao/App.xaml @@ -10,12 +10,14 @@ + + @@ -36,7 +38,6 @@ - + + \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/Loading.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/Loading.xaml index f63cf4b6..6673c43b 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/Loading.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/Loading.xaml @@ -1,7 +1,11 @@ + xmlns:clw="using:CommunityToolkit.Labs.WinUI" + xmlns:cw="using:CommunityToolkit.WinUI" + xmlns:shuxc="using:Snap.Hutao.UI.Xaml.Control" + xmlns:shuxci="using:Snap.Hutao.UI.Xaml.Control.Image" + xmlns:shuxm="using:Snap.Hutao.UI.Xaml.Markup"> + + + + \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/RateDeltaTextBlock.cs b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/TextBlock/RateDeltaTextBlock.cs similarity index 96% rename from src/Snap.Hutao/Snap.Hutao/View/Control/RateDeltaTextBlock.cs rename to src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/TextBlock/RateDeltaTextBlock.cs index 722129c5..500b0e14 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/RateDeltaTextBlock.cs +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/TextBlock/RateDeltaTextBlock.cs @@ -4,7 +4,7 @@ using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; -namespace Snap.Hutao.View.Control; +namespace Snap.Hutao.UI.Xaml.Control.TextBlock; [TemplateVisualState(Name = "PositiveValue", GroupName = "CommonStates")] [TemplateVisualState(Name = "NegativeValue", GroupName = "CommonStates")] diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/RateDeltaTextBlockStyle.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/TextBlock/RateDeltaTextBlock.xaml similarity index 90% rename from src/Snap.Hutao/Snap.Hutao/View/Control/RateDeltaTextBlockStyle.xaml rename to src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/TextBlock/RateDeltaTextBlock.xaml index 575863fb..52982850 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/RateDeltaTextBlockStyle.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/Control/TextBlock/RateDeltaTextBlock.xaml @@ -1,15 +1,15 @@ + xmlns:shuxct="using:Snap.Hutao.UI.Xaml.Control.TextBlock"> - - - - - --> - - + + + + + + + diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/AvatarPropertyPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/AvatarPropertyPage.xaml index 85ec0159..d22b9665 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/AvatarPropertyPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/AvatarPropertyPage.xaml @@ -102,7 +102,7 @@ - - - - @@ -672,7 +672,7 @@ BorderBrush="{x:Null}" BorderThickness="0"> - + diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/CultivationPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/CultivationPage.xaml index 44aaa853..25e13284 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/CultivationPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/CultivationPage.xaml @@ -62,7 +62,7 @@ - - - - + diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/GachaLogPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/GachaLogPage.xaml index b86f245e..51ab85ac 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/GachaLogPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/GachaLogPage.xaml @@ -140,17 +140,18 @@ IsClickEnabled="True"/> - + IsLoading="{Binding HutaoCloudViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}" + Style="{ThemeResource DefaultLoadingCardStyle}"/> - - - + IsLoading="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}" + Style="{ThemeResource DefaultLoadingViewStyle}"/> - + diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/SpiralAbyssRecordPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/SpiralAbyssRecordPage.xaml index e90059d7..4756e0fb 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/SpiralAbyssRecordPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/SpiralAbyssRecordPage.xaml @@ -88,7 +88,7 @@ - @@ -138,7 +138,7 @@ - - - - - @@ -881,7 +881,7 @@ - - @@ -910,7 +910,7 @@ - @@ -929,10 +929,11 @@ - + IsLoading="{Binding Overview, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" + Style="{ThemeResource DefaultLoadingViewStyle}"/> diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiAvatarPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiAvatarPage.xaml index 7dc96e4e..ab8b2d52 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiAvatarPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiAvatarPage.xaml @@ -135,7 +135,7 @@ - - - @@ -186,7 +186,7 @@ 0 - 1 - 2 - @@ -241,7 +241,7 @@ Opacity="0.7" Style="{StaticResource CaptionTextBlockStyle}" Text="{Binding Rate}"/> - @@ -291,7 +291,7 @@ - + @@ -426,7 +426,7 @@ Height="32" Source="{Binding Selected.Weapon, Converter={StaticResource WeaponTypeIconConverter}}"/> - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -807,6 +807,6 @@ - + \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiMonsterPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiMonsterPage.xaml index 7678bcdf..6de170c9 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiMonsterPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiMonsterPage.xaml @@ -59,7 +59,7 @@ - - + @@ -218,6 +218,6 @@ - + diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiWeaponPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiWeaponPage.xaml index bedef2e4..19f1ebc7 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiWeaponPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/WikiWeaponPage.xaml @@ -94,7 +94,7 @@ - - - @@ -153,7 +153,7 @@ - + @@ -268,29 +268,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -303,6 +280,29 @@ VerticalAlignment="Stretch" Source="{Binding Selected.Icon, Converter={StaticResource GachaEquipIconConverter}}"/> + + + + + + + + + + + + + + + + + + + + - + diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Window/AnnouncementWebView2ContentProvider.cs b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Window/AnnouncementWebView2ContentProvider.cs index e81e5f98..2d5f0b17 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Window/AnnouncementWebView2ContentProvider.cs +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Window/AnnouncementWebView2ContentProvider.cs @@ -12,7 +12,8 @@ using Windows.System; namespace Snap.Hutao.UI.Xaml.View.Window; -internal sealed partial class AnnouncementWebView2ContentProvider : IWebView2ContentProvider +[DependencyProperty("Announcement", typeof(Announcement))] +internal sealed partial class AnnouncementWebView2ContentProvider : DependencyObject, IWebView2ContentProvider { // support click open browser. private const string MihoyoSDKDefinition = """ @@ -34,13 +35,6 @@ internal sealed partial class AnnouncementWebView2ContentProvider : IWebView2Con KeyValuePair.Create("background-color:rgb(244, 244, 245)", "background-color:rgba(11, 11, 10)"), ]); - private readonly Announcement? announcement; - - public AnnouncementWebView2ContentProvider(Announcement? announcement) - { - this.announcement = announcement; - } - public ElementTheme ActualTheme { get; set; } public CoreWebView2? CoreWebView2 { get; set; } @@ -113,6 +107,7 @@ internal sealed partial class AnnouncementWebView2ContentProvider : IWebView2Con + {{announcement.Subtitle}} - {{announcement.Title}}