diff --git a/Mystify/Mystify.csproj b/Mystify/Mystify.csproj index da7d086..3155621 100644 --- a/Mystify/Mystify.csproj +++ b/Mystify/Mystify.csproj @@ -25,5 +25,6 @@ + diff --git a/Mystify/Settings/SettingsManager.cs b/Mystify/Settings/SettingsManager.cs index 7b877ca..698f310 100644 --- a/Mystify/Settings/SettingsManager.cs +++ b/Mystify/Settings/SettingsManager.cs @@ -4,8 +4,8 @@ using System; using System.IO; -using System.Xml; -using System.Xml.Serialization; +using Lib.Xml; +using Lib.Xml.Interfaces; using Mystify.Settings.Interfaces; using Mystify.Settings.Xml; @@ -16,34 +16,20 @@ namespace Mystify.Settings private const string SETTINGS_FILE_EXTENSION = "mys"; private readonly string _settingsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mystify", $"Settings.{SETTINGS_FILE_EXTENSION}"); + private readonly IXmlReader _xmlReader; + private readonly IXmlWriter _xmlWriter; + private ISettings? _settings; - public ISettings Settings => _settings ??= Load(); - - public void Save() - { - FileStream file = File.OpenWrite(_settingsFilePath); - - XmlWriter xmlWriter = XmlWriter.Create(file, new XmlWriterSettings {Indent = true}); - XmlSerializer xmlSerializer = new(typeof(XmlSettings)); - - XmlSerializerNamespaces xmlSerializerNamespaces = new(); - xmlSerializerNamespaces.Add("", ""); - - xmlSerializer.Serialize(xmlWriter, Settings, xmlSerializerNamespaces); - } - - private ISettings Load() + public SettingsManager() { - if (!File.Exists(_settingsFilePath)) - return new XmlSettings(); - - FileStream file = File.OpenRead(_settingsFilePath); - - XmlReader xmlReader = XmlReader.Create(file); - XmlSerializer xmlSerializer = new(typeof(XmlSettings)); - - return (XmlSettings?) xmlSerializer.Deserialize(xmlReader) ?? new XmlSettings(); + _xmlReader = new XmlReader(); + _xmlWriter = new XmlWriter(); } + + public ISettings Settings => _settings ??= Load(); + + public void Save() => _xmlWriter.Write(Settings, _settingsFilePath); + private ISettings Load() => _xmlReader.Read(_settingsFilePath); } } \ No newline at end of file