using Avalar.Models.Interfaces; using ReactiveUI; using System; using System.ComponentModel; using System.Threading.Tasks; namespace Avalar.ViewModels.Settings { public class SettingsViewModel : ReactiveObject { private readonly ISettingsModel m_SettingsModel; public SettingsViewModel(ISettingsModel settingsModel) { m_SettingsModel = settingsModel; PropertyChanged += OnPropertyChanged; } private async void OnPropertyChanged(object sender, PropertyChangedEventArgs e) { if(e.PropertyName == nameof(Width)) { await Task.Run(() => m_SettingsModel.SetWidth(Width)).ConfigureAwait(false); } if (e.PropertyName == nameof(Height)) { await Task.Run(() => m_SettingsModel.SetHeight(Height)).ConfigureAwait(false); } if (e.PropertyName == nameof(BrightnessDelta)) { await Task.Run(() => m_SettingsModel.SetBrightnessDelta(BrightnessDelta)).ConfigureAwait(false); } } private uint m_Width; public uint Width { get => m_Width; set => this.RaiseAndSetIfChanged(ref m_Width, value); } private uint m_Height; public uint Height { get => m_Height; set => this.RaiseAndSetIfChanged(ref m_Height, value); } private int m_BrightnessDelta; public int BrightnessDelta { get => m_BrightnessDelta; set => this.RaiseAndSetIfChanged(ref m_BrightnessDelta, value); } } }