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