88 lines
2.3 KiB
C#
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);
|
|
}
|
|
|
|
|
|
}
|