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}">