From 5b2b272f7665993a03dc58264b513136008f9736 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 5 Jul 2025 13:35:02 +0800 Subject: [PATCH] Add ActualApplicationThemeChanged in MainViewModel --- Flow.Launcher.Plugin/EventHandler.cs | 20 +++++++++++++++++++- Flow.Launcher/ViewModel/MainViewModel.cs | 15 +++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Flow.Launcher.Plugin/EventHandler.cs b/Flow.Launcher.Plugin/EventHandler.cs index 893b0ba80..47ab24757 100644 --- a/Flow.Launcher.Plugin/EventHandler.cs +++ b/Flow.Launcher.Plugin/EventHandler.cs @@ -39,7 +39,14 @@ namespace Flow.Launcher.Plugin /// /// public delegate void VisibilityChangedEventHandler(object sender, VisibilityChangedEventArgs args); - + + /// + /// A delegate for when the actual application theme is changed + /// + /// + /// + public delegate void ActualApplicationThemeChangedEventHandler(object sender, ActualApplicationThemeChangedEventArgs args); + /// /// The event args for /// @@ -77,4 +84,15 @@ namespace Flow.Launcher.Plugin /// public Query Query { get; set; } } + + /// + /// The event args for + /// + public class ActualApplicationThemeChangedEventArgs : EventArgs + { + /// + /// if the application has changed actual theme + /// + public bool IsDark { get; init; } + } } diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 64a39fa62..49f7ea6c5 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -22,6 +22,7 @@ using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Storage; using Microsoft.VisualStudio.Threading; +using ModernWpf; namespace Flow.Launcher.ViewModel { @@ -195,6 +196,18 @@ namespace Flow.Launcher.ViewModel RegisterViewUpdate(); _ = RegisterClockAndDateUpdateAsync(); + + ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; + } + + private void ThemeManager_ActualApplicationThemeChanged(ThemeManager sender, object args) + { + ActualApplicationThemeChanged?.Invoke( + Application.Current, + new ActualApplicationThemeChangedEventArgs() + { + IsDark = sender.ActualApplicationTheme == ApplicationTheme.Dark + }); } private void RegisterViewUpdate() @@ -821,6 +834,7 @@ namespace Flow.Launcher.ViewModel public bool MainWindowVisibilityStatus { get; set; } = true; public event VisibilityChangedEventHandler VisibilityChanged; + public event ActualApplicationThemeChangedEventHandler ActualApplicationThemeChanged; public Visibility ClockPanelVisibility { get; set; } public Visibility SearchIconVisibility { get; set; } @@ -1975,6 +1989,7 @@ namespace Flow.Launcher.ViewModel { _resultsViewUpdateTask.Dispose(); } + ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; _disposed = true; } }