From 17192e104d38e136d8780595560f12f5d0e6e664 Mon Sep 17 00:00:00 2001 From: BlackMark Date: Sat, 4 Jul 2020 16:31:13 +0200 Subject: [PATCH] Add logging and handle tray icon not being available --- AdaptiveBrightness/AdaptiveBrightness.cpp | 62 ++++++++++++++++------- AdaptiveBrightness/AdaptiveBrightness.hpp | 6 +-- AdaptiveBrightness/main.cpp | 2 + 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/AdaptiveBrightness/AdaptiveBrightness.cpp b/AdaptiveBrightness/AdaptiveBrightness.cpp index 487345f..4930db8 100644 --- a/AdaptiveBrightness/AdaptiveBrightness.cpp +++ b/AdaptiveBrightness/AdaptiveBrightness.cpp @@ -1,38 +1,55 @@ #include "AdaptiveBrightness.hpp" +#include + AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m_currentIcon(0), m_visibility(true) { m_ui.setupUi(this); loadIcons(); - 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); + if(!QSystemTrayIcon::isSystemTrayAvailable()) { + qWarning("System tray is not available -> tray icon will be disabled"); + } + else { + qDebug("System tray is available"); - m_trayIcon = new QSystemTrayIcon(this); - m_trayIcon->setIcon(*m_icons[9]); - m_trayIcon->setContextMenu(m_trayIconMenu); - m_trayIcon->show(); + 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, &AdaptiveBrightness::nextIcon); m_timer->start(500); + + qDebug("Tray icon update timer started"); } void AdaptiveBrightness::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", @@ -45,10 +62,19 @@ void AdaptiveBrightness::loadIcons() for(std::size_t i = 0; i < ICON_PATHS.size(); ++i) { m_icons[i] = std::make_unique(ICON_PATHS[i]); } + + qDebug("Icons loaded"); } 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_trayIcon->setIcon(*m_icons[m_currentIcon]); } diff --git a/AdaptiveBrightness/AdaptiveBrightness.hpp b/AdaptiveBrightness/AdaptiveBrightness.hpp index 32e4938..4b56467 100644 --- a/AdaptiveBrightness/AdaptiveBrightness.hpp +++ b/AdaptiveBrightness/AdaptiveBrightness.hpp @@ -27,9 +27,9 @@ class AdaptiveBrightness : public QMainWindow { std::array, 12> m_icons; std::size_t m_currentIcon; bool m_visibility; - QAction* m_showHideAction; - QMenu* m_trayIconMenu; - QSystemTrayIcon* m_trayIcon; + QAction* m_showHideAction = nullptr; + QMenu* m_trayIconMenu = nullptr; + QSystemTrayIcon* m_trayIcon = nullptr; QTimer* m_timer; }; diff --git a/AdaptiveBrightness/main.cpp b/AdaptiveBrightness/main.cpp index e3cb845..82e4a87 100644 --- a/AdaptiveBrightness/main.cpp +++ b/AdaptiveBrightness/main.cpp @@ -10,6 +10,8 @@ int main(int argc, char* argv[]) { qInstallMessageHandler(logToFile); + qDebug("Starting application"); + QApplication application(argc, argv); AdaptiveBrightness mainWindow; mainWindow.show();