AdaptiveBrightness/AdaptiveBrightness/main_window.cpp

88 lines
2.7 KiB
C++

#include "main_window.hpp"
#include <QtGlobal>
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), m_currentIcon(0), m_visibility(true)
{
qDebug("Creating main window");
m_ui.setupUi(this);
loadIcons();
if(!QSystemTrayIcon::isSystemTrayAvailable()) {
qWarning("System tray is not available -> tray icon will be disabled");
}
else {
qDebug("System tray is available");
m_trayIconMenu = new QMenu(this);
m_showHideAction = m_trayIconMenu->addAction(tr("Hide"), [this]() {
if(m_visibility) {
m_showHideAction->setText(tr("Show"));
hide();
}
else {
m_showHideAction->setText(tr("Hide"));
show();
}
m_visibility = !m_visibility;
});
m_trayIconMenu->addSeparator();
m_trayIconMenu->addAction(tr("Quit"), this, &QWidget::close);
qDebug("Tray icon context menu initialized");
m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setIcon(*m_icons[9]);
m_trayIcon->setContextMenu(m_trayIconMenu);
m_trayIcon->show();
qDebug("Tray icon initialized");
}
m_timer = new QTimer(this);
connect(m_timer, &QTimer::timeout, this, &MainWindow::nextIcon);
m_timer->start(500);
qDebug("Tray icon update timer started");
}
MainWindow::~MainWindow()
{
qDebug("Destroying main window");
}
void MainWindow::loadIcons()
{
qDebug("Loading icons");
constexpr auto ICON_PATHS = std::array{
":/AdaptiveBrightness/resources/brightness_0.ico", ":/AdaptiveBrightness/resources/brightness_1.ico",
":/AdaptiveBrightness/resources/brightness_2.ico", ":/AdaptiveBrightness/resources/brightness_3.ico",
":/AdaptiveBrightness/resources/brightness_4.ico", ":/AdaptiveBrightness/resources/brightness_5.ico",
":/AdaptiveBrightness/resources/brightness_6.ico", ":/AdaptiveBrightness/resources/brightness_7.ico",
":/AdaptiveBrightness/resources/brightness_8.ico", ":/AdaptiveBrightness/resources/brightness_default.ico",
":/AdaptiveBrightness/resources/brightness_error.ico", ":/AdaptiveBrightness/resources/brightness_system.ico",
};
for(std::size_t i = 0; i < ICON_PATHS.size(); ++i) {
m_icons[i] = std::make_unique<QIcon>(ICON_PATHS[i]);
}
qDebug("Icons loaded");
}
void MainWindow::nextIcon()
{
qDebug("Cycling to next icon");
if(!m_trayIcon) {
qWarning("Cannot cycle through tray icons, because no tray icon is available");
return;
}
m_currentIcon = (m_currentIcon + 1) % m_icons.size();
m_trayIcon->setIcon(*m_icons[m_currentIcon]);
}