Add logging and handle tray icon not being available
This commit is contained in:
parent
49e0b498fe
commit
17192e104d
@ -1,11 +1,19 @@
|
|||||||
#include "AdaptiveBrightness.hpp"
|
#include "AdaptiveBrightness.hpp"
|
||||||
|
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m_currentIcon(0), m_visibility(true)
|
AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m_currentIcon(0), m_visibility(true)
|
||||||
{
|
{
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
|
|
||||||
loadIcons();
|
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_trayIconMenu = new QMenu(this);
|
||||||
m_showHideAction = m_trayIconMenu->addAction(tr("Hide"), [this]() {
|
m_showHideAction = m_trayIconMenu->addAction(tr("Hide"), [this]() {
|
||||||
if(m_visibility) {
|
if(m_visibility) {
|
||||||
@ -21,18 +29,27 @@ AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m
|
|||||||
m_trayIconMenu->addSeparator();
|
m_trayIconMenu->addSeparator();
|
||||||
m_trayIconMenu->addAction(tr("Quit"), this, &QWidget::close);
|
m_trayIconMenu->addAction(tr("Quit"), this, &QWidget::close);
|
||||||
|
|
||||||
|
qDebug("Tray icon context menu initialized");
|
||||||
|
|
||||||
m_trayIcon = new QSystemTrayIcon(this);
|
m_trayIcon = new QSystemTrayIcon(this);
|
||||||
m_trayIcon->setIcon(*m_icons[9]);
|
m_trayIcon->setIcon(*m_icons[9]);
|
||||||
m_trayIcon->setContextMenu(m_trayIconMenu);
|
m_trayIcon->setContextMenu(m_trayIconMenu);
|
||||||
m_trayIcon->show();
|
m_trayIcon->show();
|
||||||
|
|
||||||
|
qDebug("Tray icon initialized");
|
||||||
|
}
|
||||||
|
|
||||||
m_timer = new QTimer(this);
|
m_timer = new QTimer(this);
|
||||||
connect(m_timer, &QTimer::timeout, this, &AdaptiveBrightness::nextIcon);
|
connect(m_timer, &QTimer::timeout, this, &AdaptiveBrightness::nextIcon);
|
||||||
m_timer->start(500);
|
m_timer->start(500);
|
||||||
|
|
||||||
|
qDebug("Tray icon update timer started");
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdaptiveBrightness::loadIcons()
|
void AdaptiveBrightness::loadIcons()
|
||||||
{
|
{
|
||||||
|
qDebug("Loading icons");
|
||||||
|
|
||||||
constexpr auto ICON_PATHS = std::array{
|
constexpr auto ICON_PATHS = std::array{
|
||||||
":/AdaptiveBrightness/resources/brightness_0.ico", ":/AdaptiveBrightness/resources/brightness_1.ico",
|
":/AdaptiveBrightness/resources/brightness_0.ico", ":/AdaptiveBrightness/resources/brightness_1.ico",
|
||||||
":/AdaptiveBrightness/resources/brightness_2.ico", ":/AdaptiveBrightness/resources/brightness_3.ico",
|
":/AdaptiveBrightness/resources/brightness_2.ico", ":/AdaptiveBrightness/resources/brightness_3.ico",
|
||||||
@ -45,10 +62,19 @@ void AdaptiveBrightness::loadIcons()
|
|||||||
for(std::size_t i = 0; i < ICON_PATHS.size(); ++i) {
|
for(std::size_t i = 0; i < ICON_PATHS.size(); ++i) {
|
||||||
m_icons[i] = std::make_unique<QIcon>(ICON_PATHS[i]);
|
m_icons[i] = std::make_unique<QIcon>(ICON_PATHS[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qDebug("Icons loaded");
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdaptiveBrightness::nextIcon()
|
void AdaptiveBrightness::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_currentIcon = (m_currentIcon + 1) % m_icons.size();
|
||||||
m_trayIcon->setIcon(*m_icons[m_currentIcon]);
|
m_trayIcon->setIcon(*m_icons[m_currentIcon]);
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,9 @@ class AdaptiveBrightness : public QMainWindow {
|
|||||||
std::array<std::unique_ptr<QIcon>, 12> m_icons;
|
std::array<std::unique_ptr<QIcon>, 12> m_icons;
|
||||||
std::size_t m_currentIcon;
|
std::size_t m_currentIcon;
|
||||||
bool m_visibility;
|
bool m_visibility;
|
||||||
QAction* m_showHideAction;
|
QAction* m_showHideAction = nullptr;
|
||||||
QMenu* m_trayIconMenu;
|
QMenu* m_trayIconMenu = nullptr;
|
||||||
QSystemTrayIcon* m_trayIcon;
|
QSystemTrayIcon* m_trayIcon = nullptr;
|
||||||
|
|
||||||
QTimer* m_timer;
|
QTimer* m_timer;
|
||||||
};
|
};
|
||||||
|
@ -10,6 +10,8 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
qInstallMessageHandler(logToFile);
|
qInstallMessageHandler(logToFile);
|
||||||
|
|
||||||
|
qDebug("Starting application");
|
||||||
|
|
||||||
QApplication application(argc, argv);
|
QApplication application(argc, argv);
|
||||||
AdaptiveBrightness mainWindow;
|
AdaptiveBrightness mainWindow;
|
||||||
mainWindow.show();
|
mainWindow.show();
|
||||||
|
Loading…
Reference in New Issue
Block a user