Skip to content

Commit 5b2b272

Browse files
committed
Add ActualApplicationThemeChanged in MainViewModel
1 parent b440aaa commit 5b2b272

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

Flow.Launcher.Plugin/EventHandler.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,14 @@ namespace Flow.Launcher.Plugin
3939
/// <param name="sender"></param>
4040
/// <param name="args"></param>
4141
public delegate void VisibilityChangedEventHandler(object sender, VisibilityChangedEventArgs args);
42-
42+
43+
/// <summary>
44+
/// A delegate for when the actual application theme is changed
45+
/// </summary>
46+
/// <param name="sender"></param>
47+
/// <param name="args"></param>
48+
public delegate void ActualApplicationThemeChangedEventHandler(object sender, ActualApplicationThemeChangedEventArgs args);
49+
4350
/// <summary>
4451
/// The event args for <see cref="VisibilityChangedEventHandler"/>
4552
/// </summary>
@@ -77,4 +84,15 @@ public class FlowLauncherQueryEventArgs
7784
/// </summary>
7885
public Query Query { get; set; }
7986
}
87+
88+
/// <summary>
89+
/// The event args for <see cref="ActualApplicationThemeChangedEventHandler"/>
90+
/// </summary>
91+
public class ActualApplicationThemeChangedEventArgs : EventArgs
92+
{
93+
/// <summary>
94+
/// <see langword="true"/> if the application has changed actual theme
95+
/// </summary>
96+
public bool IsDark { get; init; }
97+
}
8098
}

Flow.Launcher/ViewModel/MainViewModel.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using Flow.Launcher.Plugin.SharedCommands;
2323
using Flow.Launcher.Storage;
2424
using Microsoft.VisualStudio.Threading;
25+
using ModernWpf;
2526

2627
namespace Flow.Launcher.ViewModel
2728
{
@@ -195,6 +196,18 @@ public MainViewModel()
195196

196197
RegisterViewUpdate();
197198
_ = RegisterClockAndDateUpdateAsync();
199+
200+
ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged;
201+
}
202+
203+
private void ThemeManager_ActualApplicationThemeChanged(ThemeManager sender, object args)
204+
{
205+
ActualApplicationThemeChanged?.Invoke(
206+
Application.Current,
207+
new ActualApplicationThemeChangedEventArgs()
208+
{
209+
IsDark = sender.ActualApplicationTheme == ApplicationTheme.Dark
210+
});
198211
}
199212

200213
private void RegisterViewUpdate()
@@ -821,6 +834,7 @@ private ResultsViewModel SelectedResults
821834
public bool MainWindowVisibilityStatus { get; set; } = true;
822835

823836
public event VisibilityChangedEventHandler VisibilityChanged;
837+
public event ActualApplicationThemeChangedEventHandler ActualApplicationThemeChanged;
824838

825839
public Visibility ClockPanelVisibility { get; set; }
826840
public Visibility SearchIconVisibility { get; set; }
@@ -1975,6 +1989,7 @@ protected virtual void Dispose(bool disposing)
19751989
{
19761990
_resultsViewUpdateTask.Dispose();
19771991
}
1992+
ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged;
19781993
_disposed = true;
19791994
}
19801995
}

0 commit comments

Comments
 (0)