From 775ca499faaa96ed480afc25c29f1e8d22942fc7 Mon Sep 17 00:00:00 2001 From: Aigio Liu Date: Mon, 22 May 2023 19:06:45 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=20fix=20Settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BD.WTTS.Client.Avalonia.App/Program.cs | 8 +- .../Converters/NameToFontFamilyConverter.cs | 28 +- .../UI/App.TrayIcon.cs | 2 +- src/BD.WTTS.Client.Avalonia/UI/App.axaml.cs | 14 +- .../UI/Styling/Window.axaml | 502 ++++++------ .../Abstractions/Windows/ReactiveAppWindow.cs | 2 +- .../Pages/Settings/Settings_General.axaml | 256 ++++--- .../UI/Views/Pages/Settings/Settings_UI.axaml | 725 ++++++++++-------- .../Net/HostsFileServiceImpl.cs | 2 +- .../Steam/SteamServiceImpl2.cs | 15 +- .../Mvvm/Advertisement/AdvertiseService.cs | 4 +- .../Settings/O_GeneralSettings.cs | 124 --- src/BD.WTTS.Client/Settings/O_UISettings.cs | 166 ---- src/BD.WTTS.Client/Settings/UISettings.cs | 2 +- .../Startup/Startup.OnStartup.cs | 2 +- .../ViewModels/Pages/SettingsPageViewModel.cs | 6 +- src/BD.WTTS.Client/UI/Widgets/MessageBox.cs | 12 +- 17 files changed, 868 insertions(+), 1002 deletions(-) delete mode 100644 src/BD.WTTS.Client/Settings/O_GeneralSettings.cs delete mode 100644 src/BD.WTTS.Client/Settings/O_UISettings.cs diff --git a/src/BD.WTTS.Client.Avalonia.App/Program.cs b/src/BD.WTTS.Client.Avalonia.App/Program.cs index 9b8658c78..8f2af6566 100644 --- a/src/BD.WTTS.Client.Avalonia.App/Program.cs +++ b/src/BD.WTTS.Client.Avalonia.App/Program.cs @@ -1,6 +1,4 @@ // ReSharper disable once CheckNamespace -using BD.Common.UI.Helpers; - namespace BD.WTTS; [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] @@ -40,7 +38,7 @@ partial class Program [MethodImpl(MethodImplOptions.NoInlining)] public static AppBuilder BuildAvaloniaApp() { - UIFrameworkHelper.Init(isAvaloniaUI: true); + Common.UI.Helpers.UIFrameworkHelper.Init(isAvaloniaUI: true); if (instance == null) { @@ -89,7 +87,7 @@ partial class Program }, }); - var useGpu = !IApplication.DisableGPU && GeneralSettings.UseGPURendering.Value; + var useGpu = !IApplication.DisableGPU && GeneralSettings.GPU.Value; #if MACOS builder.With(new AvaloniaNativePlatformOptions { @@ -104,7 +102,7 @@ partial class Program EnableIme = true, }); #elif WINDOWS - var useWgl = IApplication.UseWgl || GeneralSettings.UseWgl.Value; + var useWgl = IApplication.UseWgl || GeneralSettings.NativeOpenGL.Value; var options = new Win32PlatformOptions { UseWgl = useWgl, diff --git a/src/BD.WTTS.Client.Avalonia/Converters/NameToFontFamilyConverter.cs b/src/BD.WTTS.Client.Avalonia/Converters/NameToFontFamilyConverter.cs index c488f70bd..c73ded391 100644 --- a/src/BD.WTTS.Client.Avalonia/Converters/NameToFontFamilyConverter.cs +++ b/src/BD.WTTS.Client.Avalonia/Converters/NameToFontFamilyConverter.cs @@ -2,6 +2,23 @@ namespace BD.WTTS.Converters; public sealed class NameToFontFamilyConverter : IValueConverter { + static FontFamily GetDefault() + { + try + { + var fontFamily = IPlatformService.Instance.GetDefaultFontFamily(); + return FontFamily.Parse(fontFamily); + } + catch + { + } + return FontFamily.Default; + } + + static readonly Lazy _FontFamily = new(GetDefault); + + public static FontFamily DefaultFontFamily => _FontFamily.Value; + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is string s) @@ -10,9 +27,16 @@ public sealed class NameToFontFamilyConverter : IValueConverter // return AvaloniaFontManagerImpl.Default; //if (s.Equals(IFontManager.KEY_DefaultConsole, StringComparison.OrdinalIgnoreCase)) // return AvaloniaFontManagerImpl.DefaultConsole; - return FontFamily.Parse(s); + try + { + return FontFamily.Parse(s); + } + catch + { + + } } - return null; + return DefaultFontFamily; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) diff --git a/src/BD.WTTS.Client.Avalonia/UI/App.TrayIcon.cs b/src/BD.WTTS.Client.Avalonia/UI/App.TrayIcon.cs index bfe375de0..e51ca80f6 100644 --- a/src/BD.WTTS.Client.Avalonia/UI/App.TrayIcon.cs +++ b/src/BD.WTTS.Client.Avalonia/UI/App.TrayIcon.cs @@ -20,7 +20,7 @@ partial class App var s = Startup.Instance; if (s.IsMainProcess) { - s.HasTrayIcon = GeneralSettings.IsEnableTrayIcon.Value; + s.HasTrayIcon = GeneralSettings.TrayIcon.Value; if (s.HasTrayIcon) { TrayIcon.SetIcons(this, TrayIcons); diff --git a/src/BD.WTTS.Client.Avalonia/UI/App.axaml.cs b/src/BD.WTTS.Client.Avalonia/UI/App.axaml.cs index ae14f354f..75d84d623 100644 --- a/src/BD.WTTS.Client.Avalonia/UI/App.axaml.cs +++ b/src/BD.WTTS.Client.Avalonia/UI/App.axaml.cs @@ -55,8 +55,8 @@ public sealed partial class App : Application { desktop.MainWindow = MainWindow ??= new MainWindow(); } - SetThemeNotChangeValue((AppTheme)UISettings.Theme.Value); - SetThemeAccent(UISettings.GetUserThemeAccent.Value ? bool.TrueString : UISettings.ThemeAccent.Value); + SetThemeNotChangeValue(UISettings.Theme.Value); + SetThemeAccent(UISettings.UseSystemThemeAccent.Value ? bool.TrueString : UISettings.ThemeAccent.Value); base.OnFrameworkInitializationCompleted(); } @@ -85,7 +85,7 @@ public sealed partial class App : Application /// 设置当前打开窗口的 AvaloniaWindow 背景透明材质 /// /// - public void SetAllWindowransparencyMateria(int level) + public void SetAllWindowransparencyMateria(WindowBackgroundMaterial level) { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { @@ -121,14 +121,14 @@ public sealed partial class App : Application public void InitSettingSubscribe() { - GeneralSettings.IsEnableTrayIcon.Subscribe(x => InitTrayIcon()); + GeneralSettings.TrayIcon.Subscribe(x => InitTrayIcon()); UISettings.ThemeAccent.Subscribe(SetThemeAccent); - UISettings.GetUserThemeAccent.Subscribe(x => + UISettings.UseSystemThemeAccent.Subscribe(x => SetThemeAccent(x ? bool.TrueString : UISettings.ThemeAccent.Value)); - GeneralSettings.WindowsStartupAutoRun.Subscribe(IApplication.SetBootAutoStart); + GeneralSettings.AutoRunOnStartup.Subscribe(IApplication.SetBootAutoStart); - UISettings.WindowBackgroundMateria.Subscribe(SetAllWindowransparencyMateria, false); + UISettings.WindowBackgroundMaterial.Subscribe(SetAllWindowransparencyMateria, false); //#if WINDOWS // UISettings.EnableDesktopBackground.Subscribe(x => diff --git a/src/BD.WTTS.Client.Avalonia/UI/Styling/Window.axaml b/src/BD.WTTS.Client.Avalonia/UI/Styling/Window.axaml index 55cf43bec..5aa317fad 100644 --- a/src/BD.WTTS.Client.Avalonia/UI/Styling/Window.axaml +++ b/src/BD.WTTS.Client.Avalonia/UI/Styling/Window.axaml @@ -1,284 +1,306 @@ - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - - - - -