Added new settings management
This commit is contained in:
87
App.xaml.cs
87
App.xaml.cs
@@ -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
15
Data/EJaySettings.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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")]
|
||||
Reference in New Issue
Block a user