[Settings]Theme override fix and cleanup (#32362)

* theme override fix and cleanup

* test fix
This commit is contained in:
Davide Giacometti
2024-04-17 16:39:19 +02:00
committed by GitHub
parent fba5f6f002
commit b14aa8276d
9 changed files with 89 additions and 129 deletions

View 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;
}
}
}
}