From 0e0f2b1b78d11564f96dff01b9c5711826403ea4 Mon Sep 17 00:00:00 2001 From: comintern Date: Sat, 7 Jan 2017 21:47:41 -0600 Subject: [PATCH] Validate log level in general settings. --- RetailCoder.VBE/Common/LogLevelHelper.cs | 13 ++++++++++- RetailCoder.VBE/Settings/GeneralSettings.cs | 26 +++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/RetailCoder.VBE/Common/LogLevelHelper.cs b/RetailCoder.VBE/Common/LogLevelHelper.cs index d60497aaa7..6636318814 100644 --- a/RetailCoder.VBE/Common/LogLevelHelper.cs +++ b/RetailCoder.VBE/Common/LogLevelHelper.cs @@ -1,4 +1,5 @@ -using NLog; +using System.Linq; +using NLog; using NLog.Config; using System; using System.Collections.Generic; @@ -28,6 +29,16 @@ private static IEnumerable GetLogLevels() return logLevels; } + public static int MinLogLevel() + { + return GetLogLevels().Min(lvl => lvl.Ordinal); + } + + public static int MaxLogLevel() + { + return GetLogLevels().Max(lvl => lvl.Ordinal); + } + public static void SetMinimumLogLevel(LogLevel minimumLogLevel) { var loggingRules = LogManager.Configuration.LoggingRules; diff --git a/RetailCoder.VBE/Settings/GeneralSettings.cs b/RetailCoder.VBE/Settings/GeneralSettings.cs index 463db58024..74032f9c55 100644 --- a/RetailCoder.VBE/Settings/GeneralSettings.cs +++ b/RetailCoder.VBE/Settings/GeneralSettings.cs @@ -1,5 +1,7 @@ -using NLog; +using System; +using NLog; using System.Xml.Serialization; +using Rubberduck.Common; namespace Rubberduck.Settings { @@ -23,7 +25,27 @@ public class GeneralSettings : IGeneralSettings public bool AutoSaveEnabled { get; set; } public int AutoSavePeriod { get; set; } public char Delimiter { get; set; } - public int MinimumLogLevel { get; set; } + + private int _logLevel; + public int MinimumLogLevel + { + get { return _logLevel; } + set + { + if (value < LogLevelHelper.MinLogLevel()) + { + _logLevel = LogLevelHelper.MinLogLevel(); + } + else if (value > LogLevelHelper.MaxLogLevel()) + { + _logLevel = LogLevelHelper.MaxLogLevel(); + } + else + { + _logLevel = value; + } + } + } public GeneralSettings() {