mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 02:36:19 +02:00
[Settings]Theme override fix and cleanup (#32362)
* theme override fix and cleanup * test fix
This commit is contained in:
committed by
GitHub
parent
fba5f6f002
commit
b14aa8276d
48
src/settings-ui/Settings.UI/Services/ThemeService.cs
Normal file
48
src/settings-ui/Settings.UI/Services/ThemeService.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using Microsoft.PowerToys.Settings.UI.Library;
|
||||
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
|
||||
using Microsoft.UI.Xaml;
|
||||
|
||||
namespace Microsoft.PowerToys.Settings.UI.Services
|
||||
{
|
||||
public class ThemeService
|
||||
{
|
||||
private readonly ISettingsRepository<GeneralSettings> _generalSettingsRepository;
|
||||
|
||||
public event EventHandler<ElementTheme> ThemeChanged;
|
||||
|
||||
public ElementTheme Theme { get; private set; } = ElementTheme.Default;
|
||||
|
||||
public ThemeService(ISettingsRepository<GeneralSettings> generalSettingsRepository)
|
||||
{
|
||||
_generalSettingsRepository = generalSettingsRepository;
|
||||
Theme = GetTheme();
|
||||
}
|
||||
|
||||
public void ApplyTheme()
|
||||
{
|
||||
Theme = GetTheme();
|
||||
ThemeChanged?.Invoke(null, Theme);
|
||||
}
|
||||
|
||||
private ElementTheme GetTheme()
|
||||
{
|
||||
switch (_generalSettingsRepository.SettingsConfig.Theme.ToUpperInvariant())
|
||||
{
|
||||
case "LIGHT":
|
||||
return ElementTheme.Light;
|
||||
case "DARK":
|
||||
return ElementTheme.Dark;
|
||||
case "SYSTEM":
|
||||
return ElementTheme.Default;
|
||||
default:
|
||||
ManagedCommon.Logger.LogError($"Unexpected theme name: {_generalSettingsRepository.SettingsConfig.Theme}");
|
||||
return ElementTheme.Default;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user