Load semantic icons seperately
This commit is contained in:
parent
8e6844764b
commit
d0b24b947b
@ -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]);
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user