#pragma once #include #include #include #include #include #include #include #include #include #include #include #include "monitor.hpp" #include "sensor.hpp" #include "ui_AdaptiveBrightness.h" class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget* parent = nullptr); ~MainWindow(); private: void closeEvent(QCloseEvent* event) override; void enumSensors(); void enumMonitors(); void loadIcons(); void setupMonitorsTab(); void setupTrayIcon(); void setupCallbackTimer(); void updateCurrentMonitorGUI(int index); void updateState(); void trayIconClicked(QSystemTrayIcon::ActivationReason reason); Ui::MainWindow m_ui; std::array, 9> m_noSensorStateIcons; std::array, 9> m_sensorStateIcons; std::unique_ptr m_errorIcon; bool m_visibility = false; QAction* m_showHideAction = nullptr; QMenu* m_trayIconMenu = nullptr; QSystemTrayIcon* m_trayIcon = nullptr; QThread* m_timerThread = nullptr; QTimer* m_timer = nullptr; float m_brightness = 0.5f; struct SensorData { Sensor driver; }; struct MonitorData { Monitor driver; float minBrightness; float maxBrightness; float brightness; bool manualOverride; }; std::vector m_sensors; std::vector m_monitors; };