From 35ff50af0d1c5f815b65daf1645674bd2a198909 Mon Sep 17 00:00:00 2001 From: Joakim Skoglund Date: Sat, 27 Oct 2018 00:46:08 +0200 Subject: [PATCH] Added check if config exists, if not create --- WeekNumber/Settings.cs | 34 ++++++++++++++++++++++++++++++++-- WeekNumber/TaskbarGui.cs | 2 +- WeekNumber/Week.cs | 6 ++---- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/WeekNumber/Settings.cs b/WeekNumber/Settings.cs index 1b19a2d..3c5ea3c 100644 --- a/WeekNumber/Settings.cs +++ b/WeekNumber/Settings.cs @@ -37,11 +37,21 @@ internal static bool StartWithWindows #region Internal static methods - internal static bool SettingIsValue(string setting, string value) => - ConfigurationManager.AppSettings.Get(setting) == value; + internal static bool SettingIsValue(string setting, string value) + { + CreateSettings(); + return ConfigurationManager.AppSettings.Get(setting) == value; + } + + internal static string GetSetting(string setting) + { + CreateSettings(); + return ConfigurationManager.AppSettings.Get(setting); + } internal static void UpdateSetting(string setting, string value) { + CreateSettings(); var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var settings = configFile.AppSettings.Settings; settings[setting].Value = value; @@ -50,5 +60,25 @@ internal static void UpdateSetting(string setting, string value) } #endregion Internal static methods + + #region Private method that creates the application settings file if needed + + private static void CreateSettings() + { + var settingsFile = Application.ExecutablePath + ".config"; + if (!System.IO.File.Exists(settingsFile)) + { + const string xml = @" + + + + + +"; + System.IO.File.WriteAllText(settingsFile, xml, System.Text.Encoding.UTF8); + } + } + + #endregion Private method that creates the application settings file if needed } } \ No newline at end of file diff --git a/WeekNumber/TaskbarGui.cs b/WeekNumber/TaskbarGui.cs index 6c5d947..81aaefd 100644 --- a/WeekNumber/TaskbarGui.cs +++ b/WeekNumber/TaskbarGui.cs @@ -69,7 +69,7 @@ private static void CalendarWeekRuleClick(object o, EventArgs e) m.Checked = false; } mi.Checked = newCheckState; - Settings.UpdateSetting(nameof(CalendarWeekRule), mi.Text); + Settings.UpdateSetting(nameof(CalendarWeekRule), mi.Text.Replace(" ", string.Empty)); if (mi != null) { mi.Enabled = true; diff --git a/WeekNumber/Week.cs b/WeekNumber/Week.cs index 1c70244..5063141 100644 --- a/WeekNumber/Week.cs +++ b/WeekNumber/Week.cs @@ -1,7 +1,6 @@ #region Using statements using System; -using System.Configuration; using System.ComponentModel; using System.Globalization; @@ -53,13 +52,12 @@ public int Current { get { - var dayOfWeekSetting = ConfigurationManager.AppSettings.Get(nameof(DayOfWeek)); + var dayOfWeekSetting = Settings.GetSetting(nameof(DayOfWeek)); Enum dayOfWeekEnum = DayOfWeek.Sunday; var dayOfWeek = (DayOfWeek) TypeDescriptor.GetConverter(dayOfWeekEnum) .ConvertFrom(dayOfWeekSetting); - var calendarWeekRuleSetting = ConfigurationManager.AppSettings - .Get(nameof(CalendarWeekRule)); + var calendarWeekRuleSetting = Settings.GetSetting(nameof(CalendarWeekRule)); Enum calendarWeekRuleEnum = CalendarWeekRule.FirstFourDayWeek; var calendarWeekRule = (CalendarWeekRule) TypeDescriptor.GetConverter(calendarWeekRuleEnum)