Files
HA.NetDeamon/NetDaemonApps/NetDeamonInterface/EntityEvents.cs
Stephan Maier b9eb4cf019 Neuerstellung
2023-08-29 11:37:30 +02:00

105 lines
2.0 KiB
C#

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;
}
}
}
}