49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using System.Xml.Serialization;
|
|
using Filtration.ObjectModel.ThemeEditor;
|
|
|
|
namespace Filtration.ThemeEditor.Services
|
|
{
|
|
internal interface IThemePersistenceService
|
|
{
|
|
Task<Theme> LoadThemeAsync(string filePath);
|
|
Task SaveThemeAsync(Theme theme, string filePath);
|
|
}
|
|
|
|
internal class ThemePersistenceService : IThemePersistenceService
|
|
{
|
|
public async Task<Theme> LoadThemeAsync(string filePath)
|
|
{
|
|
Theme loadedTheme = null;
|
|
|
|
await Task.Run(() =>
|
|
{
|
|
var xmlSerializer = new XmlSerializer(typeof (Theme));
|
|
|
|
using (Stream reader = new FileStream(filePath, FileMode.Open))
|
|
{
|
|
loadedTheme = (Theme) xmlSerializer.Deserialize(reader);
|
|
}
|
|
|
|
loadedTheme.FilePath = filePath;
|
|
});
|
|
|
|
return loadedTheme;
|
|
}
|
|
|
|
public async Task SaveThemeAsync(Theme theme, string filePath)
|
|
{
|
|
await Task.Run(() =>
|
|
{
|
|
var xmlSerializer = new XmlSerializer(typeof (Theme));
|
|
|
|
using (Stream writer = new FileStream(filePath, FileMode.Create))
|
|
{
|
|
xmlSerializer.Serialize(writer, theme);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|