Repository navigation
Expand file tree
/
Copy pathThemeHelper.cs
More file actions
88 lines (82 loc) · 5.55 KB
/
Copy pathThemeHelper.cs
File metadata and controls
88 lines (82 loc) · 5.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using Microsoft.Win32;
using System;
using System.Windows;
using System.Windows.Media;
namespace EmailHeaderAnalyzer
{
public static class ThemeHelper
{
public static bool IsWindowsInDarkMode()
{
try
{
using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"))
{
if (key != null)
{
var value = key.GetValue("AppsUseLightTheme");
if (value != null)
{
return (int)value == 0; // 0 = dark mode, 1 = light mode
}
}
}
}
catch
{
// If we can't read the registry, default to light mode
}
return false;
}
public static class LightTheme
{
public static readonly Color Background = Color.FromRgb(245, 245, 245);
public static readonly Color WindowBackground = Colors.White;
public static readonly Color BorderColor = Color.FromRgb(224, 224, 224);
public static readonly Color TextColor = Color.FromRgb(50, 49, 48);
public static readonly Color SecondaryTextColor = Color.FromRgb(96, 94, 92);
public static readonly Color ButtonBackground = Color.FromRgb(0, 120, 212);
public static readonly Color ButtonHoverBackground = Color.FromRgb(16, 110, 190);
public static readonly Color SecondaryButtonBackground = Colors.White;
public static readonly Color SecondaryButtonHoverBackground = Color.FromRgb(243, 242, 241);
public static readonly Color SectionHeaderBackground = Color.FromRgb(0, 120, 212);
public static readonly Color TableRowAltBackground = Color.FromRgb(250, 250, 250);
public static readonly Color TableHeaderBackground = Color.FromRgb(240, 240, 240);
}
public static class DarkTheme
{
public static readonly Color Background = Color.FromRgb(32, 32, 32);
public static readonly Color WindowBackground = Color.FromRgb(45, 45, 45);
public static readonly Color BorderColor = Color.FromRgb(64, 64, 64);
public static readonly Color TextColor = Color.FromRgb(240, 240, 240);
public static readonly Color SecondaryTextColor = Color.FromRgb(200, 200, 200);
public static readonly Color ButtonBackground = Color.FromRgb(0, 103, 192);
public static readonly Color ButtonHoverBackground = Color.FromRgb(0, 90, 158);
public static readonly Color SecondaryButtonBackground = Color.FromRgb(60, 60, 60);
public static readonly Color SecondaryButtonHoverBackground = Color.FromRgb(80, 80, 80);
public static readonly Color SectionHeaderBackground = Color.FromRgb(0, 90, 158);
public static readonly Color TableRowAltBackground = Color.FromRgb(50, 50, 50);
public static readonly Color TableHeaderBackground = Color.FromRgb(60, 60, 60);
}
public static void ApplyTheme(Window window, bool isDarkMode)
{
window.Background = new SolidColorBrush(isDarkMode ? DarkTheme.Background : LightTheme.Background);
// Update resources dynamically
window.Resources["ThemeBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.Background : LightTheme.Background);
window.Resources["ThemeWindowBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.WindowBackground : LightTheme.WindowBackground);
window.Resources["ThemeBorderColor"] = new SolidColorBrush(isDarkMode ? DarkTheme.BorderColor : LightTheme.BorderColor);
window.Resources["ThemeTextColor"] = new SolidColorBrush(isDarkMode ? DarkTheme.TextColor : LightTheme.TextColor);
window.Resources["ThemeSecondaryTextColor"] = new SolidColorBrush(isDarkMode ? DarkTheme.SecondaryTextColor : LightTheme.SecondaryTextColor);
window.Resources["ThemeButtonBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.ButtonBackground : LightTheme.ButtonBackground);
window.Resources["ThemeButtonHoverBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.ButtonHoverBackground : LightTheme.ButtonHoverBackground);
window.Resources["ThemeSecondaryButtonBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.SecondaryButtonBackground : LightTheme.SecondaryButtonBackground);
window.Resources["ThemeSecondaryButtonHoverBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.SecondaryButtonHoverBackground : LightTheme.SecondaryButtonHoverBackground);
window.Resources["ThemeSectionHeaderBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.SectionHeaderBackground : LightTheme.SectionHeaderBackground);
window.Resources["ThemeTableRowAltBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.TableRowAltBackground : LightTheme.TableRowAltBackground);
window.Resources["ThemeTableHeaderBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.TableHeaderBackground : LightTheme.TableHeaderBackground);
// Add additional resources for button states
window.Resources["ThemeHoverBackground"] = new SolidColorBrush(isDarkMode ? DarkTheme.SecondaryButtonHoverBackground : LightTheme.SecondaryButtonHoverBackground);
window.Resources["ThemePressedBackground"] = new SolidColorBrush(isDarkMode ? Color.FromRgb(50, 50, 50) : Color.FromRgb(225, 223, 221));
}
}
}