using NetDaemonInterface; using System; using System.ComponentModel; namespace NetDaemonInterface; public class EntityEvents : ViewModelBase { private int clickCnt; private System.Timers.Timer timer; public EntityEvents() { Init(); } public EntityEvents(string varName) { Init(); VarName = varName; } private void Init() { PropertyChanged += CounterClass_PropertyChanged; timer = new System.Timers.Timer(500); timer.Elapsed += Timer_Elapsed; timer.AutoReset = false; } private void CounterClass_PropertyChanged(object? sender, PropertyChangedEventArgs e) { if (clickCnt == 0) { timer.Start(); } trigger = false; clickCnt++; } private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e) { timer.Stop(); switch (clickCnt) { case 1: if (Click is not null) Click(this, e); break; case 2: if (DoubleClick is not null) DoubleClick(this, e); break; case 3: if (TribleClick is not null) TribleClick(this, e); break; } clickCnt = 0; } public event EventHandler? Click; public event EventHandler? DoubleClick; public event EventHandler? TribleClick; private bool trigger; public bool Trigger { get { return trigger; } set { if (trigger != value) { trigger = value; OnPropertyChanged(); } } } private string varName; public string VarName { get { return varName; } set { if (varName != value) { varName = value; OnPropertyChanged(); timer.Stop(); clickCnt = 0; } } } }