2026-01-26 14:51:28 +09:00

75 lines
2.2 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
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);
}
}