mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Remove OS theme detection code
Add some string change enum location
This commit is contained in:
parent
92ee7638d8
commit
6aefca2e0e
7 changed files with 30 additions and 92 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -96,7 +96,6 @@
|
|||
</PackageReference>
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="3.4.0" />
|
||||
<PackageReference Include="SharpVectors" Version="1.7.6" />
|
||||
<PackageReference Include="System.Management" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -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<SystemThemeChangedEventArgs> 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; }
|
||||
}
|
||||
}
|
||||
|
|
@ -84,7 +84,8 @@
|
|||
<system:String x:Key="ThemeFolder">Theme Folder</system:String>
|
||||
<system:String x:Key="OpenThemeFolder">Open Theme Folder</system:String>
|
||||
<system:String x:Key="DarkMode">Dark Mode</system:String>
|
||||
<system:String x:Key="DarkModeDefault">System Default</system:String>
|
||||
<system:String x:Key="DarkModeTip">System settings will take effect from the next run.</system:String>
|
||||
<system:String x:Key="DarkModeSystem">System Default</system:String>
|
||||
<system:String x:Key="DarkModeLight">Light</system:String>
|
||||
<system:String x:Key="DarkModeDark">Dark</system:String>
|
||||
|
||||
|
|
|
|||
|
|
@ -1866,15 +1866,18 @@
|
|||
<ItemsControl Style="{StaticResource SettingGrid}">
|
||||
<StackPanel Style="{StaticResource TextPanel}">
|
||||
<TextBlock Style="{DynamicResource SettingTitleLabel}" Text="{DynamicResource DarkMode}" />
|
||||
<TextBlock Style="{DynamicResource SettingSubTitleLabel}" Text="{DynamicResource DarkModeTip}" />
|
||||
</StackPanel>
|
||||
<ComboBox
|
||||
x:Name="DarkModeComboBox"
|
||||
Grid.Column="2"
|
||||
Width="120"
|
||||
Width="180"
|
||||
Margin="0,0,18,0"
|
||||
DisplayMemberPath="Display"
|
||||
FontSize="14"
|
||||
ItemsSource="{Binding DarkMode}"
|
||||
SelectedItem="{Binding Settings.DarkMode}"
|
||||
ItemsSource="{Binding DarkModes}"
|
||||
SelectedValue="{Binding Settings.DarkMode}"
|
||||
SelectedValuePath="Value"
|
||||
SelectionChanged="DarkModeSelectedIndexChanged" />
|
||||
<TextBlock Style="{StaticResource Glyph}">
|
||||

|
||||
|
|
|
|||
|
|
@ -322,7 +322,6 @@ namespace Flow.Launcher
|
|||
{
|
||||
ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Custom TitleBar */
|
||||
|
|
|
|||
|
|
@ -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<string> DarkMode
|
||||
public List<DarkMode> DarkModes
|
||||
{
|
||||
get
|
||||
{
|
||||
var darkModeStrings = new List<string>();
|
||||
var enumList = Enum.GetValues(typeof(DarkModes)).Cast<DarkModes>().ToList();
|
||||
enumList.ForEach(x => darkModeStrings.Add(x.ToString()));
|
||||
return darkModeStrings;
|
||||
List<DarkMode> modes = new List<DarkMode>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue