public int CompareTo(IAutoDarkModeModule other)
 {
     if (other is null)
     {
         return(0);
     }
     return(other.Priority.CompareTo(Priority));
 }
Ejemplo n.º 2
0
        public void DeregisterModule(string moduleName)
        {
            IAutoDarkModeModule module = Modules.Find(m => m.Name == moduleName);

            if (module != null)
            {
                DeregisterModule(module);
            }
        }
Ejemplo n.º 3
0
 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}");
     }
 }
Ejemplo n.º 4
0
 /// <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}");
     }
 }
Ejemplo n.º 5
0
 /// <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);
        }
Ejemplo n.º 7
0
 /// <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));
         }
     }
 }
Ejemplo n.º 8
0
 public void DeregisterWarden()
 {
     warden = null;
 }
Ejemplo n.º 9
0
 public void RegisterWarden(IAutoDarkModeModule warden)
 {
     this.warden = warden;
 }