Files
infineon_cs_hmi/uniper_hmi/UniperHMI/Common/MediaContainerVm.cs

88 lines
2.3 KiB
C#

using CommunityToolkit.Mvvm.ComponentModel;
using System.ComponentModel.DataAnnotations;
using TwinCAT.TypeSystem;
using Heisig.HMI.AdsManager;
using HMIToolkit;
namespace Common;
public sealed partial class MediaContainerVm : ObservableValidator, IDisposable
{
private IAdsManager? _adsManager;
private string? _variableName;
[ObservableProperty] private string? sName = "No Name";
[ObservableProperty] private bool empty = false;
[ObservableProperty] private bool full = false;
[ObservableProperty] private bool overload = false;
[ObservableProperty] private BinaryValveControlVM? fillValveControlVm;
[ObservableProperty] private BinaryValveControlVM? drainValveControlVm;
[ObservableProperty] private BinaryValveControlVM? pumpValveControlVm;
public MediaContainerVm()
{
sName = "No Name";
FillValveControlVm = new();
DrainValveControlVm = new();
PumpValveControlVm = new();
}
public MediaContainerVm(IAdsManager adsManager, string variableName)
{
_adsManager = adsManager;
_variableName = variableName;
sName = "No Name";
FillValveControlVm = new BinaryValveControlVM(_adsManager, _variableName + ".stFillingValve");
DrainValveControlVm = new BinaryValveControlVM(_adsManager, _variableName + ".stDrainValve");
PumpValveControlVm = new BinaryValveControlVM(_adsManager, _variableName + ".stPumpValve");
_adsManager.Register(_variableName + ".xEmpty", EmptyChanged);
_adsManager.Register(_variableName + ".xFull", FullChanged);
_adsManager.Register(_variableName + ".xOverload", OverloadChanged);
}
private void EmptyChanged(object? sender, ValueChangedEventArgs e)
{
Empty = (bool)e.Value;
}
private void FullChanged(object? sender, ValueChangedEventArgs e)
{
Full = (bool)e.Value;
}
private void OverloadChanged(object? sender, ValueChangedEventArgs e)
{
Overload = (bool)e.Value;
}
public void Dispose()
{
FillValveControlVm?.Dispose();
DrainValveControlVm?.Dispose();
PumpValveControlVm?.Dispose();
FillValveControlVm = null;
DrainValveControlVm = null;
PumpValveControlVm = null;
_adsManager?.Deregister(_variableName + ".xEmpty", EmptyChanged);
_adsManager?.Deregister(_variableName + ".xFull", FullChanged);
_adsManager?.Deregister(_variableName + ".xOverload", OverloadChanged);
}
}