From 021957ba3f4a4b7a4ee8ea3d8773bdcf2b09a283 Mon Sep 17 00:00:00 2001 From: Aigio Liu Date: Tue, 12 Jul 2022 00:17:22 +0800 Subject: [PATCH] improvement WebView2 --- Directory.Packages.props | 2 +- SteamToolsV2+.sln | 33 +++++- .../Avalonia.WebView2.csproj | 22 ++++ src/Avalonia.WebView2/WebView2.cs | 23 ++++ .../Application/UI/App.WebView2.cs | 3 - .../Application/UI/Views/Controls/Rotator.cs | 6 +- .../Controls/UserControl/WebView2Compat.axaml | 28 +++++ .../UserControl/WebView2Compat.axaml.cs | 109 ++++++++++++++++++ .../UI/Views/Pages/DebugWebViewPage.axaml | 4 +- .../UI/Views/Pages/DebugWebViewPage.axaml.cs | 24 ++-- .../ST.Client.Avalonia.csproj | 15 +-- .../UI/Resx/AppResources.Designer.cs | 20 +++- src/ST.Client/UI/Resx/AppResources.en.resx | 2 +- src/ST.Client/UI/Resx/AppResources.es.resx | 2 +- src/ST.Client/UI/Resx/AppResources.it.resx | 2 +- src/ST.Client/UI/Resx/AppResources.ja.resx | 2 +- src/ST.Client/UI/Resx/AppResources.ko.resx | 2 +- src/ST.Client/UI/Resx/AppResources.resx | 11 +- src/ST.Client/UI/Resx/AppResources.ru.resx | 2 +- .../UI/Resx/AppResources.zh-Hant.resx | 2 +- 20 files changed, 270 insertions(+), 44 deletions(-) create mode 100644 src/Avalonia.WebView2/Avalonia.WebView2.csproj create mode 100644 src/Avalonia.WebView2/WebView2.cs create mode 100644 src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/UserControl/WebView2Compat.axaml create mode 100644 src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/UserControl/WebView2Compat.axaml.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 9f285025c59..5d750602700 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -254,7 +254,7 @@ - + diff --git a/SteamToolsV2+.sln b/SteamToolsV2+.sln index 7025c18ef32..5c1fd4d5e0d 100644 --- a/SteamToolsV2+.sln +++ b/SteamToolsV2+.sln @@ -223,6 +223,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.ReverseProxy.Yarp EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Windows.ScheduledTasks", "src\ST.Client.Windows.ScheduledTasks\ST.Client.Windows.ScheduledTasks.csproj", "{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.WebView2", "src\Avalonia.WebView2\Avalonia.WebView2.csproj", "{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -2625,6 +2627,34 @@ Global {0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x64.Build.0 = Release|Any CPU {0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x86.ActiveCfg = Release|Any CPU {0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x86.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM64.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhone.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x64.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x64.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x86.ActiveCfg = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x86.Build.0 = Debug|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|Any CPU.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM64.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM64.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhone.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhone.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x64.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x64.Build.0 = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x86.ActiveCfg = Release|Any CPU + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2713,9 +2743,10 @@ Global {92DEBBE5-FF82-4251-ABC6-75FF285E7149} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F} {D8ED7A17-D693-45FF-B75A-D9B12DAB5A42} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F} {0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81} = {E50441E8-75F3-406E-9921-30BFC211B5CE} + {8C996C50-B29F-4CB6-90A7-77C9CD3B0B70} = {910D6A0F-42AB-4B65-B532-852E864EC006} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9313F2B4-10DA-43AA-A481-CAA7571C740C} RESX_NeutralResourcesLanguage = zh-Hans + SolutionGuid = {9313F2B4-10DA-43AA-A481-CAA7571C740C} EndGlobalSection EndGlobal diff --git a/src/Avalonia.WebView2/Avalonia.WebView2.csproj b/src/Avalonia.WebView2/Avalonia.WebView2.csproj new file mode 100644 index 00000000000..1696c9c3f97 --- /dev/null +++ b/src/Avalonia.WebView2/Avalonia.WebView2.csproj @@ -0,0 +1,22 @@ + + + + net6.0 + true + false + $(MSBuildProjectDirectory)\..\..\avalonia.snk + + true + + + + + Properties + + + + + + + + diff --git a/src/Avalonia.WebView2/WebView2.cs b/src/Avalonia.WebView2/WebView2.cs new file mode 100644 index 00000000000..14c6164f52d --- /dev/null +++ b/src/Avalonia.WebView2/WebView2.cs @@ -0,0 +1,23 @@ +using System; +using WebView2BaseType = Avalonia.Controls.Shapes.Rectangle; + +namespace Avalonia.Controls; + +public partial class WebView2 : WebView2BaseType +{ + public static bool IsSupported { get; } + + public static readonly DirectProperty SourceProperty = + AvaloniaProperty.RegisterDirect( + nameof(Uri), + x => x.source, + (x, y) => x.Source = y); + + Uri? source; + + public Uri? Source + { + get => source; + set => SetAndRaise(SourceProperty, ref source, value); + } +} \ No newline at end of file diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/App.WebView2.cs b/src/ST.Client.Desktop.Avalonia/Application/UI/App.WebView2.cs index efa782466d2..2db6c79c53a 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/App.WebView2.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/App.WebView2.cs @@ -34,9 +34,6 @@ static string GetUserDataFolder() } } } - - // WebView2AutoInstaller - // https://github.com/ProKn1fe/WebView2.Runtime/blob/62011b09436944143996fdb0039cd2c5dbb5c300/WebView2.Runtime.AutoInstaller/WebView2.Runtime.AutoInstaller/WebView2AutoInstaller.cs } #endif diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/Rotator.cs b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/Rotator.cs index f8083af8b1f..968a26fe13e 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/Rotator.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/Rotator.cs @@ -33,7 +33,7 @@ public Rotator() // Prepare render loop task for use. _loopTask = new RenderLoopClock(); _loopTask.Subscribe( - delegate(TimeSpan renderTime) + renderTime => { var delta = renderTime - _prev; _rotateDegree += _speed * delta.TotalMilliseconds; @@ -54,8 +54,8 @@ public double Speed public static readonly DirectProperty SpeedProperty = AvaloniaProperty.RegisterDirect(nameof(Speed), - delegate(Rotator rotator) { return rotator._speed; }, - delegate(Rotator rotator, double v) + rotator => rotator._speed, + (Rotator rotator, double v) => { rotator._speed = v; OnSpeedChanged(rotator, v); diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/UserControl/WebView2Compat.axaml b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/UserControl/WebView2Compat.axaml new file mode 100644 index 00000000000..422e6c94c20 --- /dev/null +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/UserControl/WebView2Compat.axaml @@ -0,0 +1,28 @@ + + + + +