diff --git a/Config/AppColors.cs b/Config/AppColors.cs index 7d462fb..08a13e6 100644 --- a/Config/AppColors.cs +++ b/Config/AppColors.cs @@ -4,8 +4,7 @@ namespace SystemTrayMenu { - using System.Windows.Media; - using Color = System.Drawing.Color; + using System.Drawing; internal static class AppColors { @@ -80,16 +79,5 @@ namespace SystemTrayMenu public static Color Icons { get; set; } public static Color DarkModeIcons { get; set; } - - // TODO: WPF: Remove by not using system drawing colors - public static SolidColorBrush ToSolidColorBrush(this Color color) - { - return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B)); - } - - public static SolidColorBrush SolidColorBrushFromString(string value) - { - return new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString(value)); - } } } \ No newline at end of file diff --git a/Config/ColorAndCode.cs b/Config/ColorAndCode.cs deleted file mode 100644 index 2e93e2a..0000000 --- a/Config/ColorAndCode.cs +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) PlaceholderCompany. All rights reserved. -// - -namespace SystemTrayMenu -{ - using System.Drawing; - - internal struct ColorAndCode - { - public Color Color { get; set; } - - public string HtmlColorCode { get; set; } - } -} \ No newline at end of file diff --git a/Config/Config.cs b/Config/Config.cs index da271a8..c8d1e49 100644 --- a/Config/Config.cs +++ b/Config/Config.cs @@ -192,225 +192,225 @@ namespace SystemTrayMenu { ColorConverter converter = new(); ColorAndCode colorAndCode = default; - bool changed = false; + bool resetDefaults = false; colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItem; colorAndCode.Color = Color.FromArgb(204, 232, 255); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSelectedItem = colorAndCode.HtmlColorCode; AppColors.SelectedItem = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelecetedItem; colorAndCode.Color = Color.FromArgb(51, 51, 51); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeSelecetedItem = colorAndCode.HtmlColorCode; AppColors.DarkModeSelecetedItem = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItemBorder; colorAndCode.Color = Color.FromArgb(153, 209, 255); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSelectedItemBorder = colorAndCode.HtmlColorCode; AppColors.SelectedItemBorder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelectedItemBorder; colorAndCode.Color = Color.FromArgb(20, 29, 75); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeSelectedItemBorder = colorAndCode.HtmlColorCode; AppColors.DarkModeSelectedItemBorder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolder; colorAndCode.Color = Color.FromArgb(194, 245, 222); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorOpenFolder = colorAndCode.HtmlColorCode; AppColors.OpenFolder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolder; colorAndCode.Color = Color.FromArgb(20, 65, 42); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeOpenFolder = colorAndCode.HtmlColorCode; AppColors.DarkModeOpenFolder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolderBorder; colorAndCode.Color = Color.FromArgb(153, 255, 165); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorOpenFolderBorder = colorAndCode.HtmlColorCode; AppColors.OpenFolderBorder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolderBorder; colorAndCode.Color = Color.FromArgb(20, 75, 85); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeOpenFolderBorder = colorAndCode.HtmlColorCode; AppColors.DarkModeOpenFolderBorder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorIcons; colorAndCode.Color = Color.FromArgb(149, 160, 166); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorIcons = colorAndCode.HtmlColorCode; AppColors.Icons = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeIcons; colorAndCode.Color = Color.FromArgb(149, 160, 166); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeIcons = colorAndCode.HtmlColorCode; AppColors.DarkModeIcons = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSearchField; colorAndCode.Color = Color.FromArgb(255, 255, 255); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSearchField = colorAndCode.HtmlColorCode; AppColors.SearchField = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSearchField; colorAndCode.Color = Color.FromArgb(25, 25, 25); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeSearchField = colorAndCode.HtmlColorCode; AppColors.DarkModeSearchField = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorBackground; colorAndCode.Color = Color.FromArgb(255, 255, 255); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorBackground = colorAndCode.HtmlColorCode; AppColors.Background = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackground; colorAndCode.Color = Color.FromArgb(32, 32, 32); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeBackground = colorAndCode.HtmlColorCode; AppColors.DarkModeBackground = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorBackgroundBorder; colorAndCode.Color = Color.FromArgb(0, 0, 0); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorBackgroundBorder = colorAndCode.HtmlColorCode; AppColors.BackgroundBorder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackgroundBorder; colorAndCode.Color = Color.FromArgb(0, 0, 0); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorDarkModeBackgroundBorder = colorAndCode.HtmlColorCode; AppColors.DarkModeBackgroundBorder = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrow; colorAndCode.Color = Color.FromArgb(96, 96, 96); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrow = colorAndCode.HtmlColorCode; AppColors.Arrow = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackground; colorAndCode.Color = Color.FromArgb(218, 218, 218); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowHoverBackground = colorAndCode.HtmlColorCode; AppColors.ArrowHoverBackground = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHover; colorAndCode.Color = Color.FromArgb(0, 0, 0); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowHover = colorAndCode.HtmlColorCode; AppColors.ArrowHover = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClick; colorAndCode.Color = Color.FromArgb(255, 255, 255); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowClick = colorAndCode.HtmlColorCode; AppColors.ArrowClick = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackground; colorAndCode.Color = Color.FromArgb(96, 96, 96); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowClickBackground = colorAndCode.HtmlColorCode; AppColors.ArrowClickBackground = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHover; colorAndCode.Color = Color.FromArgb(192, 192, 192); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderArrowsAndTrackHover = colorAndCode.HtmlColorCode; AppColors.SliderArrowsAndTrackHover = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSlider; colorAndCode.Color = Color.FromArgb(205, 205, 205); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSlider = colorAndCode.HtmlColorCode; AppColors.Slider = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHover; colorAndCode.Color = Color.FromArgb(166, 166, 166); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderHover = colorAndCode.HtmlColorCode; AppColors.SliderHover = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDragging; colorAndCode.Color = Color.FromArgb(96, 96, 96); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderDragging = colorAndCode.HtmlColorCode; AppColors.SliderDragging = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackground; colorAndCode.Color = Color.FromArgb(240, 240, 240); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorScrollbarBackground = colorAndCode.HtmlColorCode; AppColors.ScrollbarBackground = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowDarkMode; colorAndCode.Color = Color.FromArgb(103, 103, 103); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowDarkMode = colorAndCode.HtmlColorCode; AppColors.ArrowDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackgroundDarkMode; colorAndCode.Color = Color.FromArgb(55, 55, 55); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowHoverBackgroundDarkMode = colorAndCode.HtmlColorCode; AppColors.ArrowHoverBackgroundDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverDarkMode; colorAndCode.Color = Color.FromArgb(103, 103, 103); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowHoverDarkMode = colorAndCode.HtmlColorCode; AppColors.ArrowHoverDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickDarkMode; colorAndCode.Color = Color.FromArgb(23, 23, 23); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowClickDarkMode = colorAndCode.HtmlColorCode; AppColors.ArrowClickDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackgroundDarkMode; colorAndCode.Color = Color.FromArgb(166, 166, 166); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorArrowClickBackgroundDarkMode = colorAndCode.HtmlColorCode; AppColors.ArrowClickBackgroundDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode; colorAndCode.Color = Color.FromArgb(77, 77, 77); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode = colorAndCode.HtmlColorCode; AppColors.SliderArrowsAndTrackHoverDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDarkMode; colorAndCode.Color = Color.FromArgb(77, 77, 77); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderDarkMode = colorAndCode.HtmlColorCode; AppColors.SliderDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHoverDarkMode; colorAndCode.Color = Color.FromArgb(122, 122, 122); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderHoverDarkMode = colorAndCode.HtmlColorCode; AppColors.SliderHoverDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDraggingDarkMode; colorAndCode.Color = Color.FromArgb(166, 166, 166); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorSliderDraggingDarkMode = colorAndCode.HtmlColorCode; AppColors.SliderDraggingDarkMode = colorAndCode.Color; colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackgroundDarkMode; colorAndCode.Color = Color.FromArgb(23, 23, 23); - colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults); Settings.Default.ColorScrollbarBackgroundDarkMode = colorAndCode.HtmlColorCode; AppColors.ScrollbarBackgroundDarkMode = colorAndCode.Color; - if (save && changed) + if (save && resetDefaults) { Settings.Default.Save(); } @@ -422,7 +422,7 @@ namespace SystemTrayMenu try { - object registryHideFileExt = Registry.GetValue(keyName, valueName, 1); + object? registryHideFileExt = Registry.GetValue(keyName, valueName, 1); if (registryHideFileExt == null) { @@ -460,23 +460,36 @@ namespace SystemTrayMenu } } - private static ColorAndCode ProcessColorAndCode( + private static void ProcessColorAndCode( ColorConverter colorConverter, - ColorAndCode colorAndCode, - ref bool changedHtmlColorCode) + ref ColorAndCode colorAndCode, + ref bool resetDefaults) { + Color? color; try { - colorAndCode.Color = (Color)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode); + color = (Color?)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode); + if (color != null) + { + colorAndCode.Color = (Color)color; + } } catch (ArgumentException ex) { Log.Warn($"HtmlColorCode {colorAndCode.HtmlColorCode}", ex); colorAndCode.HtmlColorCode = ColorTranslator.ToHtml(colorAndCode.Color); - changedHtmlColorCode = true; + resetDefaults = true; } + } - return colorAndCode; + /// + /// Helper class to process color settings. + /// + private struct ColorAndCode + { + public Color Color { get; set; } + + public string HtmlColorCode { get; set; } } } } diff --git a/UserInterface/Language.cs b/UserInterface/Language.cs deleted file mode 100644 index 0e31a08..0000000 --- a/UserInterface/Language.cs +++ /dev/null @@ -1,13 +0,0 @@ -// -// Copyright (c) PlaceholderCompany. All rights reserved. -// - -namespace SystemTrayMenu.UserInterface -{ - public class Language - { - public string Name { get; set; } - - public string Value { get; set; } - } -} diff --git a/UserInterface/Menu.xaml.cs b/UserInterface/Menu.xaml.cs index 31fb70c..27cd926 100644 --- a/UserInterface/Menu.xaml.cs +++ b/UserInterface/Menu.xaml.cs @@ -111,11 +111,11 @@ namespace SystemTrayMenu.UserInterface backColor = AppColors.DarkModeBackground.ToSolidColorBrush(); backColorSearch = AppColors.DarkModeSearchField.ToSolidColorBrush(); backgroundBorder = AppColors.DarkModeBackgroundBorder.ToSolidColorBrush(); - Resources["ic_fluent_svgColor"] = AppColors.SolidColorBrushFromString(Settings.Default.ColorDarkModeIcons); + Resources["ic_fluent_svgColor"] = WPFExtensions.SolidColorBrushFromString(Settings.Default.ColorDarkModeIcons); } else { - Resources["ic_fluent_svgColor"] = AppColors.SolidColorBrushFromString(Settings.Default.ColorIcons); + Resources["ic_fluent_svgColor"] = WPFExtensions.SolidColorBrushFromString(Settings.Default.ColorIcons); } labelTitle.Foreground = foreColor; diff --git a/UserInterface/SettingsWindow.xaml b/UserInterface/SettingsWindow.xaml index 69b5ac7..da3a80d 100644 --- a/UserInterface/SettingsWindow.xaml +++ b/UserInterface/SettingsWindow.xaml @@ -55,7 +55,7 @@ - +