diff --git a/Pilz.UI.Telerik/Theming/ApplicationTheme.cs b/Pilz.UI.Telerik/Theming/ApplicationTheme.cs new file mode 100644 index 0000000..56e1cac --- /dev/null +++ b/Pilz.UI.Telerik/Theming/ApplicationTheme.cs @@ -0,0 +1,9 @@ +namespace Pilz.UI.Telerik.Theming; + +public enum ApplicationTheme +{ + Auto, + Light, + Dark, + Gray, +} diff --git a/Pilz.UI.Telerik/Theming/ThemeHelper.cs b/Pilz.UI.Telerik/Theming/ThemeHelper.cs new file mode 100644 index 0000000..141d5f5 --- /dev/null +++ b/Pilz.UI.Telerik/Theming/ThemeHelper.cs @@ -0,0 +1,30 @@ +using Telerik.WinControls; + +namespace Pilz.UI.Telerik.Theming; + +public static class ThemeHelper +{ + public static void ApplyApplicationTheme(ApplicationTheme theme, Func getLightTheme, Func getDarkTheme) + { + ApplyApplicationTheme(theme, getLightTheme, getDarkTheme, getDarkTheme); + } + + public static void ApplyApplicationTheme(ApplicationTheme theme, Func getLightTheme, Func getDarkTheme, Func getGrayTheme) + { + ThemeResolutionService.ApplicationThemeName = GetThemeName(theme, getLightTheme, getDarkTheme, getGrayTheme).ThemeName; + } + + public static RadThemeComponentBase GetThemeName(ApplicationTheme theme, Func getLightTheme, Func getDarkTheme, Func 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; + } +}