75 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|