Added new settings management

This commit is contained in:
Andre Beging
2019-01-06 15:31:09 +01:00
parent b891327b35
commit bc1a0e2118
3 changed files with 102 additions and 4 deletions

View File

@@ -1,5 +1,9 @@
using System.Data.SqlClient;
using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Xml;
using System.Xml.Serialization;
using DebtMgr.Data;
using DebtMgr.ViewModel;
using SQLite.Net;
@@ -11,6 +15,20 @@ namespace DebtMgr
/// </summary>
public partial class App : Application
{
#region Private Properties
private static string _settingsPath;
private static string _settingsFileName;
#endregion
public App()
{
_settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"eJay", "config");
_settingsFileName = "eJay.xml";
}
#region Locator
private static ViewModelLocator _locator;
@@ -21,7 +39,7 @@ namespace DebtMgr
#region Database
private static SQLiteConnection _database;
public static SQLiteConnection Database => _database ?? (_database = new Database(DebtMgr.Properties.Settings.Default.Database));
public static SQLiteConnection Database => _database ?? (_database = new Database(Settings.Database));
#endregion
@@ -39,5 +57,70 @@ namespace DebtMgr
}
#endregion
#region Settings
private static EJaySettings _settings;
public static EJaySettings Settings
{
get
{
if(_settings == null)
_settings = LoadSettings();
return _settings;
}
}
#endregion
#region SaveSettings()
////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary> Saves the settings. </summary>
/// <remarks> Andre Beging, 06.01.2019. </remarks>
////////////////////////////////////////////////////////////////////////////////////////////////////
public static void SaveSettings()
{
Directory.CreateDirectory(_settingsPath);
if (_settings == null) _settings = new EJaySettings();
using (var streamWriter = new StreamWriter(Path.Combine(_settingsPath, _settingsFileName)))
{
using (var xmlWriter = XmlWriter.Create(streamWriter))
{
var serializer = new XmlSerializer(typeof(EJaySettings));
serializer.Serialize(xmlWriter, _settings);
streamWriter.Flush();
}
}
}
#endregion
#region LoadSettings()
////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary> Loads the settings. </summary>
/// <remarks> Andre Beging, 06.01.2019. </remarks>
/// <returns> The settings. </returns>
////////////////////////////////////////////////////////////////////////////////////////////////////
private static EJaySettings LoadSettings()
{
var targetFile = Path.Combine(_settingsPath, _settingsFileName);
if (File.Exists(targetFile))
{
using (var stream = File.OpenRead(targetFile))
{
var serializer = new XmlSerializer(typeof(EJaySettings));
return serializer.Deserialize(stream) as EJaySettings;
}
}
return new EJaySettings();
}
#endregion
}
}

15
Data/EJaySettings.cs Normal file
View File

@@ -0,0 +1,15 @@
namespace DebtMgr.Data
{
public class EJaySettings
{
public string Database { get; set; }
public string TelegramPath { get; set; }
public EJaySettings()
{
Database = string.Empty;
TelegramPath = string.Empty;
}
}
}

View File

@@ -49,5 +49,5 @@ using System.Windows;
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("1.0.0")]