Support for launch action and WMC HID events.
3 using System.Collections.Generic;
4 using System.ComponentModel;
6 using System.Reflection;
7 using System.Runtime.Serialization;
11 namespace SharpLib.Ear
14 /// Event Action Router (Ear) is a generic and extensible framework allowing users to execute actions in response to events.
15 /// Users can implement their own events and actions.
18 [KnownType("DerivedTypes")]
22 /// Our events instances.
25 public List<Event> Events;
36 /// Executes after internalization took place.
42 Events = new List<Event>();
48 /// Trigger the given event.
50 /// <param name="aEventType"></param>
51 public void TriggerEvent<T>() where T: class
53 //Only trigger enabled events matching the desired type
54 foreach (Event e in Events.Where(e => e.GetType() == typeof(T) && e.Enabled))
61 /// Trigger the given event.
63 /// <param name="aEventType"></param>
64 public void TriggerEvent<T>(T aEvent) where T : class
66 //Only trigger events matching the desired type
67 foreach (Event e in Events.Where(e => e.Equals(aEvent) && e.Enabled))
75 /// Remove the specified action from the event it belongs too.
77 /// <param name="aAction"></param>
78 public void RemoveAction(Action aAction)
80 foreach (Event e in Events)
82 if (e.Actions.Remove(aAction))
84 //We removed our action, we are done here.
91 /// Allow extending our data contract.
92 /// See KnownType above.
94 /// <returns></returns>
95 private static IEnumerable<Type> DerivedTypes()
97 return SharpLib.Utils.Reflection.GetDerivedTypes<Manager>();