diff --git a/App.xaml.cs b/App.xaml.cs index 6df46e2..6b3a647 100644 --- a/App.xaml.cs +++ b/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 /// 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() + + //////////////////////////////////////////////////////////////////////////////////////////////////// + /// Saves the settings. + /// Andre Beging, 06.01.2019. + //////////////////////////////////////////////////////////////////////////////////////////////////// + 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() + + //////////////////////////////////////////////////////////////////////////////////////////////////// + /// Loads the settings. + /// Andre Beging, 06.01.2019. + /// The settings. + //////////////////////////////////////////////////////////////////////////////////////////////////// + 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 } } diff --git a/Data/EJaySettings.cs b/Data/EJaySettings.cs new file mode 100644 index 0000000..9d574a9 --- /dev/null +++ b/Data/EJaySettings.cs @@ -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; + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index b177b26..61c55bb 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -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")] \ No newline at end of file