diff --git a/Config/AppColors.cs b/Config/AppColors.cs index 3b8ff05..857ee95 100644 --- a/Config/AppColors.cs +++ b/Config/AppColors.cs @@ -8,22 +8,36 @@ namespace SystemTrayMenu internal static class AppColors { - internal static Color SelectedItem; - internal static Color DarkModeSelecetedItem; - internal static Color SelectedItemBorder; - internal static Color DarkModeSelectedItemBorder; - internal static Color OpenFolder; - internal static Color DarkModeOpenFolder; - internal static Color OpenFolderBorder; - internal static Color DarkModeOpenFolderBorder; - internal static Color Warning; - internal static Color DarkModeWarning; - internal static Color Title; - internal static Color DarkModeTitle; + internal static Color SelectedItem { get; set; } - internal static Color Background; - internal static Color DarkModeBackground; - internal static Color SearchField; - internal static Color DarkModeSearchField; + internal static Color DarkModeSelecetedItem { get; set; } + + internal static Color SelectedItemBorder { get; set; } + + internal static Color DarkModeSelectedItemBorder { get; set; } + + internal static Color OpenFolder { get; set; } + + internal static Color DarkModeOpenFolder { get; set; } + + internal static Color OpenFolderBorder { get; set; } + + internal static Color DarkModeOpenFolderBorder { get; set; } + + internal static Color Warning { get; set; } + + internal static Color DarkModeWarning { get; set; } + + internal static Color Title { get; set; } + + internal static Color DarkModeTitle { get; set; } + + internal static Color Background { get; set; } + + internal static Color DarkModeBackground { get; set; } + + internal static Color SearchField { get; set; } + + internal static Color DarkModeSearchField { get; set; } } } \ No newline at end of file diff --git a/Config/ColorAndCode.cs b/Config/ColorAndCode.cs new file mode 100644 index 0000000..2e93e2a --- /dev/null +++ b/Config/ColorAndCode.cs @@ -0,0 +1,15 @@ +// +// 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 99fc5db..aab3e2f 100644 --- a/Config/Config.cs +++ b/Config/Config.cs @@ -188,48 +188,129 @@ namespace SystemTrayMenu private static void InitializeColors() { - ColorConverter c = new ColorConverter(); - Settings s = Settings.Default; - s.ColorSelectedItem = SetColor(c, ref AppColors.SelectedItem, Color.FromArgb(204, 232, 255), s.ColorSelectedItem); - s.ColorDarkModeSelecetedItem = SetColor(c, ref AppColors.DarkModeSelecetedItem, Color.FromArgb(51, 51, 51), s.ColorDarkModeSelecetedItem); - s.ColorSelectedItemBorder = SetColor(c, ref AppColors.SelectedItemBorder, Color.FromArgb(153, 209, 255), s.ColorSelectedItemBorder); - s.ColorDarkModeSelectedItemBorder = SetColor(c, ref AppColors.DarkModeSelectedItemBorder, Color.FromArgb(20, 29, 75), s.ColorDarkModeSelectedItemBorder); - s.ColorOpenFolder = SetColor(c, ref AppColors.OpenFolder, Color.FromArgb(194, 245, 222), s.ColorOpenFolder); - s.ColorDarkModeOpenFolder = SetColor(c, ref AppColors.DarkModeOpenFolder, Color.FromArgb(20, 65, 42), s.ColorDarkModeOpenFolder); - s.ColorOpenFolderBorder = SetColor(c, ref AppColors.OpenFolderBorder, Color.FromArgb(153, 255, 165), s.ColorOpenFolderBorder); - s.ColorDarkModeOpenFolderBorder = SetColor(c, ref AppColors.DarkModeOpenFolderBorder, Color.FromArgb(20, 75, 85), s.ColorDarkModeOpenFolderBorder); - s.ColorWarning = SetColor(c, ref AppColors.Warning, Color.FromArgb(255, 204, 232), s.ColorWarning); - s.ColorDarkModeWarning = SetColor(c, ref AppColors.DarkModeWarning, Color.FromArgb(75, 24, 52), s.ColorDarkModeWarning); - s.ColorTitle = SetColor(c, ref AppColors.Title, Color.Azure, s.ColorTitle); - s.ColorDarkModeTitle = SetColor(c, ref AppColors.DarkModeTitle, Color.FromArgb(43, 43, 43), s.ColorDarkModeTitle); - s.ColorSearchField = SetColor(c, ref AppColors.SearchField, Color.FromArgb(255, 255, 255), s.ColorSearchField); - s.ColorDarkModeSearchField = SetColor(c, ref AppColors.DarkModeSearchField, Color.FromArgb(25, 25, 25), s.ColorDarkModeSearchField); - s.ColorBackground = SetColor(c, ref AppColors.Background, Color.FromArgb(255, 255, 255), s.ColorBackground); - s.ColorDarkModeBackground = SetColor(c, ref AppColors.DarkModeBackground, Color.FromArgb(32, 32, 32), s.ColorDarkModeBackground); - s.Save(); + ColorConverter converter = new ColorConverter(); + ColorAndCode colorAndCode = default; + bool changed = false; + + colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItem; + colorAndCode.Color = Color.FromArgb(204, 232, 255); + colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + Settings.Default.ColorDarkModeOpenFolderBorder = colorAndCode.HtmlColorCode; + AppColors.DarkModeOpenFolderBorder = colorAndCode.Color; + + colorAndCode.HtmlColorCode = Settings.Default.ColorWarning; + colorAndCode.Color = Color.FromArgb(255, 204, 232); + colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + Settings.Default.ColorWarning = colorAndCode.HtmlColorCode; + AppColors.Warning = colorAndCode.Color; + + colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeWarning; + colorAndCode.Color = Color.FromArgb(75, 24, 52); + colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + Settings.Default.ColorDarkModeWarning = colorAndCode.HtmlColorCode; + AppColors.DarkModeWarning = colorAndCode.Color; + + colorAndCode.HtmlColorCode = Settings.Default.ColorTitle; + colorAndCode.Color = Color.Azure; + colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + Settings.Default.ColorTitle = colorAndCode.HtmlColorCode; + AppColors.Title = colorAndCode.Color; + + colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeTitle; + colorAndCode.Color = Color.FromArgb(43, 43, 43); + colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + Settings.Default.ColorDarkModeTitle = colorAndCode.HtmlColorCode; + AppColors.DarkModeTitle = colorAndCode.Color; + + colorAndCode.HtmlColorCode = Settings.Default.ColorSearchField; + colorAndCode.Color = Color.FromArgb(255, 255, 255); + colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed); + 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); + 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); + 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); + Settings.Default.ColorDarkModeBackground = colorAndCode.HtmlColorCode; + AppColors.DarkModeBackground = colorAndCode.Color; + + if (changed) + { + Settings.Default.Save(); + } } - private static string SetColor( + private static ColorAndCode ProcessColorAndCode( ColorConverter colorConverter, - ref Color appColor, - Color colorDefault, - string colorHtmlCode) + ColorAndCode colorAndCode, + ref bool changedHtmlColorCode) { - string colorHtmlCodeCorrected = colorHtmlCode; - try { - appColor = (Color)colorConverter.ConvertFromString(colorHtmlCode); + colorAndCode.Color = (Color)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode); } catch (ArgumentException ex) { - Log.Warn($"colorHtmlCode {colorHtmlCode}", ex); - appColor = colorDefault; - colorHtmlCodeCorrected = ColorTranslator.ToHtml(colorDefault); - Settings.Default.Save(); + Log.Warn($"HtmlColorCode {colorAndCode.HtmlColorCode}", ex); + colorAndCode.HtmlColorCode = ColorTranslator.ToHtml(colorAndCode.Color); + changedHtmlColorCode = true; } - return colorHtmlCodeCorrected; + return colorAndCode; } } } diff --git a/Config/MenuDefines.cs b/Config/MenuDefines.cs index c9af55d..206abe3 100644 --- a/Config/MenuDefines.cs +++ b/Config/MenuDefines.cs @@ -8,11 +8,9 @@ namespace SystemTrayMenu internal static class MenuDefines { - internal const int Scrollspeed = 4; internal const int MenusMax = 50; internal const int LengthMax = 37; - internal static readonly Color File = Color.White; - internal static readonly Color Folder = Color.White; + internal const int Scrollspeed = 4; public static Color ColorSelectedItem { diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index d1ff9c1..3a8663b 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -39,5 +39,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.17.37")] -[assembly: AssemblyFileVersion("1.0.17.37")] +[assembly: AssemblyVersion("1.0.17.38")] +[assembly: AssemblyFileVersion("1.0.17.38")] diff --git a/Properties/CustomSettingsProvider.cs b/Properties/CustomSettingsProvider.cs index 5cdb6f3..96aeae6 100644 --- a/Properties/CustomSettingsProvider.cs +++ b/Properties/CustomSettingsProvider.cs @@ -33,19 +33,6 @@ namespace SystemTrayMenu.Properties SettingsDictionary = new Dictionary(); } - /// - /// Gets or sets override. - /// - public override string ApplicationName - { - get => System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name; - - set - { - // do nothing - } - } - /// /// Gets the setting key this is returning must set before the settings are used. /// e.g. Properties.Settings.Default.SettingsKey = @"C:\temp\user.config";. @@ -56,6 +43,19 @@ namespace SystemTrayMenu.Properties $"SystemTrayMenu"), $"user-{Environment.MachineName}.config"); + /// + /// Gets or sets override. + /// + public override string ApplicationName + { + get => Assembly.GetExecutingAssembly().ManifestModule.Name; + + set + { + // do nothing + } + } + private static string ConfigPathAssembly => Path.Combine( Directory.GetParent(Assembly.GetEntryAssembly().Location).FullName, $"user.config");