public int CompareTo(IAutoDarkModeModule other) { if (other is null) { return(0); } return(other.Priority.CompareTo(Priority)); }
public void DeregisterModule(string moduleName) { IAutoDarkModeModule module = Modules.Find(m => m.Name == moduleName); if (module != null) { DeregisterModule(module); } }
public void DeregisterModule(IAutoDarkModeModule module) { if (Modules.Contains(module)) { module.Cleanup(); Modules.Remove(Modules.Find(m => m.Name == module.Name)); Logger.Info($"deregistered {module.Name} from timer {Name}"); } }
/// <summary> /// Register a new <see cref="IAutoDarkModeModule" module/> /// </summary> /// <param name="module"></param> public void RegisterModule(IAutoDarkModeModule module) { if (!Modules.Contains(module)) { if (module.FireOnRegistration) { module.Fire(); } Modules.Add(module); Modules.Sort(); Logger.Info($"registered {module.Name} to timer {Name}"); } }
/// <summary> /// Register a new <see cref="IAutoDarkModeModule" module/> /// </summary> /// <param name="module"></param> public void RegisterModule(IAutoDarkModeModule module) { if (!Modules.Contains(module)) { if (module.FireOnRegistration) { module.Fire(); } Modules.Add(module); Modules.Sort(); Logger.Info($"registered {module.Name} to timer {Name}"); } // possible call OnTimedEvent here to reduce wait time after module has been added // maybe counters concurrency mitigation delay }
public bool Equals(IAutoDarkModeModule other) { if (ReferenceEquals(this, other)) { return(true); } if (other is null) { return(false); } if (other.Name == Name) { return(true); } return(false); }
/// <summary> /// Automatically manages the registration and deregistration of modules based on the current configuration state /// </summary> /// <param name="moduleName">unique name of the module to be managed</param> /// <param name="moduleType">Type of a class implementing the <see cref="IAutoDarkModeModule"/> interface</param> /// <param name="fireOnRegistration">Determines whether a module should fire upon registration to a timer</param> /// <param name="condition">condition whether a module should be registered or deregistered</param> private void AutoManageModule(Type moduleType, bool fireOnRegistration, bool condition) { // check if the type impplements the interface for compatibility with a ModuleTimer if (typeof(IAutoDarkModeModule).IsAssignableFrom(moduleType)) { // register a module if the condition has been set to true (should be predetermined in Poll() before calling this method if (condition) { IAutoDarkModeModule module = Activator.CreateInstance(moduleType, moduleType.Name, fireOnRegistration) as IAutoDarkModeModule; var timer = Timers.Find(t => t.Name == module.TimerAffinity); if (timer != null) { timer.RegisterModule(module); } } else { Timers.ForEach(t => t.DeregisterModule(moduleType.Name)); } } }
public void DeregisterWarden() { warden = null; }
public void RegisterWarden(IAutoDarkModeModule warden) { this.warden = warden; }