/// <summary> /// Loads the last active effect and starts the program /// </summary> public void EnableProgram() { Logger.Debug("Enabling program"); ProgramEnabled = true; LoopManager.StartAsync(); RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled)); }
public MainManager(ILogger logger, LoopManager loopManager, DeviceManager deviceManager, EffectManager effectManager, ProfileManager profileManager, PipeServer pipeServer) { Logger = logger; LoopManager = loopManager; DeviceManager = deviceManager; EffectManager = effectManager; ProfileManager = profileManager; PipeServer = pipeServer; _processTimer = new Timer(1000); _processTimer.Elapsed += ScanProcesses; _processTimer.Start(); ProgramEnabled = false; Running = false; // Create and start the web server GameStateWebServer = new GameStateWebServer(logger); GameStateWebServer.Start(); // Start the named pipe PipeServer.Start("artemis"); // Start the update task var updateTask = new Task(Updater.UpdateApp); updateTask.Start(); Logger.Info("Intialized MainManager"); Logger.Info($"Artemis version {Assembly.GetExecutingAssembly().GetName().Version} is ready!"); }
public MainManager(ILogger logger, LoopManager loopManager, DeviceManager deviceManager, ModuleManager moduleManager, PreviewManager previewManager, MigrationManager migrationManager, PipeServer pipeServer, GameStateWebServer gameStateWebServer) { _migrationManager = migrationManager; Logger = logger; LoopManager = loopManager; DeviceManager = deviceManager; ModuleManager = moduleManager; PreviewManager = previewManager; PipeServer = pipeServer; _processTimer = new Timer(1000); _processTimer.Elapsed += ScanProcesses; _processTimer.Start(); ProgramEnabled = false; // Create and start the web server GameStateWebServer = gameStateWebServer; GameStateWebServer.Start(); // Start the named pipe PipeServer.Start("artemis"); // Listen for power mode changes SystemEvents.PowerModeChanged += OnPowerChange; Logger.Info("Intialized MainManager"); Logger.Info($"Artemis version {Assembly.GetExecutingAssembly().GetName().Version} is ready!"); }
/// <summary> /// Stops the program /// </summary> public void DisableProgram() { Logger.Debug("Disabling program"); LoopManager.Stop(); ProgramEnabled = false; _events.PublishOnUIThread(new ToggleEnabled(ProgramEnabled)); }
public MainManager(IEventAggregator events, ILogger logger, LoopManager loopManager, DeviceManager deviceManager, EffectManager effectManager, ProfileManager profileManager) { _events = events; Logger = logger; LoopManager = loopManager; DeviceManager = deviceManager; EffectManager = effectManager; ProfileManager = profileManager; _processTimer = new Timer(1000); _processTimer.Elapsed += ScanProcesses; _processTimer.Start(); ProgramEnabled = false; Running = false; // TODO: Dependency inject utilities? KeyboardHook = new KeyboardHook(); // Create and start the web server GameStateWebServer = new GameStateWebServer(); GameStateWebServer.Start(); // Start the named pipe PipeServer = new PipeServer(); PipeServer.Start("artemis"); Logger.Info("Intialized MainManager"); }
/// <summary> /// Loads the last active effect and starts the program /// </summary> public void EnableProgram() { Logger.Debug("Enabling program"); ProgramEnabled = true; LoopManager.StartAsync(); _events.PublishOnUIThread(new ToggleEnabled(ProgramEnabled)); }
/// <summary> /// Stops the program /// </summary> public void DisableProgram() { Logger.Debug("Disabling program"); LoopManager.Stop(); ProgramEnabled = false; RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled)); }
/// <summary> /// Loads the last active effect and starts the program /// </summary> public async void EnableProgram() { Logger.Debug("Enabling program"); ProgramEnabled = true; await LoopManager.StartAsync(); _migrationManager.MigrateProfiles(); RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled)); }
public void Dispose() { Logger.Debug("Shutting down MainManager"); _processTimer?.Stop(); _processTimer?.Dispose(); LoopManager?.Stop(); ModuleManager?.ActiveModule?.Dispose(); GameStateWebServer?.Stop(); PipeServer?.Stop(); }
private void DeviceManagerOnOnKeyboardChanged(object sender, KeyboardChangedEventArgs e) { _deviceManager.OnKeyboardChanged -= DeviceManagerOnOnKeyboardChanged; _logger.Debug("Resuming module change"); var module = _waitEffect; _waitEffect = null; var loopManager = _waitLoopManager; _waitLoopManager = null; ChangeActiveModule(module, loopManager); }
/// <summary> /// Stops the program /// </summary> public void DisableProgram() { Logger.Debug("Disabling program"); foreach (var overlayModule in ModuleManager.OverlayModules) { if (overlayModule.Settings.IsEnabled) { overlayModule.Dispose(); } } LoopManager.Stop(); ProgramEnabled = false; RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled)); }
private void DeviceManagerOnOnKeyboardChangedEvent(object sender, KeyboardChangedEventArgs e) { _deviceManager.OnKeyboardChangedEvent -= DeviceManagerOnOnKeyboardChangedEvent; _logger.Debug("Resuming effect change"); var effect = _waitEffect; _waitEffect = null; var loopManager = _waitLoopManager; _waitLoopManager = null; ChangeEffect(effect, loopManager); }
public ProfileManager(ILogger logger, EffectManager effectManager, DeviceManager deviceManager, LoopManager loopManager) { _logger = logger; _effectManager = effectManager; _deviceManager = deviceManager; _loopManager = loopManager; _generalSettings = SettingsProvider.Load<GeneralSettings>(); GameViewModels = new List<GameViewModel>(); var profilePreviewTimer = new Timer(500); profilePreviewTimer.Elapsed += SetupProfilePreview; profilePreviewTimer.Start(); _logger.Info("Intialized ProfileManager"); }
public ProfileManager(ILogger logger, EffectManager effectManager, DeviceManager deviceManager, LoopManager loopManager) { _logger = logger; _effectManager = effectManager; _deviceManager = deviceManager; _loopManager = loopManager; GameViewModels = new List <GameViewModel>(); var profilePreviewTimer = new Timer(500); profilePreviewTimer.Elapsed += SetupProfilePreview; profilePreviewTimer.Start(); _logger.Info("Intialized ProfileManager"); }
public PreviewManager(ILogger logger, ModuleManager moduleManager, DeviceManager deviceManager, LoopManager loopManager) { _logger = logger; _moduleManager = moduleManager; _deviceManager = deviceManager; _loopManager = loopManager; _generalSettings = SettingsProvider.Load <GeneralSettings>(); PreviewViewModules = new List <ModuleViewModel>(); var profilePreviewTimer = new Timer(500); profilePreviewTimer.Elapsed += SetupProfilePreview; profilePreviewTimer.Start(); _logger.Info("Intialized PreviewManager"); }
/// <summary> /// Disables the current effect and changes it to the provided effect. /// </summary> /// <param name="effectModel">The effect to activate</param> /// <param name="loopManager">Optionally pass the LoopManager to automatically start it, if it's not running.</param> public void ChangeEffect(EffectModel effectModel, LoopManager loopManager = null) { if (effectModel == null) { throw new ArgumentNullException(nameof(effectModel)); } if (effectModel is OverlayModel) { throw new ArgumentException("Can't set an Overlay effect as the active effect"); } if (_deviceManager.ActiveKeyboard == null) { _deviceManager.EnableLastKeyboard(); } // If still null, no last keyboard, so stop. if (_deviceManager.ActiveKeyboard == null) { _logger.Debug("Cancelling effect change, no LastKeyboard"); return; } // Game models are only used if they are enabled var gameModel = effectModel as GameModel; if (gameModel != null) { if (!gameModel.Enabled) { _logger.Debug("Cancelling effect change, provided game not enabled"); return; } } var wasNull = false; if (ActiveEffect == null) { wasNull = true; ActiveEffect = effectModel; } lock (ActiveEffect) { if (!wasNull) { ActiveEffect.Dispose(); } ActiveEffect = effectModel; ActiveEffect.Enable(); if (!ActiveEffect.Initialized) { _logger.Debug("Cancelling effect change, couldn't initialize the effect ({0})", effectModel.Name); ActiveEffect = null; return; } } if (loopManager != null && !loopManager.Running) { _logger.Debug("Starting LoopManager for effect change"); loopManager.StartAsync(); } _logger.Debug("Changed active effect to: {0}", effectModel.Name); if (ActiveEffect is GameModel || ActiveEffect is ProfilePreviewModel) { return; } // Non-game effects are stored as the new LastEffect. General.Default.LastEffect = ActiveEffect?.Name; General.Default.Save(); }
/// <summary> /// Disables the current effect and changes it to the provided effect. /// </summary> /// <param name="effectModel">The effect to activate</param> /// <param name="loopManager">Optionally pass the LoopManager to automatically start it, if it's not running.</param> public void ChangeEffect(EffectModel effectModel, LoopManager loopManager = null) { if (_waitEffect != null) { _logger.Debug("Stopping effect because a change is already queued"); return; } if (effectModel == null) throw new ArgumentNullException(nameof(effectModel)); if (effectModel is OverlayModel) throw new ArgumentException("Can't set an Overlay effect as the active effect"); if (_deviceManager.ActiveKeyboard == null) { _logger.Debug("Stopping effect change until keyboard is enabled"); _waitEffect = effectModel; _waitLoopManager = loopManager; _deviceManager.OnKeyboardChangedEvent += DeviceManagerOnOnKeyboardChangedEvent; _deviceManager.EnableLastKeyboard(); return; } // Game models are only used if they are enabled var gameModel = effectModel as GameModel; if (gameModel != null) if (!gameModel.Enabled) { _logger.Debug("Cancelling effect change, provided game not enabled"); return; } var wasNull = false; if (ActiveEffect == null) { wasNull = true; ActiveEffect = effectModel; } lock (ActiveEffect) { if (!wasNull) ActiveEffect.Dispose(); ActiveEffect = effectModel; ActiveEffect.Enable(); if (!ActiveEffect.Initialized) { _logger.Debug("Cancelling effect change, couldn't initialize the effect ({0})", effectModel.Name); ActiveEffect = null; return; } } if (loopManager != null && !loopManager.Running) { _logger.Debug("Starting LoopManager for effect change"); loopManager.StartAsync(); } _logger.Debug("Changed active effect to: {0}", effectModel.Name); if (ActiveEffect is GameModel || ActiveEffect is ProfilePreviewModel) return; // Non-game effects are stored as the new LastEffect. _generalSettings.LastEffect = ActiveEffect?.Name; _generalSettings.Save(); }
/// <summary> /// Disables the current module and changes it to the provided module. /// </summary> /// <param name="moduleModel">The module to activate</param> /// <param name="loopManager">Optionally pass the LoopManager to automatically start it, if it's not running.</param> /// <param name="storeAsLast">Whether or not to store this effect as the last effect</param> public void ChangeActiveModule(ModuleModel moduleModel, LoopManager loopManager = null, bool storeAsLast = true) { if (_waitEffect != null) { _logger.Debug("Stopping module change because a change is already queued"); return; } if (moduleModel == null) { throw new ArgumentNullException(nameof(moduleModel)); } if (_deviceManager.ActiveKeyboard == null) { _logger.Debug("Stopping module change until keyboard is enabled"); _waitEffect = moduleModel; _waitLoopManager = loopManager; _deviceManager.OnKeyboardChanged += DeviceManagerOnOnKeyboardChanged; _deviceManager.EnableLastKeyboard(); return; } // Process bound modules are only used if they are enabled if (moduleModel.Settings != null && !moduleModel.Settings.IsEnabled && moduleModel.IsBoundToProcess) { _logger.Debug("Cancelling module change, provided module is process bound and not enabled"); return; } var wasNull = false; if (ActiveModule == null) { wasNull = true; ActiveModule = moduleModel; } lock (ActiveModule) { if (!wasNull) { ActiveModule.Dispose(); } lock (moduleModel) { ActiveModule = moduleModel; ActiveModule.Enable(); if (!ActiveModule.IsInitialized) { _logger.Debug("Cancelling module change, couldn't initialize the module ({0})", moduleModel.Name); ActiveModule = null; return; } } } if (loopManager != null && !loopManager.Running) { _logger.Debug("Starting LoopManager for module change"); loopManager.StartAsync(); } if (!ActiveModule.IsBoundToProcess && !ActiveModule.IsOverlay && storeAsLast) { _generalSettings.LastModule = ActiveModule?.Name; _generalSettings.Save(); } _logger.Debug("Changed active module to: {0}", moduleModel.Name); RaiseEffectChangedEvent(new ModuleChangedEventArgs(moduleModel)); }
/// <summary> /// Disables the current effect and changes it to the provided effect. /// </summary> /// <param name="effectModel">The effect to activate</param> /// <param name="loopManager">Optionally pass the LoopManager to automatically start it, if it's not running.</param> public void ChangeEffect(EffectModel effectModel, LoopManager loopManager = null) { if (_waitEffect != null) { _logger.Debug("Stopping effect because a change is already queued"); return; } if (effectModel == null) { throw new ArgumentNullException(nameof(effectModel)); } if (effectModel is OverlayModel) { throw new ArgumentException("Can't set an Overlay effect as the active effect"); } if (_deviceManager.ActiveKeyboard == null) { _logger.Debug("Stopping effect change until keyboard is enabled"); _waitEffect = effectModel; _waitLoopManager = loopManager; _deviceManager.OnKeyboardChangedEvent += DeviceManagerOnOnKeyboardChangedEvent; _deviceManager.EnableLastKeyboard(); return; } // Game models are only used if they are enabled var gameModel = effectModel as GameModel; if (gameModel != null) { if (!gameModel.Enabled) { _logger.Debug("Cancelling effect change, provided game not enabled"); return; } } var wasNull = false; if (ActiveEffect == null) { wasNull = true; ActiveEffect = effectModel; } lock (ActiveEffect) { if (!wasNull) { ActiveEffect.Dispose(); } ActiveEffect = effectModel; ActiveEffect.Enable(); if (!ActiveEffect.Initialized) { _logger.Debug("Cancelling effect change, couldn't initialize the effect ({0})", effectModel.Name); ActiveEffect = null; return; } } if (loopManager != null && !loopManager.Running) { _logger.Debug("Starting LoopManager for effect change"); loopManager.StartAsync(); } _logger.Debug("Changed active effect to: {0}", effectModel.Name); if (ActiveEffect is GameModel || ActiveEffect is ProfilePreviewModel) { return; } // Non-game effects are stored as the new LastEffect. _generalSettings.LastEffect = ActiveEffect?.Name; _generalSettings.Save(); }