91 lines
1.9 KiB
C++
91 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <array>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include <QAction>
|
|
#include <QIcon>
|
|
#include <QMainWindow>
|
|
#include <QMenu>
|
|
#include <QMutex>
|
|
#include <QSlider>
|
|
#include <QSystemTrayIcon>
|
|
#include <QThread>
|
|
#include <QTimer>
|
|
|
|
#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 setupLimitsSlider();
|
|
void setupOverallLimitsSlider();
|
|
void setupBrightness();
|
|
void setupOverallBrightness();
|
|
|
|
void setupSensorsTab();
|
|
|
|
void setupTrayIcon();
|
|
void setupCallbackTimer();
|
|
|
|
void resetAllMonitorSettings();
|
|
|
|
void updateCurrentMonitorGUI(int index);
|
|
|
|
void updateState();
|
|
|
|
bool setMonitorBrightness(float& brightness);
|
|
|
|
void trayIconClicked(QSystemTrayIcon::ActivationReason reason);
|
|
|
|
Ui::MainWindow m_ui;
|
|
|
|
std::array<std::unique_ptr<QIcon>, 9> m_noSensorStateIcons;
|
|
std::array<std::unique_ptr<QIcon>, 9> m_sensorStateIcons;
|
|
std::unique_ptr<QIcon> 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;
|
|
QMutex m_mtx;
|
|
|
|
struct SensorData {
|
|
Sensor driver;
|
|
};
|
|
|
|
struct MonitorData {
|
|
static constexpr auto HYSTERESIS_THRESHOLD = 0.05f;
|
|
|
|
Monitor driver;
|
|
float minBrightness;
|
|
float maxBrightness;
|
|
float brightness;
|
|
float prevBrightness;
|
|
bool manualOverride;
|
|
};
|
|
|
|
std::vector<SensorData> m_sensors;
|
|
std::vector<MonitorData> m_monitors;
|
|
};
|