1
This commit is contained in:
47
Src/Core/Hotkey/IHotkeyCollection.cs
Normal file
47
Src/Core/Hotkey/IHotkeyCollection.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BITKit.UX.Hotkey
|
||||
{
|
||||
public interface IHotkeyProvider
|
||||
{
|
||||
string Name { get; }
|
||||
string Description { get; }
|
||||
object Data { get; }
|
||||
bool Enabled { get; }
|
||||
Action OnPerform { get; }
|
||||
float HoldDuration => 0;
|
||||
}
|
||||
public struct HotkeyProvider : IHotkeyProvider
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
public object Data { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public Action OnPerform { get; set; }
|
||||
|
||||
public float HoldDuration { get; set; }
|
||||
}
|
||||
public interface IHotkeyCollection
|
||||
{
|
||||
IEnumerable<IHotkeyProvider> Hotkeys { get; }
|
||||
void Register(IHotkeyProvider hotkey);
|
||||
void UnRegister(IHotkeyProvider hotkey);
|
||||
}
|
||||
|
||||
public class HotkeyCollection:IHotkeyCollection
|
||||
{
|
||||
private readonly HashSet<IHotkeyProvider> _hotkeys = new();
|
||||
public IEnumerable<IHotkeyProvider> Hotkeys => _hotkeys;
|
||||
public void Register(IHotkeyProvider hotkey)
|
||||
{
|
||||
_hotkeys.Add(hotkey);
|
||||
}
|
||||
|
||||
public void UnRegister(IHotkeyProvider hotkey)
|
||||
{
|
||||
_hotkeys.Remove(hotkey);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user