Load semantic icons seperately

This commit is contained in:
BlackMark 2020-07-06 19:52:25 +02:00
parent 8e6844764b
commit d0b24b947b
2 changed files with 43 additions and 11 deletions

View File

@ -34,7 +34,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), m_currentIcon(0),
qDebug("Tray icon context menu initialized");
m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setIcon(*m_icons[9]);
m_trayIcon->setIcon(*m_errorIcon);
m_trayIcon->setContextMenu(m_trayIconMenu);
m_trayIcon->show();
@ -53,24 +53,53 @@ MainWindow::~MainWindow()
qDebug("Destroying main window");
}
namespace {
template<typename>
struct array_size;
template<typename T, size_t N>
struct array_size<std::array<T, N>> {
static constexpr auto value = N;
};
template<typename T>
inline constexpr auto array_size_v = array_size<T>::value;
} // namespace
void MainWindow::loadIcons()
{
qDebug("Loading icons");
constexpr auto ICON_PATHS = std::array{
constexpr auto NO_SENSOR_ICON_PATHS = std::array{
":/AdaptiveBrightness/resources/nosense_0.ico", ":/AdaptiveBrightness/resources/nosense_1.ico", ":/AdaptiveBrightness/resources/nosense_2.ico",
":/AdaptiveBrightness/resources/nosense_3.ico", ":/AdaptiveBrightness/resources/nosense_4.ico", ":/AdaptiveBrightness/resources/nosense_5.ico",
":/AdaptiveBrightness/resources/nosense_6.ico", ":/AdaptiveBrightness/resources/nosense_7.ico", ":/AdaptiveBrightness/resources/nosense_8.ico",
":/AdaptiveBrightness/resources/sense_0.ico", ":/AdaptiveBrightness/resources/sense_1.ico", ":/AdaptiveBrightness/resources/sense_2.ico",
":/AdaptiveBrightness/resources/sense_3.ico", ":/AdaptiveBrightness/resources/sense_4.ico", ":/AdaptiveBrightness/resources/sense_5.ico",
":/AdaptiveBrightness/resources/sense_6.ico", ":/AdaptiveBrightness/resources/sense_7.ico", ":/AdaptiveBrightness/resources/sense_8.ico",
":/AdaptiveBrightness/resources/error.ico", ":/AdaptiveBrightness/resources/system.ico",
};
for(std::size_t i = 0; i < ICON_PATHS.size(); ++i) {
m_icons[i] = std::make_unique<QIcon>(ICON_PATHS[i]);
static_assert(NO_SENSOR_ICON_PATHS.size() == array_size_v<decltype(m_noSensorStateIcons)>, "Number of paths does not match number of icons");
constexpr auto SENSOR_ICON_PATHS = std::array{
":/AdaptiveBrightness/resources/sense_0.ico", ":/AdaptiveBrightness/resources/sense_1.ico", ":/AdaptiveBrightness/resources/sense_2.ico",
":/AdaptiveBrightness/resources/sense_3.ico", ":/AdaptiveBrightness/resources/sense_4.ico", ":/AdaptiveBrightness/resources/sense_5.ico",
":/AdaptiveBrightness/resources/sense_6.ico", ":/AdaptiveBrightness/resources/sense_7.ico", ":/AdaptiveBrightness/resources/sense_8.ico",
};
static_assert(SENSOR_ICON_PATHS.size() == array_size_v<decltype(m_sensorStateIcons)>, "Number of paths does not match number of icons");
constexpr auto ERROR_ICON_PATH = ":/AdaptiveBrightness/resources/error.ico";
for(std::size_t i = 0; i < NO_SENSOR_ICON_PATHS.size(); ++i) {
m_noSensorStateIcons[i] = std::make_unique<QIcon>(NO_SENSOR_ICON_PATHS[i]);
}
for(std::size_t i = 0; i < SENSOR_ICON_PATHS.size(); ++i) {
m_sensorStateIcons[i] = std::make_unique<QIcon>(SENSOR_ICON_PATHS[i]);
}
m_errorIcon = std::make_unique<QIcon>(ERROR_ICON_PATH);
qDebug("Icons loaded");
}
@ -83,6 +112,6 @@ void MainWindow::nextIcon()
return;
}
m_currentIcon = (m_currentIcon + 1) % m_icons.size();
m_trayIcon->setIcon(*m_icons[m_currentIcon]);
m_currentIcon = (m_currentIcon + 1) % m_noSensorStateIcons.size();
m_trayIcon->setIcon(*m_noSensorStateIcons[m_currentIcon]);
}

View File

@ -25,7 +25,10 @@ class MainWindow : public QMainWindow {
Ui::AdaptiveBrightnessClass m_ui;
std::array<std::unique_ptr<QIcon>, 20> m_icons;
std::array<std::unique_ptr<QIcon>, 9> m_noSensorStateIcons;
std::array<std::unique_ptr<QIcon>, 9> m_sensorStateIcons;
std::unique_ptr<QIcon> m_errorIcon;
std::size_t m_currentIcon;
bool m_visibility;
QAction* m_showHideAction = nullptr;