using Aurora; using Aurora.Api; using Aurora.Api.Manager; using Aurora.View; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace AuroraDeviceCommon.Views { public abstract class BaseDeviceViewModel : NotifyPropertyChangedBase { public ICommand CMD_VisibleChanged { get; } public ICommand CMD_SaveConfigs { get; } public string deviceId; public string DeviceId { get => deviceId; set => SetProperty(ref deviceId, value); } private bool isActivated = false; public bool IsActivated { get => isActivated; set { if (isActivated != value) { isActivated = value; HandleActivationChange(value); NotifyPropertyChanged("IsActivated"); } } } public IDeviceConfig DevConfig => _Device == null ? null : DeviceManager.GetDeviceConfig(_Device.DeviceId); private readonly IAuroraEnvironment Aurora; private readonly IDeviceManager DeviceManager; protected readonly Device _Device; public BaseDeviceViewModel(IAuroraEnvironment aurora, Device device) { Aurora = aurora; DeviceManager = aurora.DeviceManager; _Device = device; DeviceId = _Device.DeviceId; isActivated = _Device.IsActivated; CMD_SaveConfigs = new DelegateCommand(SaveConfigs); CMD_VisibleChanged = new DelegateCommand(VisibleChanged); } protected virtual void HandleActivationChange(bool value) { _ = value ? _Device.Activate() : _Device.Deactivate(); isActivated = _Device.IsActivated; } protected void SaveConfigs(object obj) { if (_Device == null) { return; } if (_Device.IsActivated) { return; } DeviceManager.SaveDeviceConfig(_Device.DeviceId); } protected abstract void VisibleChanged(object obj); } }