Add icon animation

This commit is contained in:
BlackMark 2020-06-21 19:11:19 +02:00
parent 366044bb27
commit 6c6a7d20a4
14 changed files with 49 additions and 4 deletions

View File

@ -1,10 +1,10 @@
#include "AdaptiveBrightness.hpp" #include "AdaptiveBrightness.hpp"
AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m_visibility(true) AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m_currentIcon(0), m_visibility(true)
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
m_icon = std::make_unique<QIcon>(":/AdaptiveBrightness/resources/brightness_system.ico"); loadIcons();
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]() {
@ -22,7 +22,33 @@ AdaptiveBrightness::AdaptiveBrightness(QWidget* parent) : QMainWindow(parent), m
m_trayIconMenu->addAction(tr("Quit"), this, &QWidget::close); m_trayIconMenu->addAction(tr("Quit"), this, &QWidget::close);
m_trayIcon = new QSystemTrayIcon(this); m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setIcon(*m_icon); m_trayIcon->setIcon(*m_icons[9]);
m_trayIcon->setContextMenu(m_trayIconMenu); m_trayIcon->setContextMenu(m_trayIconMenu);
m_trayIcon->show(); 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]);
} }

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <array>
#include <memory> #include <memory>
#include <QAction> #include <QAction>
@ -7,6 +8,7 @@
#include <QMainWindow> #include <QMainWindow>
#include <QMenu> #include <QMenu>
#include <QSystemTrayIcon> #include <QSystemTrayIcon>
#include <QTimer>
#include "ui_AdaptiveBrightness.h" #include "ui_AdaptiveBrightness.h"
@ -17,11 +19,17 @@ class AdaptiveBrightness : public QMainWindow {
AdaptiveBrightness(QWidget* parent = nullptr); AdaptiveBrightness(QWidget* parent = nullptr);
private: private:
void loadIcons();
void nextIcon();
Ui::AdaptiveBrightnessClass m_ui; Ui::AdaptiveBrightnessClass m_ui;
std::unique_ptr<QIcon> m_icon; std::array<std::unique_ptr<QIcon>, 12> m_icons;
std::size_t m_currentIcon;
bool m_visibility; bool m_visibility;
QAction* m_showHideAction; QAction* m_showHideAction;
QMenu* m_trayIconMenu; QMenu* m_trayIconMenu;
QSystemTrayIcon* m_trayIcon; QSystemTrayIcon* m_trayIcon;
QTimer* m_timer;
}; };

View File

@ -1,5 +1,16 @@
<RCC> <RCC>
<qresource prefix="/AdaptiveBrightness"> <qresource prefix="/AdaptiveBrightness">
<file>resources/brightness_system.ico</file> <file>resources/brightness_system.ico</file>
<file>resources/brightness_0.ico</file>
<file>resources/brightness_1.ico</file>
<file>resources/brightness_2.ico</file>
<file>resources/brightness_3.ico</file>
<file>resources/brightness_4.ico</file>
<file>resources/brightness_5.ico</file>
<file>resources/brightness_6.ico</file>
<file>resources/brightness_7.ico</file>
<file>resources/brightness_8.ico</file>
<file>resources/brightness_default.ico</file>
<file>resources/brightness_error.ico</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB