using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; using System.Xml.Serialization; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.PMR.Diagnostics; using Tango.SharedUI.Helpers; namespace Tango.MachineStudio.Technician.TechItems { [TechItem(10, false)] public class ValveItem : TechItem { /// /// Occurs when the user has changed the current value. /// public event EventHandler StateChanged; /// /// Gets or sets the set command. /// [XmlIgnore] public RelayCommand SetCommand { get; set; } private TechValve _techValve; /// /// Gets or sets the db tech item. /// [XmlIgnore] public TechValve TechValve { get { return _techValve; } set { _techValve = value; RaisePropertyChangedAuto(); TechName = _techValve != null ? _techValve.Description : null; ItemGuid = value != null ? value.Guid : null; if (_techValve != null) { State = (ValveStateCode)Enum.Parse(typeof(ValveStateCode), _techValve.State1.Replace(" ", ""), true); } } } private ValveStateCode _state; /// /// Gets or sets a value indicating whether this is on. /// [XmlIgnore] public ValveStateCode State { get { return _state; } set { _state = value; RaisePropertyChangedAuto(); } } private ValveStateCode _effectiveState; /// /// Gets or sets the effective value received from the embedded device. /// [XmlIgnore] public ValveStateCode EffectiveState { get { return _effectiveState; } set { if (_effectiveState != value) { _effectiveState = value; RaisePropertyChangedAuto(); _state = value; RaisePropertyChanged(nameof(State)); } } } /// /// Initializes a new instance of the class. /// public ValveItem() : base() { Name = "Valve Controller"; Description = "Valve Controller"; Image = ResourceHelper.GetImageFromResources("Images/valve.png"); Color = Colors.White; SetCommand = new RelayCommand((x) => { State = (ValveStateCode)Enum.Parse(typeof(ValveStateCode), x.Replace(" ", ""), true); StateChanged?.Invoke(this, State); }); } /// /// Initializes a new instance of the class. /// /// The db tech item. public ValveItem(TechValve techValve) : this() { TechValve = techValve; } /// /// Clones this instance. /// /// public override TechItem Clone() { ValveItem cloned = base.Clone() as ValveItem; cloned.TechValve = TechValve; cloned.State = State; return cloned; } } }