AdaptiveBrightness/AdaptiveBrightness/AdaptiveBrightness.cpp
2020-06-21 19:11:19 +02:00

55 lines
2.0 KiB
C++

#include "AdaptiveBrightness.hpp"
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);
m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setIcon(*m_icons[9]);
m_trayIcon->setContextMenu(m_trayIconMenu);
m_trayIcon->show();
m_timer = new QTimer(this);
connect(m_timer, &QTimer::timeout, this, &AdaptiveBrightness::nextIcon);
m_timer->start(500);
}
void AdaptiveBrightness::loadIcons()
{
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]);
}
}
void AdaptiveBrightness::nextIcon()
{
m_currentIcon = (m_currentIcon + 1) % m_icons.size();
m_trayIcon->setIcon(*m_icons[m_currentIcon]);
}