Filtration/Filtration.ThemeEditor/Services/ThemePersistenceService.cs

49 lines
1.3 KiB
C#
Raw Normal View History

2015-07-02 12:57:43 -04:00
using System.IO;
2015-07-25 14:02:42 -04:00
using System.Threading.Tasks;
2015-07-02 12:57:43 -04:00
using System.Xml.Serialization;
using Filtration.ObjectModel.ThemeEditor;
namespace Filtration.ThemeEditor.Services
{
internal interface IThemePersistenceService
{
2015-07-25 14:02:42 -04:00
Task<Theme> LoadThemeAsync(string filePath);
Task SaveThemeAsync(Theme theme, string filePath);
2015-07-02 12:57:43 -04:00
}
internal class ThemePersistenceService : IThemePersistenceService
{
2015-07-25 14:02:42 -04:00
public async Task<Theme> LoadThemeAsync(string filePath)
2015-07-02 12:57:43 -04:00
{
2015-07-25 14:02:42 -04:00
Theme loadedTheme = null;
2015-07-02 12:57:43 -04:00
2015-07-25 14:02:42 -04:00
await Task.Run(() =>
2015-07-02 12:57:43 -04:00
{
2015-07-25 14:02:42 -04:00
var xmlSerializer = new XmlSerializer(typeof (Theme));
using (Stream reader = new FileStream(filePath, FileMode.Open))
{
loadedTheme = (Theme) xmlSerializer.Deserialize(reader);
}
loadedTheme.FilePath = filePath;
});
2015-07-02 12:57:43 -04:00
return loadedTheme;
}
2015-07-25 14:02:42 -04:00
public async Task SaveThemeAsync(Theme theme, string filePath)
2015-07-02 12:57:43 -04:00
{
2015-07-25 14:02:42 -04:00
await Task.Run(() =>
2015-07-02 12:57:43 -04:00
{
2015-07-25 14:02:42 -04:00
var xmlSerializer = new XmlSerializer(typeof (Theme));
using (Stream writer = new FileStream(filePath, FileMode.Create))
{
xmlSerializer.Serialize(writer, theme);
}
});
2015-07-02 12:57:43 -04:00
}
}
}