From 26bd227545b0fbf838f48ae8b3aebd2105922111 Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Wed, 14 Jun 2023 22:19:12 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=BE=20Feat(MainWindow):=20More=20info?= =?UTF-8?q?=20in=20tray=20icon=20tip=20text.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ViewModels/MainWindowViewModel.cs | 51 +++++++++++++++++++++++++++++-- Views/MainWindow.axaml | 2 +- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/ViewModels/MainWindowViewModel.cs b/ViewModels/MainWindowViewModel.cs index baed8615..f23f26d8 100644 --- a/ViewModels/MainWindowViewModel.cs +++ b/ViewModels/MainWindowViewModel.cs @@ -1,19 +1,26 @@ -using Avalonia.Controls; +using Avalonia; +using Avalonia.Controls; using KitX_Dashboard.Data; using KitX_Dashboard.Managers; using KitX_Dashboard.Services; using KitX_Dashboard.Views; using ReactiveUI; +using System.ComponentModel; using System.Reactive; +using System.Reflection; +using System.Text; namespace KitX_Dashboard.ViewModels; -internal class MainWindowViewModel : ViewModelBase +internal class MainWindowViewModel : ViewModelBase, INotifyPropertyChanged { + public new event PropertyChangedEventHandler? PropertyChanged; public MainWindowViewModel() { InitCommands(); + + InitEvents(); } internal void InitCommands() @@ -53,6 +60,46 @@ internal void InitCommands() }); } + private void InitEvents() + { + Program.DeviceCards.CollectionChanged += (_, _) => + { + PropertyChanged?.Invoke(this, new(nameof(TrayIconText))); + }; + } + + internal static string TrayIconText + { + get + { + var sb = new StringBuilder(); + + sb.AppendLine( + FetchStringFromResource(Application.Current, "Text_MainWindow_Title") ?? "KitX" + ); + + sb.AppendLine($"v{Assembly.GetEntryAssembly()?.GetName().Version}"); + + sb.AppendLine(); + + sb.AppendLine( + $"{Program.DeviceCards.Count} " + + $"{FetchStringFromResource(Application.Current, "Text_Device_Tip_Detected")}" + ); + + sb.AppendLine( + $"{Program.PluginCards.Count} " + + $"{FetchStringFromResource(Application.Current, "Text_Lib_Tip_Connected")}" + ); + + sb.AppendLine(); + + sb.Append("Hello, World!"); + + return sb.ToString(); + } + } + internal ReactiveCommand? TrayIconClickedCommand { get; set; } internal ReactiveCommand? ExitCommand { get; set; } diff --git a/Views/MainWindow.axaml b/Views/MainWindow.axaml index b5f157e6..2f32efe3 100644 --- a/Views/MainWindow.axaml +++ b/Views/MainWindow.axaml @@ -42,7 +42,7 @@ CommandParameter="{DynamicResource MainWindow}" Icon="resm:KitX_Dashboard.Assets.KitX-Icon-256x256.ico" IsVisible="True" - ToolTipText="{DynamicResource Text_MainWindow_Title}"> + ToolTipText="{Binding TrayIconText}">