88 lines
2.7 KiB
C++
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]);
|
|
}
|