Allow users to have multiple configuration files
This commit is contained in:
13
Eve-O-Preview/Configuration/AppConfig.cs
Normal file
13
Eve-O-Preview/Configuration/AppConfig.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
namespace EveOPreview.Configuration
|
||||||
|
{
|
||||||
|
class AppConfig : IAppConfig
|
||||||
|
{
|
||||||
|
public AppConfig()
|
||||||
|
{
|
||||||
|
// Default values
|
||||||
|
this.ConfigFileName = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ConfigFileName { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,15 +3,17 @@ using Newtonsoft.Json;
|
|||||||
|
|
||||||
namespace EveOPreview.Configuration
|
namespace EveOPreview.Configuration
|
||||||
{
|
{
|
||||||
public class ConfigurationStorage : IConfigurationStorage
|
class ConfigurationStorage : IConfigurationStorage
|
||||||
{
|
{
|
||||||
private const string ConfigurationFileName = "EVE-O Preview.json";
|
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()
|
public void Load()
|
||||||
@@ -25,22 +27,22 @@ namespace EveOPreview.Configuration
|
|||||||
|
|
||||||
string rawData = File.ReadAllText(filename);
|
string rawData = File.ReadAllText(filename);
|
||||||
|
|
||||||
JsonConvert.PopulateObject(rawData, this._configuration);
|
JsonConvert.PopulateObject(rawData, this._thumbnailConfig);
|
||||||
|
|
||||||
// Validate data after loading it
|
// Validate data after loading it
|
||||||
this._configuration.ApplyRestrictions();
|
this._thumbnailConfig.ApplyRestrictions();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Save()
|
public void Save()
|
||||||
{
|
{
|
||||||
string rawData = JsonConvert.SerializeObject(this._configuration, Formatting.Indented);
|
string rawData = JsonConvert.SerializeObject(this._thumbnailConfig, Formatting.Indented);
|
||||||
|
|
||||||
File.WriteAllText(this.GetConfigFileName(), rawData);
|
File.WriteAllText(this.GetConfigFileName(), rawData);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetConfigFileName()
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
10
Eve-O-Preview/Configuration/IAppConfig.cs
Normal file
10
Eve-O-Preview/Configuration/IAppConfig.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
namespace EveOPreview.Configuration
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Application configuration
|
||||||
|
/// </summary>
|
||||||
|
public interface IAppConfig
|
||||||
|
{
|
||||||
|
string ConfigFileName { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,10 +3,11 @@ using System.Windows.Forms;
|
|||||||
|
|
||||||
namespace EveOPreview.Configuration
|
namespace EveOPreview.Configuration
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Thumbnails Manager configuration
|
||||||
|
/// </summary>
|
||||||
public interface IThumbnailConfig
|
public interface IThumbnailConfig
|
||||||
{
|
{
|
||||||
string ConfigFileName { get; set; }
|
|
||||||
|
|
||||||
bool MinimizeToTray { get; set; }
|
bool MinimizeToTray { get; set; }
|
||||||
int ThumbnailRefreshPeriod { get; set; }
|
int ThumbnailRefreshPeriod { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,10 @@ using Newtonsoft.Json;
|
|||||||
|
|
||||||
namespace EveOPreview.Configuration
|
namespace EveOPreview.Configuration
|
||||||
{
|
{
|
||||||
public class ThumbnailConfig : IThumbnailConfig
|
class ThumbnailConfig : IThumbnailConfig
|
||||||
{
|
{
|
||||||
public ThumbnailConfig()
|
public ThumbnailConfig()
|
||||||
{
|
{
|
||||||
// Default values
|
|
||||||
this.ConfigFileName = null;
|
|
||||||
|
|
||||||
this.MinimizeToTray = false;
|
this.MinimizeToTray = false;
|
||||||
this.ThumbnailRefreshPeriod = 500;
|
this.ThumbnailRefreshPeriod = 500;
|
||||||
|
|
||||||
@@ -43,9 +40,6 @@ namespace EveOPreview.Configuration
|
|||||||
this.ClientHotkey = new Dictionary<string, string>();
|
this.ClientHotkey = new Dictionary<string, string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public string ConfigFileName { get; set; }
|
|
||||||
|
|
||||||
public bool MinimizeToTray { get; set; }
|
public bool MinimizeToTray { get; set; }
|
||||||
public int ThumbnailRefreshPeriod { get; set; }
|
public int ThumbnailRefreshPeriod { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,9 @@
|
|||||||
<Compile Include="ApplicationBase\LightInjectContainer.cs" />
|
<Compile Include="ApplicationBase\LightInjectContainer.cs" />
|
||||||
<Compile Include="ApplicationBase\Presenter.cs" />
|
<Compile Include="ApplicationBase\Presenter.cs" />
|
||||||
<Compile Include="ApplicationBase\PresenterGeneric.cs" />
|
<Compile Include="ApplicationBase\PresenterGeneric.cs" />
|
||||||
|
<Compile Include="Configuration\AppConfig.cs" />
|
||||||
<Compile Include="Configuration\ConfigurationStorage.cs" />
|
<Compile Include="Configuration\ConfigurationStorage.cs" />
|
||||||
|
<Compile Include="Configuration\IAppConfig.cs" />
|
||||||
<Compile Include="Configuration\IThumbnailConfig.cs" />
|
<Compile Include="Configuration\IThumbnailConfig.cs" />
|
||||||
<Compile Include="Configuration\ZoomAnchor.cs" />
|
<Compile Include="Configuration\ZoomAnchor.cs" />
|
||||||
<Compile Include="DwmAPI\DWM_BLURBEHIND.cs" />
|
<Compile Include="DwmAPI\DWM_BLURBEHIND.cs" />
|
||||||
|
|||||||
@@ -31,9 +31,10 @@ namespace EveOPreview
|
|||||||
.RegisterService<IThumbnailViewFactory, ThumbnailViewFactory>()
|
.RegisterService<IThumbnailViewFactory, ThumbnailViewFactory>()
|
||||||
.RegisterService<IThumbnailDescriptionViewFactory, ThumbnailDescriptionViewFactory>()
|
.RegisterService<IThumbnailDescriptionViewFactory, ThumbnailDescriptionViewFactory>()
|
||||||
.RegisterService<IConfigurationStorage, ConfigurationStorage>()
|
.RegisterService<IConfigurationStorage, ConfigurationStorage>()
|
||||||
|
.RegisterInstance<IAppConfig>(new AppConfig())
|
||||||
.RegisterInstance<IThumbnailConfig>(new ThumbnailConfig());
|
.RegisterInstance<IThumbnailConfig>(new ThumbnailConfig());
|
||||||
|
|
||||||
controller.Create<IThumbnailConfig>().ConfigFileName = Program.GetCustomConfigFile(args);
|
controller.Create<IAppConfig>().ConfigFileName = Program.GetCustomConfigFile(args);
|
||||||
|
|
||||||
controller.Run<MainPresenter>();
|
controller.Run<MainPresenter>();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user