diff --git a/DiscordChatExporter.Gui/App.xaml b/DiscordChatExporter.Gui/App.xaml
index 7d44e5f..d4eef8d 100644
--- a/DiscordChatExporter.Gui/App.xaml
+++ b/DiscordChatExporter.Gui/App.xaml
@@ -14,10 +14,12 @@
+
+
diff --git a/DiscordChatExporter.Gui/App.xaml.cs b/DiscordChatExporter.Gui/App.xaml.cs
index a0ba95a..2420703 100644
--- a/DiscordChatExporter.Gui/App.xaml.cs
+++ b/DiscordChatExporter.Gui/App.xaml.cs
@@ -1,5 +1,7 @@
using System;
using System.Reflection;
+using DiscordChatExporter.Gui.Internal;
+using MaterialDesignThemes.Wpf;
namespace DiscordChatExporter.Gui
{
@@ -13,4 +15,31 @@ namespace DiscordChatExporter.Gui
public static string VersionString => Version.ToString(3);
}
+
+ public partial class App
+ {
+ private static Theme LightTheme { get; } = Theme.Create(
+ new MaterialDesignLightTheme(),
+ MediaColor.FromHex("#343838"),
+ MediaColor.FromHex("#F9A825")
+ );
+
+ private static Theme DarkTheme { get; } = Theme.Create(
+ new MaterialDesignDarkTheme(),
+ MediaColor.FromHex("#E8E8E8"),
+ MediaColor.FromHex("#F9A825")
+ );
+
+ public static void SetLightTheme()
+ {
+ var paletteHelper = new PaletteHelper();
+ paletteHelper.SetTheme(LightTheme);
+ }
+
+ public static void SetDarkTheme()
+ {
+ var paletteHelper = new PaletteHelper();
+ paletteHelper.SetTheme(DarkTheme);
+ }
+ }
}
\ No newline at end of file
diff --git a/DiscordChatExporter.Gui/Bootstrapper.cs b/DiscordChatExporter.Gui/Bootstrapper.cs
index 2691ec6..a6f0460 100644
--- a/DiscordChatExporter.Gui/Bootstrapper.cs
+++ b/DiscordChatExporter.Gui/Bootstrapper.cs
@@ -13,6 +13,14 @@ namespace DiscordChatExporter.Gui
{
public class Bootstrapper : Bootstrapper
{
+ protected override void OnStart()
+ {
+ base.OnStart();
+
+ // Light theme is the default
+ App.SetLightTheme();
+ }
+
protected override void ConfigureIoC(IStyletIoCBuilder builder)
{
base.ConfigureIoC(builder);
diff --git a/DiscordChatExporter.Gui/Internal/MediaColor.cs b/DiscordChatExporter.Gui/Internal/MediaColor.cs
new file mode 100644
index 0000000..8971696
--- /dev/null
+++ b/DiscordChatExporter.Gui/Internal/MediaColor.cs
@@ -0,0 +1,9 @@
+using System.Windows.Media;
+
+namespace DiscordChatExporter.Gui.Internal
+{
+ internal static class MediaColor
+ {
+ public static Color FromHex(string hex) => (Color) ColorConverter.ConvertFromString(hex);
+ }
+}
\ No newline at end of file
diff --git a/DiscordChatExporter.Gui/Theme.cs b/DiscordChatExporter.Gui/Theme.cs
deleted file mode 100644
index df80ada..0000000
--- a/DiscordChatExporter.Gui/Theme.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using MaterialDesignThemes.Wpf;
-using System.Windows.Media;
-
-namespace DiscordChatExporter.Gui
-{
- public sealed class Theme
- {
- public static Theme Light { get; } = new Theme(new MaterialDesignLightTheme(), HexToColor.Convert("#343838"), HexToColor.Convert("#F9A825"));
- public static Theme Dark { get; } = new Theme(new MaterialDesignDarkTheme(), HexToColor.Convert("#E8E8E8"), HexToColor.Convert("#F9A825"));
-
- public static void SetCurrent(Theme theme)
- {
- var paletteHelper = new PaletteHelper();
-
- var materialTheme = paletteHelper.GetTheme();
- materialTheme.SetBaseTheme(theme.BaseTheme);
- materialTheme.SetPrimaryColor(theme.PrimaryColor);
- materialTheme.SetSecondaryColor(theme.SecondaryColor);
-
- paletteHelper.SetTheme(materialTheme);
- }
-
- public Theme(IBaseTheme baseTheme, Color primaryColor, Color secondaryColor)
- {
- BaseTheme = baseTheme;
- PrimaryColor = primaryColor;
- SecondaryColor = secondaryColor;
- }
-
- public IBaseTheme BaseTheme { get; }
- public Color PrimaryColor { get; }
- public Color SecondaryColor { get; }
-
- class HexToColor
- {
- public static Color Convert(string hex)
- {
- return (Color)ColorConverter.ConvertFromString(hex);
- }
- }
- }
-}
diff --git a/DiscordChatExporter.Gui/ViewModels/RootViewModel.cs b/DiscordChatExporter.Gui/ViewModels/RootViewModel.cs
index 8038048..4a1d238 100644
--- a/DiscordChatExporter.Gui/ViewModels/RootViewModel.cs
+++ b/DiscordChatExporter.Gui/ViewModels/RootViewModel.cs
@@ -107,8 +107,15 @@ namespace DiscordChatExporter.Gui.ViewModels
IsBotToken = _settingsService.LastToken.Type == AuthTokenType.Bot;
TokenValue = _settingsService.LastToken.Value;
}
-
- Theme.SetCurrent(_settingsService.IsDarkThemeEnabled ? Theme.Dark : Theme.Light);
+
+ if (_settingsService.IsDarkThemeEnabled)
+ {
+ App.SetDarkTheme();
+ }
+ else
+ {
+ App.SetLightTheme();
+ }
await HandleAutoUpdateAsync();
}
diff --git a/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.xaml.cs b/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.xaml.cs
index b5d7081..5cee244 100644
--- a/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.xaml.cs
+++ b/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.xaml.cs
@@ -1,6 +1,4 @@
-using MaterialDesignThemes;
-using MaterialDesignThemes.Wpf;
-using System.Windows.Media.Media3D;
+using System.Windows;
namespace DiscordChatExporter.Gui.Views.Dialogs
{
@@ -11,19 +9,14 @@ namespace DiscordChatExporter.Gui.Views.Dialogs
InitializeComponent();
}
- private void ToggleButton_Checked(object sender, System.Windows.RoutedEventArgs e)
+ private void ToggleButton_Checked(object sender, RoutedEventArgs e)
{
- setBaseTheme(Theme.Dark);
+ App.SetDarkTheme();
}
- private void ToggleButton_Unchecked(object sender, System.Windows.RoutedEventArgs e)
+ private void ToggleButton_Unchecked(object sender, RoutedEventArgs e)
{
- setBaseTheme(Theme.Light);
- }
-
- private void setBaseTheme(Theme theme)
- {
- Theme.SetCurrent(theme);
+ App.SetLightTheme();
}
}
}
\ No newline at end of file