Refactor color and language settings

This commit is contained in:
Peter Kirmeier 2022-12-04 23:56:21 +01:00
parent 36cbd9f633
commit 22679392f4
9 changed files with 160 additions and 159 deletions

View file

@ -4,8 +4,7 @@
namespace SystemTrayMenu namespace SystemTrayMenu
{ {
using System.Windows.Media; using System.Drawing;
using Color = System.Drawing.Color;
internal static class AppColors internal static class AppColors
{ {
@ -80,16 +79,5 @@ namespace SystemTrayMenu
public static Color Icons { get; set; } public static Color Icons { get; set; }
public static Color DarkModeIcons { 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));
}
} }
} }

View file

@ -1,15 +0,0 @@
// <copyright file="ColorAndCode.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu
{
using System.Drawing;
internal struct ColorAndCode
{
public Color Color { get; set; }
public string HtmlColorCode { get; set; }
}
}

View file

@ -192,225 +192,225 @@ namespace SystemTrayMenu
{ {
ColorConverter converter = new(); ColorConverter converter = new();
ColorAndCode colorAndCode = default; ColorAndCode colorAndCode = default;
bool changed = false; bool resetDefaults = false;
colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItem; colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItem;
colorAndCode.Color = Color.FromArgb(204, 232, 255); colorAndCode.Color = Color.FromArgb(204, 232, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSelectedItem = colorAndCode.HtmlColorCode; Settings.Default.ColorSelectedItem = colorAndCode.HtmlColorCode;
AppColors.SelectedItem = colorAndCode.Color; AppColors.SelectedItem = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelecetedItem; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelecetedItem;
colorAndCode.Color = Color.FromArgb(51, 51, 51); colorAndCode.Color = Color.FromArgb(51, 51, 51);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeSelecetedItem = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeSelecetedItem = colorAndCode.HtmlColorCode;
AppColors.DarkModeSelecetedItem = colorAndCode.Color; AppColors.DarkModeSelecetedItem = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItemBorder; colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItemBorder;
colorAndCode.Color = Color.FromArgb(153, 209, 255); colorAndCode.Color = Color.FromArgb(153, 209, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSelectedItemBorder = colorAndCode.HtmlColorCode; Settings.Default.ColorSelectedItemBorder = colorAndCode.HtmlColorCode;
AppColors.SelectedItemBorder = colorAndCode.Color; AppColors.SelectedItemBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelectedItemBorder; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelectedItemBorder;
colorAndCode.Color = Color.FromArgb(20, 29, 75); colorAndCode.Color = Color.FromArgb(20, 29, 75);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeSelectedItemBorder = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeSelectedItemBorder = colorAndCode.HtmlColorCode;
AppColors.DarkModeSelectedItemBorder = colorAndCode.Color; AppColors.DarkModeSelectedItemBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolder; colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolder;
colorAndCode.Color = Color.FromArgb(194, 245, 222); colorAndCode.Color = Color.FromArgb(194, 245, 222);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorOpenFolder = colorAndCode.HtmlColorCode; Settings.Default.ColorOpenFolder = colorAndCode.HtmlColorCode;
AppColors.OpenFolder = colorAndCode.Color; AppColors.OpenFolder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolder; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolder;
colorAndCode.Color = Color.FromArgb(20, 65, 42); colorAndCode.Color = Color.FromArgb(20, 65, 42);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeOpenFolder = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeOpenFolder = colorAndCode.HtmlColorCode;
AppColors.DarkModeOpenFolder = colorAndCode.Color; AppColors.DarkModeOpenFolder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolderBorder; colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolderBorder;
colorAndCode.Color = Color.FromArgb(153, 255, 165); colorAndCode.Color = Color.FromArgb(153, 255, 165);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorOpenFolderBorder = colorAndCode.HtmlColorCode; Settings.Default.ColorOpenFolderBorder = colorAndCode.HtmlColorCode;
AppColors.OpenFolderBorder = colorAndCode.Color; AppColors.OpenFolderBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolderBorder; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolderBorder;
colorAndCode.Color = Color.FromArgb(20, 75, 85); colorAndCode.Color = Color.FromArgb(20, 75, 85);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeOpenFolderBorder = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeOpenFolderBorder = colorAndCode.HtmlColorCode;
AppColors.DarkModeOpenFolderBorder = colorAndCode.Color; AppColors.DarkModeOpenFolderBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorIcons; colorAndCode.HtmlColorCode = Settings.Default.ColorIcons;
colorAndCode.Color = Color.FromArgb(149, 160, 166); colorAndCode.Color = Color.FromArgb(149, 160, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorIcons = colorAndCode.HtmlColorCode; Settings.Default.ColorIcons = colorAndCode.HtmlColorCode;
AppColors.Icons = colorAndCode.Color; AppColors.Icons = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeIcons; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeIcons;
colorAndCode.Color = Color.FromArgb(149, 160, 166); colorAndCode.Color = Color.FromArgb(149, 160, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeIcons = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeIcons = colorAndCode.HtmlColorCode;
AppColors.DarkModeIcons = colorAndCode.Color; AppColors.DarkModeIcons = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSearchField; colorAndCode.HtmlColorCode = Settings.Default.ColorSearchField;
colorAndCode.Color = Color.FromArgb(255, 255, 255); colorAndCode.Color = Color.FromArgb(255, 255, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSearchField = colorAndCode.HtmlColorCode; Settings.Default.ColorSearchField = colorAndCode.HtmlColorCode;
AppColors.SearchField = colorAndCode.Color; AppColors.SearchField = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSearchField; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSearchField;
colorAndCode.Color = Color.FromArgb(25, 25, 25); colorAndCode.Color = Color.FromArgb(25, 25, 25);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeSearchField = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeSearchField = colorAndCode.HtmlColorCode;
AppColors.DarkModeSearchField = colorAndCode.Color; AppColors.DarkModeSearchField = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorBackground; colorAndCode.HtmlColorCode = Settings.Default.ColorBackground;
colorAndCode.Color = Color.FromArgb(255, 255, 255); colorAndCode.Color = Color.FromArgb(255, 255, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorBackground = colorAndCode.HtmlColorCode; Settings.Default.ColorBackground = colorAndCode.HtmlColorCode;
AppColors.Background = colorAndCode.Color; AppColors.Background = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackground; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackground;
colorAndCode.Color = Color.FromArgb(32, 32, 32); colorAndCode.Color = Color.FromArgb(32, 32, 32);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeBackground = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeBackground = colorAndCode.HtmlColorCode;
AppColors.DarkModeBackground = colorAndCode.Color; AppColors.DarkModeBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorBackgroundBorder; colorAndCode.HtmlColorCode = Settings.Default.ColorBackgroundBorder;
colorAndCode.Color = Color.FromArgb(0, 0, 0); colorAndCode.Color = Color.FromArgb(0, 0, 0);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorBackgroundBorder = colorAndCode.HtmlColorCode; Settings.Default.ColorBackgroundBorder = colorAndCode.HtmlColorCode;
AppColors.BackgroundBorder = colorAndCode.Color; AppColors.BackgroundBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackgroundBorder; colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackgroundBorder;
colorAndCode.Color = Color.FromArgb(0, 0, 0); colorAndCode.Color = Color.FromArgb(0, 0, 0);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeBackgroundBorder = colorAndCode.HtmlColorCode; Settings.Default.ColorDarkModeBackgroundBorder = colorAndCode.HtmlColorCode;
AppColors.DarkModeBackgroundBorder = colorAndCode.Color; AppColors.DarkModeBackgroundBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrow; colorAndCode.HtmlColorCode = Settings.Default.ColorArrow;
colorAndCode.Color = Color.FromArgb(96, 96, 96); colorAndCode.Color = Color.FromArgb(96, 96, 96);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrow = colorAndCode.HtmlColorCode; Settings.Default.ColorArrow = colorAndCode.HtmlColorCode;
AppColors.Arrow = colorAndCode.Color; AppColors.Arrow = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackground; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackground;
colorAndCode.Color = Color.FromArgb(218, 218, 218); colorAndCode.Color = Color.FromArgb(218, 218, 218);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHoverBackground = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowHoverBackground = colorAndCode.HtmlColorCode;
AppColors.ArrowHoverBackground = colorAndCode.Color; AppColors.ArrowHoverBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHover; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHover;
colorAndCode.Color = Color.FromArgb(0, 0, 0); colorAndCode.Color = Color.FromArgb(0, 0, 0);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHover = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowHover = colorAndCode.HtmlColorCode;
AppColors.ArrowHover = colorAndCode.Color; AppColors.ArrowHover = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClick; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClick;
colorAndCode.Color = Color.FromArgb(255, 255, 255); colorAndCode.Color = Color.FromArgb(255, 255, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClick = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowClick = colorAndCode.HtmlColorCode;
AppColors.ArrowClick = colorAndCode.Color; AppColors.ArrowClick = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackground; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackground;
colorAndCode.Color = Color.FromArgb(96, 96, 96); colorAndCode.Color = Color.FromArgb(96, 96, 96);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClickBackground = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowClickBackground = colorAndCode.HtmlColorCode;
AppColors.ArrowClickBackground = colorAndCode.Color; AppColors.ArrowClickBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHover; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHover;
colorAndCode.Color = Color.FromArgb(192, 192, 192); colorAndCode.Color = Color.FromArgb(192, 192, 192);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderArrowsAndTrackHover = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderArrowsAndTrackHover = colorAndCode.HtmlColorCode;
AppColors.SliderArrowsAndTrackHover = colorAndCode.Color; AppColors.SliderArrowsAndTrackHover = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSlider; colorAndCode.HtmlColorCode = Settings.Default.ColorSlider;
colorAndCode.Color = Color.FromArgb(205, 205, 205); colorAndCode.Color = Color.FromArgb(205, 205, 205);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSlider = colorAndCode.HtmlColorCode; Settings.Default.ColorSlider = colorAndCode.HtmlColorCode;
AppColors.Slider = colorAndCode.Color; AppColors.Slider = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHover; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHover;
colorAndCode.Color = Color.FromArgb(166, 166, 166); colorAndCode.Color = Color.FromArgb(166, 166, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderHover = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderHover = colorAndCode.HtmlColorCode;
AppColors.SliderHover = colorAndCode.Color; AppColors.SliderHover = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDragging; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDragging;
colorAndCode.Color = Color.FromArgb(96, 96, 96); colorAndCode.Color = Color.FromArgb(96, 96, 96);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderDragging = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderDragging = colorAndCode.HtmlColorCode;
AppColors.SliderDragging = colorAndCode.Color; AppColors.SliderDragging = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackground; colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackground;
colorAndCode.Color = Color.FromArgb(240, 240, 240); colorAndCode.Color = Color.FromArgb(240, 240, 240);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorScrollbarBackground = colorAndCode.HtmlColorCode; Settings.Default.ColorScrollbarBackground = colorAndCode.HtmlColorCode;
AppColors.ScrollbarBackground = colorAndCode.Color; AppColors.ScrollbarBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowDarkMode;
colorAndCode.Color = Color.FromArgb(103, 103, 103); colorAndCode.Color = Color.FromArgb(103, 103, 103);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowDarkMode = colorAndCode.Color; AppColors.ArrowDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackgroundDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackgroundDarkMode;
colorAndCode.Color = Color.FromArgb(55, 55, 55); colorAndCode.Color = Color.FromArgb(55, 55, 55);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHoverBackgroundDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowHoverBackgroundDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowHoverBackgroundDarkMode = colorAndCode.Color; AppColors.ArrowHoverBackgroundDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverDarkMode;
colorAndCode.Color = Color.FromArgb(103, 103, 103); colorAndCode.Color = Color.FromArgb(103, 103, 103);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHoverDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowHoverDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowHoverDarkMode = colorAndCode.Color; AppColors.ArrowHoverDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickDarkMode;
colorAndCode.Color = Color.FromArgb(23, 23, 23); colorAndCode.Color = Color.FromArgb(23, 23, 23);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClickDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowClickDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowClickDarkMode = colorAndCode.Color; AppColors.ArrowClickDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackgroundDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackgroundDarkMode;
colorAndCode.Color = Color.FromArgb(166, 166, 166); colorAndCode.Color = Color.FromArgb(166, 166, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClickBackgroundDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorArrowClickBackgroundDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowClickBackgroundDarkMode = colorAndCode.Color; AppColors.ArrowClickBackgroundDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode;
colorAndCode.Color = Color.FromArgb(77, 77, 77); colorAndCode.Color = Color.FromArgb(77, 77, 77);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderArrowsAndTrackHoverDarkMode = colorAndCode.Color; AppColors.SliderArrowsAndTrackHoverDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDarkMode;
colorAndCode.Color = Color.FromArgb(77, 77, 77); colorAndCode.Color = Color.FromArgb(77, 77, 77);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderDarkMode = colorAndCode.Color; AppColors.SliderDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHoverDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHoverDarkMode;
colorAndCode.Color = Color.FromArgb(122, 122, 122); colorAndCode.Color = Color.FromArgb(122, 122, 122);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderHoverDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderHoverDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderHoverDarkMode = colorAndCode.Color; AppColors.SliderHoverDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDraggingDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDraggingDarkMode;
colorAndCode.Color = Color.FromArgb(166, 166, 166); colorAndCode.Color = Color.FromArgb(166, 166, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderDraggingDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorSliderDraggingDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderDraggingDarkMode = colorAndCode.Color; AppColors.SliderDraggingDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackgroundDarkMode; colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackgroundDarkMode;
colorAndCode.Color = Color.FromArgb(23, 23, 23); colorAndCode.Color = Color.FromArgb(23, 23, 23);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorScrollbarBackgroundDarkMode = colorAndCode.HtmlColorCode; Settings.Default.ColorScrollbarBackgroundDarkMode = colorAndCode.HtmlColorCode;
AppColors.ScrollbarBackgroundDarkMode = colorAndCode.Color; AppColors.ScrollbarBackgroundDarkMode = colorAndCode.Color;
if (save && changed) if (save && resetDefaults)
{ {
Settings.Default.Save(); Settings.Default.Save();
} }
@ -422,7 +422,7 @@ namespace SystemTrayMenu
try try
{ {
object registryHideFileExt = Registry.GetValue(keyName, valueName, 1); object? registryHideFileExt = Registry.GetValue(keyName, valueName, 1);
if (registryHideFileExt == null) if (registryHideFileExt == null)
{ {
@ -460,23 +460,36 @@ namespace SystemTrayMenu
} }
} }
private static ColorAndCode ProcessColorAndCode( private static void ProcessColorAndCode(
ColorConverter colorConverter, ColorConverter colorConverter,
ColorAndCode colorAndCode, ref ColorAndCode colorAndCode,
ref bool changedHtmlColorCode) ref bool resetDefaults)
{ {
Color? color;
try try
{ {
colorAndCode.Color = (Color)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode); color = (Color?)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode);
if (color != null)
{
colorAndCode.Color = (Color)color;
}
} }
catch (ArgumentException ex) catch (ArgumentException ex)
{ {
Log.Warn($"HtmlColorCode {colorAndCode.HtmlColorCode}", ex); Log.Warn($"HtmlColorCode {colorAndCode.HtmlColorCode}", ex);
colorAndCode.HtmlColorCode = ColorTranslator.ToHtml(colorAndCode.Color); colorAndCode.HtmlColorCode = ColorTranslator.ToHtml(colorAndCode.Color);
changedHtmlColorCode = true; resetDefaults = true;
} }
}
return colorAndCode; /// <summary>
/// Helper class to process color settings.
/// </summary>
private struct ColorAndCode
{
public Color Color { get; set; }
public string HtmlColorCode { get; set; }
} }
} }
} }

View file

@ -1,13 +0,0 @@
// <copyright file="Language.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu.UserInterface
{
public class Language
{
public string Name { get; set; }
public string Value { get; set; }
}
}

View file

@ -111,11 +111,11 @@ namespace SystemTrayMenu.UserInterface
backColor = AppColors.DarkModeBackground.ToSolidColorBrush(); backColor = AppColors.DarkModeBackground.ToSolidColorBrush();
backColorSearch = AppColors.DarkModeSearchField.ToSolidColorBrush(); backColorSearch = AppColors.DarkModeSearchField.ToSolidColorBrush();
backgroundBorder = AppColors.DarkModeBackgroundBorder.ToSolidColorBrush(); backgroundBorder = AppColors.DarkModeBackgroundBorder.ToSolidColorBrush();
Resources["ic_fluent_svgColor"] = AppColors.SolidColorBrushFromString(Settings.Default.ColorDarkModeIcons); Resources["ic_fluent_svgColor"] = WPFExtensions.SolidColorBrushFromString(Settings.Default.ColorDarkModeIcons);
} }
else else
{ {
Resources["ic_fluent_svgColor"] = AppColors.SolidColorBrushFromString(Settings.Default.ColorIcons); Resources["ic_fluent_svgColor"] = WPFExtensions.SolidColorBrushFromString(Settings.Default.ColorIcons);
} }
labelTitle.Foreground = foreColor; labelTitle.Foreground = foreColor;

View file

@ -55,7 +55,7 @@
</DockPanel> </DockPanel>
</GroupBox> </GroupBox>
<GroupBox Header="{u:Translate 'Language'}"> <GroupBox Header="{u:Translate 'Language'}">
<ComboBox x:Name="comboBoxLanguage" HorizontalAlignment="Left" IsReadOnly="True" DisplayMemberPath="Name" SelectedValuePath="Value" MinWidth="120"/> <ComboBox x:Name="comboBoxLanguage" HorizontalAlignment="Left" IsReadOnly="True" DisplayMemberPath="DisplayName" SelectedValuePath="Code" MinWidth="120"/>
</GroupBox> </GroupBox>
<Button Content="{u:Translate 'Default'}" Margin="3" MinWidth="76" Click="ButtonGeneralDefault_Click" HorizontalAlignment="Left"/> <Button Content="{u:Translate 'Default'}" Margin="3" MinWidth="76" Click="ButtonGeneralDefault_Click" HorizontalAlignment="Left"/>
</StackPanel> </StackPanel>

View file

@ -110,75 +110,75 @@ namespace SystemTrayMenu.UserInterface
InitializeLanguage(); InitializeLanguage();
void InitializeLanguage() void InitializeLanguage()
{ {
List<Language> dataSource = new() List<LanguageID> dataSource = new()
{ {
new Language() { Name = "Afrikaans", Value = "af" }, new ("Afrikaans", "af"),
new Language() { Name = "Azərbaycan", Value = "az" }, new ("Azərbaycan", "az"),
new Language() { Name = "bahasa Indonesia", Value = "id" }, new ("bahasa Indonesia", "id"),
new Language() { Name = "català", Value = "ca" }, new ("català", "ca"),
new Language() { Name = "čeština", Value = "cs" }, new ("čeština", "cs"),
new Language() { Name = "Cymraeg", Value = "cy" }, new ("Cymraeg", "cy"),
new Language() { Name = "dansk", Value = "da" }, new ("dansk", "da"),
new Language() { Name = "Deutsch", Value = "de" }, new ("Deutsch", "de"),
new Language() { Name = "eesti keel", Value = "et" }, new ("eesti keel", "et"),
new Language() { Name = "English", Value = "en" }, new ("English", "en"),
new Language() { Name = "English (United Kingdom)", Value = "en-GB" }, new ("English (United Kingdom)", "en-GB"),
new Language() { Name = "Español", Value = "es" }, new ("Español", "es"),
new Language() { Name = "Esperanto", Value = "eo" }, new ("Esperanto", "eo"),
new Language() { Name = "euskara", Value = "eu" }, new ("euskara", "eu"),
new Language() { Name = "Filipino", Value = "tl" }, new ("Filipino", "tl"),
new Language() { Name = "Français", Value = "fr" }, new ("Français", "fr"),
new Language() { Name = "Italian", Value = "it" }, new ("Italian", "it"),
new Language() { Name = "galego", Value = "gl" }, new ("galego", "gl"),
new Language() { Name = "Hrvatski", Value = "hr" }, new ("Hrvatski", "hr"),
new Language() { Name = "Gaeilge", Value = "ga" }, new ("Gaeilge", "ga"),
new Language() { Name = "íslenskur", Value = "is" }, new ("íslenskur", "is"),
new Language() { Name = "kiswahili", Value = "sw" }, new ("kiswahili", "sw"),
new Language() { Name = "Kreyòl ayisyen", Value = "ht" }, new ("Kreyòl ayisyen", "ht"),
new Language() { Name = "Latinus", Value = "la" }, new ("Latinus", "la"),
new Language() { Name = "latviski", Value = "lv" }, new ("latviski", "lv"),
new Language() { Name = "lietuvių", Value = "lt" }, new ("lietuvių", "lt"),
new Language() { Name = "Magyar", Value = "hu" }, new ("Magyar", "hu"),
new Language() { Name = "Malti", Value = "mt" }, new ("Malti", "mt"),
new Language() { Name = "Melayu", Value = "ms" }, new ("Melayu", "ms"),
new Language() { Name = "Nederlands", Value = "nl" }, new ("Nederlands", "nl"),
new Language() { Name = "norsk", Value = "no" }, new ("norsk", "no"),
new Language() { Name = "Polski", Value = "pl" }, new ("Polski", "pl"),
new Language() { Name = "Português (Brasil)", Value = "pt-BR" }, new ("Português (Brasil)", "pt-BR"),
new Language() { Name = "português (Portugal)", Value = "pt-PT" }, new ("português (Portugal)", "pt-PT"),
new Language() { Name = "Română", Value = "ro" }, new ("Română", "ro"),
new Language() { Name = "shqiptare", Value = "sq" }, new ("shqiptare", "sq"),
new Language() { Name = "Slovenščina", Value = "sl" }, new ("Slovenščina", "sl"),
new Language() { Name = "slovenský", Value = "sk" }, new ("slovenský", "sk"),
new Language() { Name = "Suorittaa loppuun", Value = "fi" }, new ("Suorittaa loppuun", "fi"),
new Language() { Name = "svenska", Value = "sv" }, new ("svenska", "sv"),
new Language() { Name = "Tiếng Việt", Value = "vi" }, new ("Tiếng Việt", "vi"),
new Language() { Name = "Türkçe ", Value = "tr" }, new ("Türkçe ", "tr"),
new Language() { Name = "Ελληνικά", Value = "el" }, new ("Ελληνικά", "el"),
new Language() { Name = "беларуская", Value = "bg" }, new ("беларуская", "bg"),
new Language() { Name = "македонски", Value = "mk" }, new ("македонски", "mk"),
new Language() { Name = "русский", Value = "ru" }, new ("русский", "ru"),
new Language() { Name = "Српски", Value = "sr" }, new ("Српски", "sr"),
new Language() { Name = "український", Value = "uk" }, new ("український", "uk"),
new Language() { Name = "ქართული", Value = "ka" }, new ("ქართული", "ka"),
new Language() { Name = "հայերեն", Value = "hy" }, new ("հայերեն", "hy"),
new Language() { Name = "יידיש", Value = "yi" }, new ("יידיש", "yi"),
new Language() { Name = "עִברִית", Value = "iw" }, new ("עִברִית", "iw"),
new Language() { Name = "اردو", Value = "ur" }, new ("اردو", "ur"),
new Language() { Name = "عربي", Value = "ar" }, new ("عربي", "ar"),
new Language() { Name = "فارسی", Value = "fa" }, new ("فارسی", "fa"),
new Language() { Name = "हिन्दी", Value = "hi" }, new ("हिन्दी", "hi"),
new Language() { Name = "ગુજરાતી", Value = "gu" }, new ("ગુજરાતી", "gu"),
new Language() { Name = "தமிழ்", Value = "ta" }, new ("தமிழ்", "ta"),
new Language() { Name = "తెలుగు", Value = "te" }, new ("తెలుగు", "te"),
new Language() { Name = "ಕನ್ನಡ", Value = "kn" }, new ("ಕನ್ನಡ", "kn"),
new Language() { Name = "ไทย", Value = "th" }, new ("ไทย", "th"),
new Language() { Name = "ພາສາລາວ", Value = "lo" }, new ("ພາສາລາວ", "lo"),
new Language() { Name = "ខ្មែរ", Value = "km" }, new ("ខ្មែរ", "km"),
new Language() { Name = "한국어", Value = "ko" }, new ("한국어", "ko"),
new Language() { Name = "中文(正體)", Value = "zh-TW" }, new ("中文(正體)", "zh-TW"),
new Language() { Name = "中文(简体)", Value = "zh-CN" }, new ("中文(简体)", "zh-CN"),
new Language() { Name = "日本語", Value = "ja" }, new ("日本語", "ja"),
}; };
comboBoxLanguage.ItemsSource = dataSource; comboBoxLanguage.ItemsSource = dataSource;
comboBoxLanguage.SelectedValue = Settings.Default.CurrentCultureInfoName; comboBoxLanguage.SelectedValue = Settings.Default.CurrentCultureInfoName;
@ -666,8 +666,8 @@ namespace SystemTrayMenu.UserInterface
#if TODO // HOTKEY #if TODO // HOTKEY
Settings.Default.HotKey = new KeysConverter().ConvertToInvariantString(textBoxHotkey.Hotkey | textBoxHotkey.HotkeyModifiers); Settings.Default.HotKey = new KeysConverter().ConvertToInvariantString(textBoxHotkey.Hotkey | textBoxHotkey.HotkeyModifiers);
Settings.Default.CurrentCultureInfoName = comboBoxLanguage.SelectedValue.ToString();
#endif #endif
Settings.Default.CurrentCultureInfoName = comboBoxLanguage.SelectedValue.ToString();
Settings.Default.SizeInPercent = numericUpDownSizeInPercent.Value; Settings.Default.SizeInPercent = numericUpDownSizeInPercent.Value;
Settings.Default.IconSizeInPercent = numericUpDownIconSizeInPercent.Value; Settings.Default.IconSizeInPercent = numericUpDownIconSizeInPercent.Value;
if (DllImports.NativeMethods.IsTouchEnabled()) if (DllImports.NativeMethods.IsTouchEnabled())
@ -1223,5 +1223,21 @@ namespace SystemTrayMenu.UserInterface
public bool ColumnOnlyFiles { get; set; } public bool ColumnOnlyFiles { get; set; }
} }
/// <summary>
/// Pairs of language display names and their ISO 639-1 standard language codes.
/// </summary>
private class LanguageID
{
public LanguageID(string displayName, string languageCode)
{
DisplayName = displayName;
Code = languageCode;
}
public string DisplayName { get; set; }
public string Code { get; set; }
}
} }
} }

View file

@ -125,9 +125,10 @@ namespace SystemTrayMenu.Utilities
internal static void WriteApplicationRuns() internal static void WriteApplicationRuns()
{ {
Assembly assembly = Assembly.GetExecutingAssembly(); Assembly assembly = Assembly.GetExecutingAssembly();
Version? version = assembly.GetName().Version;
LogValue.Info($"Application Start " + LogValue.Info($"Application Start " +
assembly.ManifestModule.Name + " | " + assembly.ManifestModule.Name + " | " +
assembly.GetName().Version.ToString() + " | " + (version != null ? version.ToString() : string.Empty) + " | " +
$"ScalingFactor={Scaling.Factor}"); $"ScalingFactor={Scaling.Factor}");
} }

View file

@ -13,6 +13,7 @@ namespace SystemTrayMenu.Utilities
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Threading; using System.Windows.Threading;
using Color = System.Windows.Media.Color;
using Point = System.Windows.Point; using Point = System.Windows.Point;
internal static class WPFExtensions internal static class WPFExtensions
@ -106,5 +107,15 @@ namespace SystemTrayMenu.Utilities
null!, null!,
CultureInfo.InvariantCulture); CultureInfo.InvariantCulture);
} }
internal static SolidColorBrush ToSolidColorBrush(this System.Drawing.Color color)
{
return new SolidColorBrush(Color.FromArgb(color.A, color.R, color.G, color.B));
}
internal static SolidColorBrush SolidColorBrushFromString(string value)
{
return new SolidColorBrush((Color)System.Windows.Media.ColorConverter.ConvertFromString(value));
}
} }
} }