add ThemeHelper

This commit is contained in:
Pilzinsel64
2024-08-28 11:12:52 +02:00
parent 95fa96228d
commit dac2fa74c1
2 changed files with 39 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
namespace Pilz.UI.Telerik.Theming;
public enum ApplicationTheme
{
Auto,
Light,
Dark,
Gray,
}

View File

@@ -0,0 +1,30 @@
using Telerik.WinControls;
namespace Pilz.UI.Telerik.Theming;
public static class ThemeHelper
{
public static void ApplyApplicationTheme(ApplicationTheme theme, Func<RadThemeComponentBase> getLightTheme, Func<RadThemeComponentBase> getDarkTheme)
{
ApplyApplicationTheme(theme, getLightTheme, getDarkTheme, getDarkTheme);
}
public static void ApplyApplicationTheme(ApplicationTheme theme, Func<RadThemeComponentBase> getLightTheme, Func<RadThemeComponentBase> getDarkTheme, Func<RadThemeComponentBase> getGrayTheme)
{
ThemeResolutionService.ApplicationThemeName = GetThemeName(theme, getLightTheme, getDarkTheme, getGrayTheme).ThemeName;
}
public static RadThemeComponentBase GetThemeName(ApplicationTheme theme, Func<RadThemeComponentBase> getLightTheme, Func<RadThemeComponentBase> getDarkTheme, Func<RadThemeComponentBase> getGrayTheme)
{
RadThemeComponentBase? themeToUse;
if (theme == ApplicationTheme.Light || theme == ApplicationTheme.Auto && WindowsSettings.AppsUseLightTheme)
themeToUse = getLightTheme();
else if (theme == ApplicationTheme.Dark || theme == ApplicationTheme.Auto && !WindowsSettings.AppsUseLightTheme)
themeToUse = getDarkTheme();
else /*if (CoreSettings.AppTheme == ApplicationTheme.Gray)*/
themeToUse = getGrayTheme();
return themeToUse;
}
}