105 lines
2.0 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|