From e081b136f8e54dfaa7e53b795d69feb2467d7685 Mon Sep 17 00:00:00 2001 From: rmbgame Date: Mon, 1 Mar 2021 02:08:14 +0800 Subject: [PATCH] ui push --- .../App.axaml | 25 +++--- .../App.axaml.cs | 32 +++++++- .../Views/MainWindow.axaml | 3 +- .../Application/UI/Controls/CardView.axaml | 4 +- .../Application/UI/MainView.axaml | 60 ++++++++++++++ .../UI/{Windows => }/MainView.axaml.cs | 0 .../{GameList.axaml => GameListPage.axaml} | 4 +- ...ameList.axaml.cs => GameListPage.axaml.cs} | 4 +- .../Application/UI/Pages/SettingsPage.axaml | 50 ++++++----- .../UI/Pages/SettingsPage.axaml.cs | 1 + .../UI/Pages/SteamAccountPage.axaml | 17 ++++ .../UI/Pages/SteamAccountPage.axaml.cs | 19 +++++ .../Application/UI/Styles/Controls.xaml | 9 ++ .../Application/UI/Styles/Theme.Dark.xaml | 18 ++++ .../Application/UI/Styles/Theme.Light.xaml | 82 +++++++++++++++++++ .../Application/UI/Windows/LoginWindow.axaml | 11 +++ .../UI/Windows/LoginWindow.axaml.cs | 22 +++++ .../Application/UI/Windows/MainView.axaml | 60 -------------- ....SteamTools.Client.Desktop.Avalonia.csproj | 27 ++++++ ...plication.SteamTools.Client.Desktop.csproj | 1 + .../UI/ViewModels/{ => Base}/ViewModelBase.cs | 0 .../ViewModels/{ => Base}/WindowViewModel.cs | 0 22 files changed, 343 insertions(+), 106 deletions(-) create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/MainView.axaml rename System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/{Windows => }/MainView.axaml.cs (100%) rename System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Pages/{GameList.axaml => GameListPage.axaml} (93%) rename System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Pages/{GameList.axaml.cs => GameListPage.axaml.cs} (80%) create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Pages/SteamAccountPage.axaml create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Pages/SteamAccountPage.axaml.cs create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Controls.xaml create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Theme.Dark.xaml create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Theme.Light.xaml create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml.cs delete mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/MainView.axaml rename System.Application.SteamTools.Client.Desktop/UI/ViewModels/{ => Base}/ViewModelBase.cs (100%) rename System.Application.SteamTools.Client.Desktop/UI/ViewModels/{ => Base}/WindowViewModel.cs (100%) diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml b/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml index cdf127362..941225dcb 100644 --- a/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml +++ b/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml @@ -2,18 +2,15 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ui="clr-namespace:System.Application.UI" x:Class="System.Application.UI.App"> - - - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml.cs b/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml.cs index cddfc6d78..8fa492ba5 100644 --- a/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml.cs +++ b/System.Application.SteamTools.Client.Desktop.Avalonia.App/App.axaml.cs @@ -14,6 +14,8 @@ using AvaloniaApplication = Avalonia.Application; using ShutdownMode = Avalonia.Controls.ShutdownMode; using Window = Avalonia.Controls.Window; using WindowState = Avalonia.Controls.WindowState; +using Avalonia.Themes.Fluent; + #if WINDOWS using System.Windows.Shell; using WpfApplication = System.Windows.Application; @@ -26,7 +28,6 @@ namespace System.Application.UI public partial class App : AvaloniaApplication, IDisposableHolder { public static App Instance => Current is App app ? app : throw new Exception("Impossible"); - [Obsolete("use IOPath.AppDataDirectory", true)] public DirectoryInfo LocalAppData => new DirectoryInfo(IOPath.AppDataDirectory); @@ -35,10 +36,11 @@ namespace System.Application.UI [Obsolete("use AppHelper.ProgramName", true)] public string ProgramName => AppHelper.ProgramName; + public FluentTheme? fluentTheme; + public override void Initialize() { AvaloniaXamlLoader.Load(this); - MainWindow = new MainWindow { DataContext = new MainWindowViewModel(), @@ -59,7 +61,6 @@ namespace System.Application.UI // 在UI预览中,ApplicationLifetime 为 null ViewModelBase.IsInDesignMode = ApplicationLifetime == null; Startup.Init(); - if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { #if MAC @@ -92,6 +93,22 @@ namespace System.Application.UI NotifyIconContextMenu = new ContextMenu(); var menuItems = new List { + new MenuItem() + { + Header = "Light", + Command = ReactiveCommand.Create(()=>{ + if(fluentTheme is not null) + fluentTheme.Mode= FluentThemeMode.Light; + }) + }, + new MenuItem() + { + Header = "Dark", + Command = ReactiveCommand.Create(()=>{ + if(fluentTheme is not null) + fluentTheme.Mode= FluentThemeMode.Dark; + }) + }, new MenuItem() { Header = "NotifyIconContextMenuItemHeaderRestore", @@ -115,6 +132,14 @@ namespace System.Application.UI #endregion + foreach (var style in App.Current.Styles) + { + if (style is FluentTheme fluent) + { + fluentTheme = fluent; + } + } + #if WINDOWS AddJumpTask(); #endif @@ -149,6 +174,7 @@ namespace System.Application.UI public Window? MainWindow { get; set; } + /// /// Restores the app's main window by setting its WindowState to /// WindowState.Normal and showing the window. diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia.App/Views/MainWindow.axaml b/System.Application.SteamTools.Client.Desktop.Avalonia.App/Views/MainWindow.axaml index f5e33b2d0..b375296cb 100644 --- a/System.Application.SteamTools.Client.Desktop.Avalonia.App/Views/MainWindow.axaml +++ b/System.Application.SteamTools.Client.Desktop.Avalonia.App/Views/MainWindow.axaml @@ -7,7 +7,8 @@ d:DesignWidth="1200" Width="1400" MinWidth="800" d:DesignHeight="600" Height="800" MinHeight="600" xmlns:pages="clr-namespace:System.Application.UI.Pages;assembly=System.Application.SteamTools.Client.Desktop.Avalonia" - xmlns:local="clr-namespace:System.Application.UI.Views;assembly=System.Application.SteamTools.Client.Desktop.Avalonia" + xmlns:local="clr-namespace:System.Application.UI.Views;assembly=System.Application.SteamTools.Client.Desktop.Avalonia" + xmlns:manager="clr-namespace:Avalonia.ThemeManager;assembly=Avalonia.ThemeManager" x:Class="System.Application.UI.Views.MainWindow" x:Name="MainWindow" WindowStartupLocation="CenterScreen" diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Controls/CardView.axaml b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Controls/CardView.axaml index 2841c9b62..b6fb0a249 100644 --- a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Controls/CardView.axaml +++ b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Controls/CardView.axaml @@ -10,7 +10,7 @@ + diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Theme.Light.xaml b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Theme.Light.xaml new file mode 100644 index 000000000..8db5b2e55 --- /dev/null +++ b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Styles/Theme.Light.xaml @@ -0,0 +1,82 @@ + \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml new file mode 100644 index 000000000..1db498350 --- /dev/null +++ b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml @@ -0,0 +1,11 @@ + + + + diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml.cs b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml.cs new file mode 100644 index 000000000..13e3f4775 --- /dev/null +++ b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/LoginWindow.axaml.cs @@ -0,0 +1,22 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace System.Application.UI.Windows +{ + public class LoginWindow : Window + { + public LoginWindow() + { + InitializeComponent(); +#if DEBUG + this.AttachDevTools(); +#endif + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/MainView.axaml b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/MainView.axaml deleted file mode 100644 index 97f707fdc..000000000 --- a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Windows/MainView.axaml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/System.Application.SteamTools.Client.Desktop.Avalonia.csproj b/System.Application.SteamTools.Client.Desktop.Avalonia/System.Application.SteamTools.Client.Desktop.Avalonia.csproj index 7f6724ed6..f118b97c9 100644 --- a/System.Application.SteamTools.Client.Desktop.Avalonia/System.Application.SteamTools.Client.Desktop.Avalonia.csproj +++ b/System.Application.SteamTools.Client.Desktop.Avalonia/System.Application.SteamTools.Client.Desktop.Avalonia.csproj @@ -18,6 +18,12 @@ + + + + + + Properties\AssemblyInfo.cs @@ -41,4 +47,25 @@ + + + + MSBuild:Compile + + + MSBuild:Compile + + + MSBuild:Compile + + + + + + GameListPage.axaml + + + SteamAccountPage.axaml + + \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop/System.Application.SteamTools.Client.Desktop.csproj b/System.Application.SteamTools.Client.Desktop/System.Application.SteamTools.Client.Desktop.csproj index 886b55758..08942f4ba 100644 --- a/System.Application.SteamTools.Client.Desktop/System.Application.SteamTools.Client.Desktop.csproj +++ b/System.Application.SteamTools.Client.Desktop/System.Application.SteamTools.Client.Desktop.csproj @@ -69,5 +69,6 @@ + \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop/UI/ViewModels/ViewModelBase.cs b/System.Application.SteamTools.Client.Desktop/UI/ViewModels/Base/ViewModelBase.cs similarity index 100% rename from System.Application.SteamTools.Client.Desktop/UI/ViewModels/ViewModelBase.cs rename to System.Application.SteamTools.Client.Desktop/UI/ViewModels/Base/ViewModelBase.cs diff --git a/System.Application.SteamTools.Client.Desktop/UI/ViewModels/WindowViewModel.cs b/System.Application.SteamTools.Client.Desktop/UI/ViewModels/Base/WindowViewModel.cs similarity index 100% rename from System.Application.SteamTools.Client.Desktop/UI/ViewModels/WindowViewModel.cs rename to System.Application.SteamTools.Client.Desktop/UI/ViewModels/Base/WindowViewModel.cs