convert VB to C#

This commit is contained in:
2020-09-24 11:21:53 +02:00
parent 64277916cd
commit fecbeb4659
320 changed files with 17755 additions and 10320 deletions

View File

@@ -0,0 +1,161 @@
using System;
using global::System.IO;
using global::Newtonsoft.Json.Linq;
namespace Pilz.Configuration
{
public sealed class SettingsManager<T> : ISettingsManager where T : SettingsBase
{
public event EventHandler AutoSavingSettings;
public event EventHandler SavingSettings;
public event EventHandler SavedSettings;
private T defaultInstance = null;
private bool enableAutoSave = false;
private bool addedHandler = false;
public string ConfigFilePath { get; set; }
public bool AutoSaveOnExit
{
get
{
return enableAutoSave;
}
set
{
if (enableAutoSave != value)
{
enableAutoSave = value;
switch (enableAutoSave)
{
case true:
{
if (!addedHandler)
{
AddAutoSaveHandler();
}
break;
}
case false:
{
if (addedHandler)
{
RemoveAutoSaveHandler();
}
break;
}
}
}
}
}
private void AddAutoSaveHandler()
{
System.Windows.Forms.Application.ApplicationExit += AutoSaveSettingsOnExit;
addedHandler = true;
}
private void RemoveAutoSaveHandler()
{
System.Windows.Forms.Application.ApplicationExit -= AutoSaveSettingsOnExit;
addedHandler = false;
}
public T Instance
{
get
{
if (defaultInstance is null)
{
Load();
}
return defaultInstance;
}
}
public SettingsManager()
{
ConfigFilePath = "";
AutoSaveOnExit = false;
}
public SettingsManager(string fileName, bool autoSaveOnExit)
{
ConfigFilePath = fileName;
AutoSaveOnExit = autoSaveOnExit;
}
private void AutoSaveSettingsOnExit(object sender, EventArgs e)
{
AutoSavingSettings?.Invoke(this, new EventArgs());
Save();
}
public void Save()
{
if (!string.IsNullOrEmpty(ConfigFilePath) && defaultInstance is object)
{
SavePrivate();
}
}
public void Load()
{
if (!string.IsNullOrEmpty(ConfigFilePath) && File.Exists(ConfigFilePath))
{
LoadPrivate();
}
else
{
CreateNewInstance();
}
if (defaultInstance is object)
{
defaultInstance._settingsManager = this;
}
}
public void Reset()
{
Instance.ResetValues();
}
private void CreateNewInstance()
{
var ctor = typeof(T).GetConstructor(Array.Empty<Type>());
if (ctor is object)
{
defaultInstance = (T)ctor.Invoke(Array.Empty<object>());
defaultInstance.ResetValues();
}
else
{
throw new Exception("The base type has no constructor with no parameters.");
}
}
private void LoadPrivate()
{
defaultInstance = JObject.Parse(File.ReadAllText(ConfigFilePath)).ToObject<T>();
}
private void SavePrivate()
{
SavingSettings?.Invoke(this, new EventArgs());
var obj = JObject.FromObject(defaultInstance);
if (obj is object)
{
File.WriteAllText(ConfigFilePath, obj.ToString());
}
SavedSettings?.Invoke(this, new EventArgs());
}
}
}