From 6aefca2e0ee8a04884b54dca7223f7f2a0941c79 Mon Sep 17 00:00:00 2001 From: DB p Date: Tue, 23 Nov 2021 15:44:26 +0900 Subject: [PATCH] Remove OS theme detection code Add some string change enum location --- .../UserSettings/Settings.cs | 9 ++- Flow.Launcher/Flow.Launcher.csproj | 1 - Flow.Launcher/Helper/SystemTheme.cs | 76 ------------------- Flow.Launcher/Languages/en.xaml | 3 +- Flow.Launcher/SettingWindow.xaml | 9 ++- Flow.Launcher/SettingWindow.xaml.cs | 1 - .../ViewModel/SettingWindowViewModel.cs | 23 +++--- 7 files changed, 30 insertions(+), 92 deletions(-) delete mode 100644 Flow.Launcher/Helper/SystemTheme.cs diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index 04d5bdca9..9e98d70e0 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -15,7 +15,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings private string language = "en"; public string Hotkey { get; set; } = $"{KeyConstant.Alt} + {KeyConstant.Space}"; public string OpenResultModifiers { get; set; } = KeyConstant.Alt; - public string DarkMode { get; set; } + public string DarkMode { get; set; } = "System"; public bool ShowOpenResultHotkey { get; set; } = true; public double WindowSize { get; set; } = 580; @@ -164,4 +164,11 @@ namespace Flow.Launcher.Infrastructure.UserSettings Empty, Preserved } + + public enum DarkMode + { + System, + Light, + Dark + } } \ No newline at end of file diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index b0560fbce..fd2f5f1d9 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -96,7 +96,6 @@ - diff --git a/Flow.Launcher/Helper/SystemTheme.cs b/Flow.Launcher/Helper/SystemTheme.cs deleted file mode 100644 index 3a05c3149..000000000 --- a/Flow.Launcher/Helper/SystemTheme.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Diagnostics; -using System.Management; -using System.Security.Principal; - -namespace Flow.Launcher.Helper -{ - class SystemTheme - { - - private const string PersonalizeKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; - private const string SysThemeValueName = "SystemUsesLightTheme"; - - public static event EventHandler SystemThemeChanged; - - public static bool GetIsSystemLightTheme() => ReadDWord(SysThemeValueName); - - private static bool ReadDWord(string valueName) - { - var regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(PersonalizeKey); - if (regkey == null) - { - return false; - } - - return (int)regkey.GetValue(valueName, 0) > 0; - } - - public static void Initialize() - { - UpdateTheme(); - try - { - var currentUser = WindowsIdentity.GetCurrent(); - var query = new WqlEventQuery(string.Format("SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='{0}\\\\{1}' AND ValueName='{2}'", - currentUser.User.Value, PersonalizeKey.Replace("\\", "\\\\"), SysThemeValueName)); - - ManagementEventWatcher watcher = new(query); - - watcher.EventArrived += new EventArrivedEventHandler(HandleEvent); - - watcher.Start(); - } - catch (ManagementException managementException) - { - Debug.WriteLine($"{nameof(SystemTheme)}: " + managementException.Message); - } - } - - private static void HandleEvent(object sender, EventArrivedEventArgs e) - { - UpdateTheme(); - } - - private static void UpdateTheme() - { - bool isSystemLightTheme = GetIsSystemLightTheme(); - var args = new SystemThemeChangedEventArgs(isSystemLightTheme); - SystemThemeChanged?.Invoke(null, args); - } - } - - public class SystemThemeChangedEventArgs : EventArgs - { - public SystemThemeChangedEventArgs(bool isSystemLightTheme) - { - IsSystemLightTheme = isSystemLightTheme; - } - - public bool IsSystemLightTheme { get; private set; } - } -} diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index fe1c5dd91..e2bcbd98c 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -84,7 +84,8 @@ Theme Folder Open Theme Folder Dark Mode - System Default + System settings will take effect from the next run. + System Default Light Dark diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index 1c8bda508..1524a2940 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -1866,15 +1866,18 @@ +  diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index 323847453..f1e7bdaa7 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -322,7 +322,6 @@ namespace Flow.Launcher { ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark; } - } /* Custom TitleBar */ diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index a7ac164f4..e09bbe04b 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -317,20 +317,25 @@ namespace Flow.Launcher.ViewModel } } - enum DarkModes + public class DarkMode { - System, - Light, - Dark + public string Display { get; set; } + public Infrastructure.UserSettings.DarkMode Value { get; set; } } - public List DarkMode + public List DarkModes { get { - var darkModeStrings = new List(); - var enumList = Enum.GetValues(typeof(DarkModes)).Cast().ToList(); - enumList.ForEach(x => darkModeStrings.Add(x.ToString())); - return darkModeStrings; + List modes = new List(); + var enums = (Infrastructure.UserSettings.DarkMode[])Enum.GetValues(typeof(Infrastructure.UserSettings.DarkMode)); + foreach (var e in enums) + { + var key = $"DarkMode{e}"; + var display = _translater.GetTranslation(key); + var m = new DarkMode { Display = display, Value = e, }; + modes.Add(m); + } + return modes; } }