From 5e87beadd1fa419a8ab7f6e543423e3328fd5c12 Mon Sep 17 00:00:00 2001 From: Anton Kasyanov Date: Sat, 15 Oct 2016 21:37:18 +0300 Subject: [PATCH] Allow users to have multiple configuration files --- Eve-O-Preview/Configuration/AppConfig.cs | 13 +++++++++++++ .../Configuration/ConfigurationStorage.cs | 18 ++++++++++-------- Eve-O-Preview/Configuration/IAppConfig.cs | 10 ++++++++++ .../Configuration/IThumbnailConfig.cs | 5 +++-- Eve-O-Preview/Configuration/ThumbnailConfig.cs | 8 +------- Eve-O-Preview/Eve-O-Preview.csproj | 2 ++ Eve-O-Preview/Program.cs | 3 ++- 7 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 Eve-O-Preview/Configuration/AppConfig.cs create mode 100644 Eve-O-Preview/Configuration/IAppConfig.cs diff --git a/Eve-O-Preview/Configuration/AppConfig.cs b/Eve-O-Preview/Configuration/AppConfig.cs new file mode 100644 index 0000000..c059d39 --- /dev/null +++ b/Eve-O-Preview/Configuration/AppConfig.cs @@ -0,0 +1,13 @@ +namespace EveOPreview.Configuration +{ + class AppConfig : IAppConfig + { + public AppConfig() + { + // Default values + this.ConfigFileName = null; + } + + public string ConfigFileName { get; set; } + } +} diff --git a/Eve-O-Preview/Configuration/ConfigurationStorage.cs b/Eve-O-Preview/Configuration/ConfigurationStorage.cs index be5b229..f6452db 100644 --- a/Eve-O-Preview/Configuration/ConfigurationStorage.cs +++ b/Eve-O-Preview/Configuration/ConfigurationStorage.cs @@ -3,15 +3,17 @@ using Newtonsoft.Json; namespace EveOPreview.Configuration { - public class ConfigurationStorage : IConfigurationStorage + class ConfigurationStorage : IConfigurationStorage { private const string ConfigurationFileName = "EVE-O Preview.json"; - private readonly IThumbnailConfig _configuration; + private readonly IAppConfig _appConfig; + private readonly IThumbnailConfig _thumbnailConfig; - public ConfigurationStorage(IThumbnailConfig configuration) + public ConfigurationStorage(IAppConfig appConfig, IThumbnailConfig thumbnailConfig) { - this._configuration = configuration; + this._appConfig = appConfig; + this._thumbnailConfig = thumbnailConfig; } public void Load() @@ -25,22 +27,22 @@ namespace EveOPreview.Configuration string rawData = File.ReadAllText(filename); - JsonConvert.PopulateObject(rawData, this._configuration); + JsonConvert.PopulateObject(rawData, this._thumbnailConfig); // Validate data after loading it - this._configuration.ApplyRestrictions(); + this._thumbnailConfig.ApplyRestrictions(); } public void Save() { - string rawData = JsonConvert.SerializeObject(this._configuration, Formatting.Indented); + string rawData = JsonConvert.SerializeObject(this._thumbnailConfig, Formatting.Indented); File.WriteAllText(this.GetConfigFileName(), rawData); } private string GetConfigFileName() { - return string.IsNullOrEmpty(this._configuration.ConfigFileName) ? ConfigurationStorage.ConfigurationFileName : this._configuration.ConfigFileName; + return string.IsNullOrEmpty(this._appConfig.ConfigFileName) ? ConfigurationStorage.ConfigurationFileName : this._appConfig.ConfigFileName; } } } \ No newline at end of file diff --git a/Eve-O-Preview/Configuration/IAppConfig.cs b/Eve-O-Preview/Configuration/IAppConfig.cs new file mode 100644 index 0000000..f5ba6bf --- /dev/null +++ b/Eve-O-Preview/Configuration/IAppConfig.cs @@ -0,0 +1,10 @@ +namespace EveOPreview.Configuration +{ + /// + /// Application configuration + /// + public interface IAppConfig + { + string ConfigFileName { get; set; } + } +} \ No newline at end of file diff --git a/Eve-O-Preview/Configuration/IThumbnailConfig.cs b/Eve-O-Preview/Configuration/IThumbnailConfig.cs index 88a75c1..0bb27fa 100644 --- a/Eve-O-Preview/Configuration/IThumbnailConfig.cs +++ b/Eve-O-Preview/Configuration/IThumbnailConfig.cs @@ -3,10 +3,11 @@ using System.Windows.Forms; namespace EveOPreview.Configuration { + /// + /// Thumbnails Manager configuration + /// public interface IThumbnailConfig { - string ConfigFileName { get; set; } - bool MinimizeToTray { get; set; } int ThumbnailRefreshPeriod { get; set; } diff --git a/Eve-O-Preview/Configuration/ThumbnailConfig.cs b/Eve-O-Preview/Configuration/ThumbnailConfig.cs index 337dd30..160ea80 100644 --- a/Eve-O-Preview/Configuration/ThumbnailConfig.cs +++ b/Eve-O-Preview/Configuration/ThumbnailConfig.cs @@ -5,13 +5,10 @@ using Newtonsoft.Json; namespace EveOPreview.Configuration { - public class ThumbnailConfig : IThumbnailConfig + class ThumbnailConfig : IThumbnailConfig { public ThumbnailConfig() { - // Default values - this.ConfigFileName = null; - this.MinimizeToTray = false; this.ThumbnailRefreshPeriod = 500; @@ -43,9 +40,6 @@ namespace EveOPreview.Configuration this.ClientHotkey = new Dictionary(); } - [JsonIgnore] - public string ConfigFileName { get; set; } - public bool MinimizeToTray { get; set; } public int ThumbnailRefreshPeriod { get; set; } diff --git a/Eve-O-Preview/Eve-O-Preview.csproj b/Eve-O-Preview/Eve-O-Preview.csproj index 84b350d..59948ff 100644 --- a/Eve-O-Preview/Eve-O-Preview.csproj +++ b/Eve-O-Preview/Eve-O-Preview.csproj @@ -96,7 +96,9 @@ + + diff --git a/Eve-O-Preview/Program.cs b/Eve-O-Preview/Program.cs index 574e80d..e0090bc 100644 --- a/Eve-O-Preview/Program.cs +++ b/Eve-O-Preview/Program.cs @@ -31,9 +31,10 @@ namespace EveOPreview .RegisterService() .RegisterService() .RegisterService() + .RegisterInstance(new AppConfig()) .RegisterInstance(new ThumbnailConfig()); - controller.Create().ConfigFileName = Program.GetCustomConfigFile(args); + controller.Create().ConfigFileName = Program.GetCustomConfigFile(args); controller.Run(); }