Files
PowerToys/src/settings-ui/Settings.UI/Services/ThemeService.cs
Jeremy Sinclair 195c6f588a [Analyzers] Resolve Stylecop SA1516 violations and others to enable fully building on VS 17.12 (#35248)
* [Analyzers][Settings] Fix SA1516

* [Analyzers][Workspaces] Fix SA1516

* [Analyzers][Awake] Fix SA1516

* [Analyzers][Wox] Fix SA1516

* [MWB] Disable CA1716 warning on class name

* [Wox] Update ExecuteFilePath property visibility for Json Source Generator

* [Analyzers][MWB] Fix CA1716 on NativeMethods.

---------

Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
2024-10-17 05:14:57 -04:00

50 lines
1.6 KiB
C#

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