Add logging and handle tray icon not being available

This commit is contained in:
BlackMark 2020-07-04 16:31:13 +02:00
parent 49e0b498fe
commit 17192e104d
3 changed files with 49 additions and 21 deletions

View File

@ -1,38 +1,55 @@
#include "AdaptiveBrightness.hpp"
#include <QtGlobal>
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<QIcon>(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]);
}

View File

@ -27,9 +27,9 @@ class AdaptiveBrightness : public QMainWindow {
std::array<std::unique_ptr<QIcon>, 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;
};

View File

@ -10,6 +10,8 @@ int main(int argc, char* argv[])
{
qInstallMessageHandler(logToFile);
qDebug("Starting application");
QApplication application(argc, argv);
AdaptiveBrightness mainWindow;
mainWindow.show();