/// <summary> /// Starts the LCD display. /// </summary> private static void Start() { try { s_lcd = LcdDisplay.Instance(); if (s_lcd == null) { return; } s_lcd.SwitchState(LcdState.SplashScreen); // Initialize the current character s_lcd.CurrentCharacter = EveMonClient.MonitoredCharacters.OfType <CCPCharacter>().FirstOrDefault(); UpdateFromSettings(); // Subscribe to events of the EVEMon client EveMonClient.QueuedSkillsCompleted += EveMonClient_QueuedSkillsCompleted; EveMonClient.SettingsChanged += EveMonClient_SettingsChanged; // Subscribe to events which occur of G15 buttons pressed LcdDisplay.ApiUpdateRequested += LcdDisplay_APIUpdateRequested; LcdDisplay.AutoCycleChanged += LcdDisplay_AutoCycleChanged; LcdDisplay.CurrentCharacterChanged += LcdDisplay_CurrentCharacterChanged; } catch (Exception ex) { ExceptionHandler.LogException(ex, true); s_lcd = null; s_startupError = true; } }
/// <summary> /// Stop the LCD display. /// </summary> private static void Stop() { try { s_lcd.Dispose(); } catch (Exception ex) { EveMonClient.Trace("failed"); ExceptionHandler.LogException(ex, true); } finally { s_lcd = null; // Unsubscribe to events of the EVEMon client EveMonClient.QueuedSkillsCompleted -= EveMonClient_QueuedSkillsCompleted; EveMonClient.SettingsChanged -= EveMonClient_SettingsChanged; // Unsubscribe to events which occur of G15 buttons pressed LcdDisplay.ApiUpdateRequested -= LcdDisplay_APIUpdateRequested; LcdDisplay.AutoCycleChanged -= LcdDisplay_AutoCycleChanged; LcdDisplay.CurrentCharacterChanged -= LcdDisplay_CurrentCharacterChanged; } }
/// <summary> /// Releases unmanaged and - optionally - managed resources /// </summary> /// <param name="isDisposing"> /// <c>true</c> to release both managed and unmanaged resources; /// <c>false</c> to release only unmanaged resources. /// </param> private void Dispose(bool isDisposing) { if (!m_disposed) { if (isDisposing || s_singleInstance != null) { LcdInterface.Close(); } m_buttonPressedCheckTimer.Stop(); m_buttonPressedCheckTimer.Dispose(); m_bmpLCD.Dispose(); m_bmpLCDX.Dispose(); s_singleInstance = null; } m_disposed = true; }
/// <summary> /// Instances this instance. /// </summary> /// <returns></returns> internal static LcdDisplay Instance() => s_singleInstance ?? (s_singleInstance = new LcdDisplay());
/// <summary> /// Stop the LCD display. /// </summary> private static void Stop() { try { s_lcd.Dispose(); } catch (Exception ex) { EveMonClient.Trace("failed"); ExceptionHandler.LogException(ex, true); } finally { s_lcd = null; // Unsubscribe to events of the EVEMon client EveMonClient.QueuedSkillsCompleted -= EveMonClient_QueuedSkillsCompleted; EveMonClient.SettingsChanged -= EveMonClient_SettingsChanged; // Unsubscribe to events which occur of G15 buttons pressed LcdDisplay.ApiUpdateRequested -= LcdDisplay_APIUpdateRequested; LcdDisplay.AutoCycleChanged -= LcdDisplay_AutoCycleChanged; LcdDisplay.CurrentCharacterChanged -= LcdDisplay_CurrentCharacterChanged; } }
/// <summary> /// Starts the LCD display. /// </summary> private static void Start() { try { s_lcd = LcdDisplay.Instance(); if (s_lcd == null) return; s_lcd.SwitchState(LcdState.SplashScreen); // Initialize the current character s_lcd.CurrentCharacter = EveMonClient.MonitoredCharacters.OfType<CCPCharacter>().FirstOrDefault(); UpdateFromSettings(); // Subscribe to events of the EVEMon client EveMonClient.QueuedSkillsCompleted += EveMonClient_QueuedSkillsCompleted; EveMonClient.SettingsChanged += EveMonClient_SettingsChanged; // Subscribe to events which occur of G15 buttons pressed LcdDisplay.ApiUpdateRequested += LcdDisplay_APIUpdateRequested; LcdDisplay.AutoCycleChanged += LcdDisplay_AutoCycleChanged; LcdDisplay.CurrentCharacterChanged += LcdDisplay_CurrentCharacterChanged; } catch (Exception ex) { ExceptionHandler.LogException(ex, true); s_lcd = null; s_startupError = true; } }
/// <summary> /// Releases unmanaged and - optionally - managed resources /// </summary> /// <param name="isDisposing"> /// <c>true</c> to release both managed and unmanaged resources; /// <c>false</c> to release only unmanaged resources. /// </param> private void Dispose(bool isDisposing) { if (!m_disposed) { if (isDisposing || s_singleInstance != null) LcdInterface.Close(); m_buttonPressedCheckTimer.Stop(); m_buttonPressedCheckTimer.Dispose(); m_bmpLCD.Dispose(); m_bmpLCDX.Dispose(); s_singleInstance = null; } m_disposed = true; }
/// <summary> /// Instances this instance. /// </summary> /// <returns></returns> internal static LcdDisplay Instance() => s_singleInstance ?? (s_singleInstance = new LcdDisplay());