5 Commits

Author SHA1 Message Date
e43629d0c0 Make manual override slider bidirectional 2020-07-08 23:12:33 +02:00
1e3596a230 Implement tray icon click 2020-07-08 23:06:38 +02:00
4bb32f0bd0 Add tray icon tool tip 2020-07-08 22:51:01 +02:00
eb18ab9f1e Change window close event to hide window 2020-07-08 22:42:24 +02:00
2253a25011 Move timer callback to separate thread 2020-07-08 22:37:02 +02:00
2 changed files with 49 additions and 8 deletions

View File

@@ -5,8 +5,8 @@
#include <cmath> #include <cmath>
#include <QCloseEvent>
#include <QGroupBox> #include <QGroupBox>
#include <QSlider>
#include <QtDebug> #include <QtDebug>
#include <QtGlobal> #include <QtGlobal>
@@ -20,10 +20,10 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
qDebug(ltr("Creating main window")); qDebug(ltr("Creating main window"));
m_ui.setupUi(this); m_ui.setupUi(this);
auto slider = m_ui.centralWidget->findChild<QGroupBox*>("groupBox")->findChild<QSlider*>("horizontalSlider"); m_manualBrightnessSlider = m_ui.centralWidget->findChild<QGroupBox*>("groupBox")->findChild<QSlider*>("horizontalSlider");
if(slider) { if(m_manualBrightnessSlider) {
connect(slider, &QSlider::valueChanged, [this](int value) { connect(m_manualBrightnessSlider, &QSlider::valueChanged, [this](int value) {
const auto mappedBrightness = utils::map(value, 0, 100, 0.f, 1.f); const auto mappedBrightness = utils::map(value, 0, 100, 0.f, 1.f);
const auto newBrightness = std::clamp(mappedBrightness, 0.f, 1.f); const auto newBrightness = std::clamp(mappedBrightness, 0.f, 1.f);
qDebug(ltr("Overriding brightness with %1").arg(newBrightness)); qDebug(ltr("Overriding brightness with %1").arg(newBrightness));
@@ -52,7 +52,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
m_visibility = !m_visibility; m_visibility = !m_visibility;
}); });
m_trayIconMenu->addSeparator(); m_trayIconMenu->addSeparator();
m_trayIconMenu->addAction(tr("Quit"), this, &QWidget::close); m_trayIconMenu->addAction(tr("Quit"), this, &QCoreApplication::quit);
qDebug(ltr("Tray icon context menu initialized")); qDebug(ltr("Tray icon context menu initialized"));
@@ -60,13 +60,19 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
m_trayIcon->setIcon(*m_errorIcon); m_trayIcon->setIcon(*m_errorIcon);
m_trayIcon->setContextMenu(m_trayIconMenu); m_trayIcon->setContextMenu(m_trayIconMenu);
m_trayIcon->show(); m_trayIcon->show();
m_trayIcon->setToolTip(tr("AdaptiveBrightness"));
connect(m_trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::trayIconClicked);
qDebug(ltr("Tray icon initialized")); qDebug(ltr("Tray icon initialized"));
} }
m_timer = new QTimer(this); m_timerThread = new QThread(this);
connect(m_timer, &QTimer::timeout, this, &MainWindow::updateState); m_timer = new QTimer(nullptr);
m_timer->start(1000); m_timer->setInterval(1000);
m_timer->moveToThread(m_timerThread);
m_timerThread->connect(m_timer, &QTimer::timeout, this, &MainWindow::updateState, Qt::DirectConnection);
m_timer->connect(m_timerThread, SIGNAL(started()), SLOT(start()));
m_timerThread->start();
qDebug(ltr("Tray icon update timer started")); qDebug(ltr("Tray icon update timer started"));
@@ -77,6 +83,17 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
qDebug(ltr("Destroying main window")); qDebug(ltr("Destroying main window"));
m_timerThread->quit();
if(!m_timerThread->wait()) {
qCritical(ltr("Timer thread did not terminate cleanly"));
}
}
void MainWindow::closeEvent(QCloseEvent* event)
{
m_showHideAction->activate(QAction::Trigger);
event->ignore();
} }
void MainWindow::loadIcons() void MainWindow::loadIcons()
@@ -179,4 +196,19 @@ void MainWindow::updateState()
else if(m_trayIcon) { else if(m_trayIcon) {
m_trayIcon->setIcon(*m_errorIcon); m_trayIcon->setIcon(*m_errorIcon);
} }
if(m_trayIcon) {
m_trayIcon->setToolTip(tr("AdaptiveBrightness - %1%").arg(m_brightness * 100, 0, 'f', 0));
}
if(m_manualBrightnessSlider) {
m_manualBrightnessSlider->setValue(utils::map(m_brightness, 0.f, 1.f, 0, 100));
}
}
void MainWindow::trayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
if(reason == QSystemTrayIcon::ActivationReason::Trigger) {
m_showHideAction->trigger();
}
} }

View File

@@ -8,7 +8,9 @@
#include <QIcon> #include <QIcon>
#include <QMainWindow> #include <QMainWindow>
#include <QMenu> #include <QMenu>
#include <QSlider>
#include <QSystemTrayIcon> #include <QSystemTrayIcon>
#include <QThread>
#include <QTimer> #include <QTimer>
#include "monitor.hpp" #include "monitor.hpp"
@@ -24,10 +26,14 @@ class MainWindow : public QMainWindow {
~MainWindow(); ~MainWindow();
private: private:
void closeEvent(QCloseEvent* event) override;
void loadIcons(); void loadIcons();
void updateState(); void updateState();
void trayIconClicked(QSystemTrayIcon::ActivationReason reason);
Ui::AdaptiveBrightnessClass m_ui; Ui::AdaptiveBrightnessClass m_ui;
std::array<std::unique_ptr<QIcon>, 9> m_noSensorStateIcons; std::array<std::unique_ptr<QIcon>, 9> m_noSensorStateIcons;
@@ -39,8 +45,11 @@ class MainWindow : public QMainWindow {
QMenu* m_trayIconMenu = nullptr; QMenu* m_trayIconMenu = nullptr;
QSystemTrayIcon* m_trayIcon = nullptr; QSystemTrayIcon* m_trayIcon = nullptr;
QThread* m_timerThread = nullptr;
QTimer* m_timer = nullptr; QTimer* m_timer = nullptr;
QSlider* m_manualBrightnessSlider = nullptr;
float m_brightness = 0.5f; float m_brightness = 0.5f;
std::vector<Sensor> m_sensors; std::vector<Sensor> m_sensors;