public void SetAutoMode(AutoModeType modeType) { _timer.Stop(); _autoMode = modeType switch { AutoModeType.Disable => (IAutoMode)null, AutoModeType.ForegroundMode => new ForegroundMode(), AutoModeType.BlacklistMode => new AutoMode(_coreInvoker.UserSettings), AutoModeType.WhitelistMode => new AutoMode(_coreInvoker.UserSettings), _ => throw new ArgumentOutOfRangeException(nameof(modeType), modeType, null) }; _timer.Start(); }
public TaskbarController() { // Initialize the native method. Initialization(); // Load AutoMode as fast as possible. switch (Settings.ModeType) { case AutoModeType.Disabled: #if DEBUG _autoMode = new DumbMode(); #endif break; case AutoModeType.ForegroundMode: _autoMode = new ForegroundMode(); break; case AutoModeType.ClassicAutoMode: case AutoModeType.ClassicAdaptiveMode: case AutoModeType.WhitelistMode: case AutoModeType.BlacklistMode: _autoMode = new AutoMode(); break; default: #if DEBUG throw new ArgumentOutOfRangeException(); #else Settings.ModeType = AutoModeType.Disabled; #endif } // timer is running on UI thread. _timer = new Timer(375); // if AutoMode is Enabled, then run it every 375 milliseconds. _timer.Elapsed += Timer_Elapsed; _timer.Start(); Application.ApplicationExit += (s, e) => { _timer.Dispose(); _container.Dispose(); }; // Start Settings Tray _tray = new IconTray(_container); }
private void SetAutoMode(AutoModeType modeType) { _autoModeTimer.Stop(); _autoMode = modeType switch { AutoModeType.Disable => new DisableMode(_coreInvoker.UserSettings), AutoModeType.AutoHideApiMode => new AutoHideApiMode(_coreInvoker.UserSettings), AutoModeType.ForegroundMode => new ForegroundMode(_coreInvoker.UserSettings), AutoModeType.BlockListMode => new BlockListMode(_coreInvoker.UserSettings), AutoModeType.AllowlistMode => new AllowlistMode(_coreInvoker.UserSettings), _ => throw new ArgumentOutOfRangeException(nameof(modeType), modeType, null) }; if (_autoMode != null) { _autoModeTimer.Start(); } else { ResetState(); } }