From dac2fa74c1410b47915857ef9650c1e00f6b1236 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 28 Aug 2024 11:12:52 +0200 Subject: [PATCH] add ThemeHelper --- Pilz.UI.Telerik/Theming/ApplicationTheme.cs | 9 +++++++ Pilz.UI.Telerik/Theming/ThemeHelper.cs | 30 +++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 Pilz.UI.Telerik/Theming/ApplicationTheme.cs create mode 100644 Pilz.UI.Telerik/Theming/ThemeHelper.cs 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; + } +}