Menu items now have a second icon for when selected
This commit is contained in:
@ -33,6 +33,9 @@ set(headers
|
|||||||
src/icons/back.h
|
src/icons/back.h
|
||||||
src/icons/checked.h
|
src/icons/checked.h
|
||||||
src/icons/unchecked.h
|
src/icons/unchecked.h
|
||||||
|
src/icons/back_grey.h
|
||||||
|
src/icons/checked_grey.h
|
||||||
|
src/icons/unchecked_grey.h
|
||||||
src/marginmenuitem.h
|
src/marginmenuitem.h
|
||||||
src/menudisplay.h
|
src/menudisplay.h
|
||||||
src/menuitem.h
|
src/menuitem.h
|
||||||
@ -78,6 +81,9 @@ set(sources
|
|||||||
src/icons/back.cpp
|
src/icons/back.cpp
|
||||||
src/icons/checked.cpp
|
src/icons/checked.cpp
|
||||||
src/icons/unchecked.cpp
|
src/icons/unchecked.cpp
|
||||||
|
src/icons/back_grey.cpp
|
||||||
|
src/icons/checked_grey.cpp
|
||||||
|
src/icons/unchecked_grey.cpp
|
||||||
src/widgets/label.cpp
|
src/widgets/label.cpp
|
||||||
src/widgets/progressbar.cpp
|
src/widgets/progressbar.cpp
|
||||||
src/widgets/reverseprogressbar.cpp
|
src/widgets/reverseprogressbar.cpp
|
||||||
|
@ -3,4 +3,14 @@
|
|||||||
for i in icons/*
|
for i in icons/*
|
||||||
do
|
do
|
||||||
build-iconconvert-Desktop_Qt_6_4_1-Debug/iconconvert $i src/icons/ icon_templ.h.tmpl icon_templ.cpp.tmpl
|
build-iconconvert-Desktop_Qt_6_4_1-Debug/iconconvert $i src/icons/ icon_templ.h.tmpl icon_templ.cpp.tmpl
|
||||||
|
|
||||||
|
ICON_NAME="$(basename "$i" .png)"
|
||||||
|
case "$ICON_NAME" in
|
||||||
|
icons_to_exclude)
|
||||||
|
echo no grey version needed
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
build-iconconvert-Desktop_Qt_6_4_1-Debug/iconconvert "$i" src/icons/ icon_templ.h.tmpl icon_templ.cpp.tmpl --background-color "#5c5c5c" --name-override "${ICON_NAME}_grey"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
@ -7,19 +7,25 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
QColor backgroundColor;
|
||||||
|
|
||||||
constexpr uint16_t color565(uint8_t red, uint8_t green, uint8_t blue) noexcept
|
constexpr uint16_t color565(uint8_t red, uint8_t green, uint8_t blue) noexcept
|
||||||
{
|
{
|
||||||
return __builtin_bswap16(((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3));
|
return __builtin_bswap16(((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3));
|
||||||
}
|
}
|
||||||
uint16_t color565(const QColor &color) noexcept
|
uint16_t color565(const QColor &color) noexcept
|
||||||
{
|
{
|
||||||
return color565(color.red() * color.alphaF(), color.green() * color.alphaF(), color.blue() * color.alphaF());
|
return color565(
|
||||||
|
color.red() * color.alphaF() + ((1-color.alphaF())*backgroundColor.red()),
|
||||||
|
color.green() * color.alphaF() + ((1-color.alphaF())*backgroundColor.green()),
|
||||||
|
color.blue() * color.alphaF() + ((1-color.alphaF())*backgroundColor.blue())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication app(argc, argv);
|
QCoreApplication app{argc, argv};
|
||||||
QCoreApplication::setApplicationName("iconconvert");
|
QCoreApplication::setApplicationName("iconconvert");
|
||||||
QCoreApplication::setApplicationVersion("1.0");
|
QCoreApplication::setApplicationVersion("1.0");
|
||||||
|
|
||||||
@ -27,13 +33,32 @@ int main(int argc, char *argv[])
|
|||||||
parser.setApplicationDescription("Converts icons to .h/.cpp sources");
|
parser.setApplicationDescription("Converts icons to .h/.cpp sources");
|
||||||
parser.addHelpOption();
|
parser.addHelpOption();
|
||||||
parser.addVersionOption();
|
parser.addVersionOption();
|
||||||
parser.addPositionalArgument("icon", QCoreApplication::translate("main", "Icon file."));
|
parser.addPositionalArgument("icon-file", QCoreApplication::translate("main", "Icon file."));
|
||||||
parser.addPositionalArgument("destination", QCoreApplication::translate("main", "Destination directory."));
|
parser.addPositionalArgument("destination-dir", QCoreApplication::translate("main", "Destination directory."));
|
||||||
parser.addPositionalArgument("header-templ", QCoreApplication::translate("main", "Header template"));
|
parser.addPositionalArgument("header-templ", QCoreApplication::translate("main", "Header template"));
|
||||||
parser.addPositionalArgument("footer-templ", QCoreApplication::translate("main", "Footer template"));
|
parser.addPositionalArgument("footer-templ", QCoreApplication::translate("main", "Footer template"));
|
||||||
|
QCommandLineOption backgroundColorOption{
|
||||||
|
{"b", "background-color"},
|
||||||
|
QCoreApplication::translate("main", "Background color for transparent icons"),
|
||||||
|
"name", "#000000"
|
||||||
|
};
|
||||||
|
parser.addOption(backgroundColorOption);
|
||||||
|
QCommandLineOption nameOverrideOption{
|
||||||
|
{"n", "name-override"},
|
||||||
|
QCoreApplication::translate("main", "Override name for generated .h .cpp files"),
|
||||||
|
"name"
|
||||||
|
};
|
||||||
|
parser.addOption(nameOverrideOption);
|
||||||
|
|
||||||
parser.process(app);
|
parser.process(app);
|
||||||
|
|
||||||
|
backgroundColor = QColor{parser.value(backgroundColorOption)};
|
||||||
|
if (!backgroundColor.isValid())
|
||||||
|
{
|
||||||
|
qWarning() << "invalid background color, falling back to #000000";
|
||||||
|
backgroundColor = QColor{0, 0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
const QStringList args = parser.positionalArguments();
|
const QStringList args = parser.positionalArguments();
|
||||||
if (args.size() < 1)
|
if (args.size() < 1)
|
||||||
{
|
{
|
||||||
@ -111,6 +136,9 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto &nameOverrideValue = parser.value(nameOverrideOption);
|
||||||
|
const auto &basename = nameOverrideValue.isEmpty() ? fileInfo.baseName() : nameOverrideValue;
|
||||||
|
|
||||||
{
|
{
|
||||||
QString templ;
|
QString templ;
|
||||||
|
|
||||||
@ -126,7 +154,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
QFile file{dir.absoluteFilePath(QStringLiteral("%0.h").arg(fileInfo.baseName()))};
|
QFile file{dir.absoluteFilePath(QStringLiteral("%0.h").arg(basename))};
|
||||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
||||||
{
|
{
|
||||||
qCritical("could not open .h file for writing %s", qPrintable(file.errorString()));
|
qCritical("could not open .h file for writing %s", qPrintable(file.errorString()));
|
||||||
@ -134,7 +162,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto content = templ
|
const auto content = templ
|
||||||
.replace("${name}", fileInfo.baseName())
|
.replace("${name}", basename)
|
||||||
.replace("${width}", QString::number(image.width()))
|
.replace("${width}", QString::number(image.width()))
|
||||||
.replace("${height}", QString::number(image.height()))
|
.replace("${height}", QString::number(image.height()))
|
||||||
.toUtf8();
|
.toUtf8();
|
||||||
@ -162,7 +190,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
QFile file{dir.absoluteFilePath(QStringLiteral("%0.cpp").arg(fileInfo.baseName()))};
|
QFile file{dir.absoluteFilePath(QStringLiteral("%0.cpp").arg(basename))};
|
||||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
||||||
{
|
{
|
||||||
qCritical("could not open .cpp file for writing %s", qPrintable(file.errorString()));
|
qCritical("could not open .cpp file for writing %s", qPrintable(file.errorString()));
|
||||||
@ -170,7 +198,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto content = templ
|
const auto content = templ
|
||||||
.replace("${name}", fileInfo.baseName())
|
.replace("${name}", basename)
|
||||||
.replace("${width}", QString::number(image.width()))
|
.replace("${width}", QString::number(image.width()))
|
||||||
.replace("${height}", QString::number(image.height()))
|
.replace("${height}", QString::number(image.height()))
|
||||||
.replace("${bytes}", bytes)
|
.replace("${bytes}", bytes)
|
||||||
@ -184,7 +212,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << fileInfo.baseName() << image.width() << image.height();
|
qDebug() << basename << image.width() << image.height();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "actions/setvalueaction.h"
|
#include "actions/setvalueaction.h"
|
||||||
#include "actions/backproxyaction.h"
|
#include "actions/backproxyaction.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
|
#include "icons/back_grey.h"
|
||||||
|
|
||||||
namespace espgui {
|
namespace espgui {
|
||||||
namespace {
|
namespace {
|
||||||
@ -16,7 +17,7 @@ ChangeValueDisplay<bool>::ChangeValueDisplay()
|
|||||||
{
|
{
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_TRUE>>>(true, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_TRUE>>>(true, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_FALSE>>>(false, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_FALSE>>>(false, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
|
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back, &icons::back_grey>>>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeValueDisplay<bool>::start()
|
void ChangeValueDisplay<bool>::start()
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "actions/setvalueaction.h"
|
#include "actions/setvalueaction.h"
|
||||||
#include "actions/backproxyaction.h"
|
#include "actions/backproxyaction.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
|
#include "icons/back_grey.h"
|
||||||
|
|
||||||
namespace espgui {
|
namespace espgui {
|
||||||
namespace {
|
namespace {
|
||||||
@ -23,7 +24,7 @@ ChangeValueDisplay<espchrono::DayLightSavingMode>::ChangeValueDisplay()
|
|||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_NONE>>>(espchrono::DayLightSavingMode::None, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_NONE>>>(espchrono::DayLightSavingMode::None, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_EUROPEANSUMMERTIME>>>(espchrono::DayLightSavingMode::EuropeanSummerTime, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_EUROPEANSUMMERTIME>>>(espchrono::DayLightSavingMode::EuropeanSummerTime, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_USDAYLIGHTTIME>>>(espchrono::DayLightSavingMode::UsDaylightTime, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_USDAYLIGHTTIME>>>(espchrono::DayLightSavingMode::UsDaylightTime, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
|
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back, &icons::back_grey>>>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeValueDisplay<espchrono::DayLightSavingMode>::start()
|
void ChangeValueDisplay<espchrono::DayLightSavingMode>::start()
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "actions/setvalueaction.h"
|
#include "actions/setvalueaction.h"
|
||||||
#include "actions/backproxyaction.h"
|
#include "actions/backproxyaction.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
|
#include "icons/back_grey.h"
|
||||||
|
|
||||||
namespace espgui {
|
namespace espgui {
|
||||||
namespace {
|
namespace {
|
||||||
@ -21,7 +22,7 @@ ChangeValueDisplay<sntp_sync_mode_t>::ChangeValueDisplay()
|
|||||||
{
|
{
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_IMMED>>>(SNTP_SYNC_MODE_IMMED, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_IMMED>>>(SNTP_SYNC_MODE_IMMED, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_SMOOTH>>>(SNTP_SYNC_MODE_SMOOTH, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_SMOOTH>>>(SNTP_SYNC_MODE_SMOOTH, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
|
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back, &icons::back_grey>>>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeValueDisplay<sntp_sync_mode_t>::start()
|
void ChangeValueDisplay<sntp_sync_mode_t>::start()
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "actions/setvalueaction.h"
|
#include "actions/setvalueaction.h"
|
||||||
#include "actions/backproxyaction.h"
|
#include "actions/backproxyaction.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
|
#include "icons/back_grey.h"
|
||||||
|
|
||||||
namespace espgui {
|
namespace espgui {
|
||||||
namespace {
|
namespace {
|
||||||
@ -35,7 +36,7 @@ ChangeValueDisplay<wifi_auth_mode_t>::ChangeValueDisplay()
|
|||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA3_PSK>>>(WIFI_AUTH_WPA3_PSK, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA3_PSK>>>(WIFI_AUTH_WPA3_PSK, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_WPA3_PSK>>>(WIFI_AUTH_WPA2_WPA3_PSK, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_WPA3_PSK>>>(WIFI_AUTH_WPA2_WPA3_PSK, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WAPI_PSK>>>(WIFI_AUTH_WAPI_PSK, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WAPI_PSK>>>(WIFI_AUTH_WAPI_PSK, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
|
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back, &icons::back_grey>>>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeValueDisplay<wifi_auth_mode_t>::start()
|
void ChangeValueDisplay<wifi_auth_mode_t>::start()
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "actions/setvalueaction.h"
|
#include "actions/setvalueaction.h"
|
||||||
#include "actions/backproxyaction.h"
|
#include "actions/backproxyaction.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
|
#include "icons/back_grey.h"
|
||||||
|
|
||||||
namespace espgui {
|
namespace espgui {
|
||||||
namespace {
|
namespace {
|
||||||
@ -25,7 +26,7 @@ ChangeValueDisplay<wifi_mode_t>::ChangeValueDisplay()
|
|||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_STA>>>(WIFI_MODE_STA, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_STA>>>(WIFI_MODE_STA, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_AP>>>(WIFI_MODE_AP, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_AP>>>(WIFI_MODE_AP, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_APSTA>>>(WIFI_MODE_APSTA, *this, *this, *this);
|
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_APSTA>>>(WIFI_MODE_APSTA, *this, *this, *this);
|
||||||
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
|
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back, &icons::back_grey>>>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeValueDisplay<wifi_mode_t>::start()
|
void ChangeValueDisplay<wifi_mode_t>::start()
|
||||||
|
@ -4,15 +4,17 @@
|
|||||||
#include "menuitem.h"
|
#include "menuitem.h"
|
||||||
#include "accessorinterface.h"
|
#include "accessorinterface.h"
|
||||||
#include "icons/checked.h"
|
#include "icons/checked.h"
|
||||||
|
#include "icons/checked_grey.h"
|
||||||
#include "icons/unchecked.h"
|
#include "icons/unchecked.h"
|
||||||
|
#include "icons/unchecked_grey.h"
|
||||||
|
|
||||||
namespace espgui {
|
namespace espgui {
|
||||||
class CheckboxIcon : public virtual MenuItemIconInterface, public virtual AccessorInterface<bool>
|
class CheckboxIcon : public virtual MenuItemIconInterface, public virtual AccessorInterface<bool>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
const MenuItemIcon *icon() const override
|
const MenuItemIcon *icon(bool selected) const override
|
||||||
{
|
{
|
||||||
return getValue() ? &icons::checked : &icons::unchecked;
|
return getValue() ? (selected ? &icons::checked_grey : &icons::checked) : (selected ? &icons::unchecked_grey : &icons::unchecked);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace espgui
|
} // namespace espgui
|
||||||
|
@ -12,25 +12,11 @@ public:
|
|||||||
virtual const Icon<width, height> *icon() const { return nullptr; }
|
virtual const Icon<width, height> *icon() const { return nullptr; }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<uint16_t width, uint16_t height>
|
|
||||||
class SelectedIconInterface
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual const Icon<width, height> *selectedIcon() const { return nullptr; }
|
|
||||||
};
|
|
||||||
|
|
||||||
template<uint16_t width, uint16_t height, const Icon<width, height> *T>
|
template<uint16_t width, uint16_t height, const Icon<width, height> *T>
|
||||||
class StaticIcon : public virtual IconInterface<width, height>
|
class StaticIcon : public virtual IconInterface<width, height>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual const Icon<width, height> *icon() const { return T; }
|
virtual const Icon<width, height> *icon() const override { return T; }
|
||||||
};
|
|
||||||
|
|
||||||
template<uint16_t width, uint16_t height, const Icon<width, height> *T>
|
|
||||||
class StaticSelectedIcon : public virtual SelectedIconInterface<width, height>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual const Icon<width, height> *selectedIcon() const { return T; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace espgui
|
} // namespace espgui
|
||||||
|
45
src/icons/back_grey.cpp
Normal file
45
src/icons/back_grey.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "back_grey.h"
|
||||||
|
|
||||||
|
namespace espgui {
|
||||||
|
namespace icons {
|
||||||
|
const Icon<24, 24> back_grey {{
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xab4a, 0xcb52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a,
|
||||||
|
0xcd4a, 0x103b, 0x6b4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xad3a, 0xb65c, 0x755c, 0x6a4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x8d2a, 0xf764,
|
||||||
|
0xfb75, 0x755c, 0x8a52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0x8d2a, 0x1765, 0x1b76, 0x1b76, 0xd75c, 0x6e22, 0xce3a, 0xce3a, 0xce3a, 0xad3a, 0x8d3a,
|
||||||
|
0x6c3a, 0x6b4a, 0xcb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xad3a, 0xf764, 0x3c7e, 0x1c76,
|
||||||
|
0x1c76, 0x1c6e, 0xbb65, 0x9a5d, 0x7a5d, 0x3955, 0xf854, 0xb74c, 0x764c, 0xd43b, 0x103b, 0xac42, 0xcb52, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xaa52, 0xee42, 0xf764, 0x3c7e, 0x5c7e, 0x5c76, 0x5c76, 0x3c6e, 0x1c66, 0xfc65, 0xbb5d, 0x9a55, 0x5a4d, 0xf944,
|
||||||
|
0xd844, 0x973c, 0x5644, 0xb43b, 0xef3a, 0xab4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xee42, 0xf764, 0x3c86, 0x3c7e, 0x3c6e, 0x3c66,
|
||||||
|
0x3d66, 0x3d5e, 0x1c5e, 0xfc5d, 0xdb55, 0x9b55, 0x5a4d, 0x1945, 0xb83c, 0x7734, 0x3634, 0xf533, 0xd43b, 0xef3a, 0xcb52, 0xeb5a,
|
||||||
|
0xcb5a, 0xce3a, 0xb754, 0x9a5d, 0x7a4d, 0x7b3d, 0x7b35, 0x9c2d, 0xdc2d, 0xdc2d, 0xbc2d, 0x7b2d, 0x5a35, 0x5a3d, 0x3a45, 0x1945,
|
||||||
|
0xd83c, 0x7734, 0x3634, 0xd52b, 0xb52b, 0x9433, 0xad42, 0xcb5a, 0xcb5a, 0xad3a, 0x3634, 0xd924, 0xd914, 0x1a1d, 0x5b1d, 0x9c1d,
|
||||||
|
0xdd25, 0xdd25, 0x9c1d, 0x5b1d, 0x1a1d, 0xd91c, 0xb81c, 0xb82c, 0xb83c, 0x7734, 0x362c, 0xd52b, 0x9423, 0xd533, 0xef32, 0xcb5a,
|
||||||
|
0xeb5a, 0xcb5a, 0xce3a, 0x562c, 0xf924, 0x1a1d, 0x5b1d, 0x7c1d, 0xbc1d, 0xbc25, 0x9c1d, 0x5b1d, 0x1a1d, 0xd91c, 0x981c, 0x5714,
|
||||||
|
0x371c, 0x362c, 0x162c, 0xd523, 0x9423, 0xb523, 0x322b, 0xab52, 0xeb5a, 0xeb5a, 0xaa52, 0xee3a, 0x7734, 0x1a25, 0x3a1d, 0x5b1d,
|
||||||
|
0x7b1d, 0x7b1d, 0x5b1d, 0x3a1d, 0xfa1c, 0xb91c, 0x781c, 0x5714, 0x1614, 0xd513, 0xd523, 0xb523, 0x941b, 0x941b, 0x522b, 0xab4a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xaa52, 0xee3a, 0x7734, 0x1a25, 0x1a1d, 0x3a1d, 0x5b2d, 0x3a2d, 0x1a2d, 0xf924, 0xd924, 0x7814, 0x3714,
|
||||||
|
0xf613, 0xb513, 0x9413, 0x741b, 0x741b, 0x941b, 0x322b, 0xab4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xaa52, 0xce3a, 0x9734, 0x1a1d,
|
||||||
|
0xfa1c, 0x973c, 0x302b, 0x5133, 0x7233, 0xb42b, 0x1534, 0x572c, 0xf613, 0x9513, 0x7413, 0x5313, 0x5413, 0x9423, 0x1133, 0xcb52,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0x8d32, 0x9734, 0xd924, 0xf433, 0x694a, 0xeb5a, 0xcb5a, 0x8b52, 0x8b42, 0xef32,
|
||||||
|
0xd533, 0x9513, 0x5413, 0x3313, 0x330b, 0x9423, 0xef3a, 0xcb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0x8d32,
|
||||||
|
0x7634, 0xf43b, 0x6a4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xae32, 0xb42b, 0x330b, 0x3313, 0x340b, 0x732b, 0xcd42, 0xcb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xae3a, 0x5133, 0x6b4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0x8b4a, 0x532b, 0x5413, 0x330b, 0x541b, 0x3133, 0xcb52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xab52, 0x6c3a, 0xab52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xab4a, 0x322b, 0x7413, 0x330b, 0x5323, 0xed42, 0xcb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xcb5a, 0xcb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xab4a, 0x522b, 0x5413, 0x531b, 0x103b, 0xcb52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x8c3a, 0x732b, 0x541b, 0x3133, 0xcc52, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xae32, 0xb42b, 0x522b, 0xed4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x8b4a, 0x3133, 0x723b, 0xcd4a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x4c32,
|
||||||
|
0xae32, 0xec52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xab52, 0xcb52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
|
||||||
|
}};
|
||||||
|
} // namespace icons
|
||||||
|
} // namespace espgui
|
10
src/icons/back_grey.h
Normal file
10
src/icons/back_grey.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "icon.h"
|
||||||
|
|
||||||
|
namespace espgui {
|
||||||
|
namespace icons {
|
||||||
|
extern const Icon<24, 24> back_grey;
|
||||||
|
} // namespace icons
|
||||||
|
} // namespace espgui
|
45
src/icons/checked_grey.cpp
Normal file
45
src/icons/checked_grey.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "checked_grey.h"
|
||||||
|
|
||||||
|
namespace espgui {
|
||||||
|
namespace icons {
|
||||||
|
const Icon<24, 24> checked_grey {{
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xec52, 0x312b, 0x5413, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x5413, 0x0f3b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xec52, 0x550b, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x9944, 0xddbe, 0xbfef, 0xffff, 0xddbe, 0x3a5d, 0x550b, 0xec52, 0xeb5a,
|
||||||
|
0xeb5a, 0x550b, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0xbb7d, 0xffff,
|
||||||
|
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbb7d, 0x550b, 0xec52, 0x0f3b, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x3a65, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9944, 0x312b,
|
||||||
|
0x5413, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0xddbe, 0xffff, 0xffff,
|
||||||
|
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xddbe, 0x5413, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbfef, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0xbfef, 0xffff, 0xffff,
|
||||||
|
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7603, 0x5413, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0xddbe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xddbe, 0x5413,
|
||||||
|
0x312b, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x9944, 0xffff, 0xffff,
|
||||||
|
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a5d, 0x0f3b, 0xec52, 0x550b, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0xbb85, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbb85, 0x550b, 0xeb5a,
|
||||||
|
0xeb5a, 0xec52, 0x550b, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x3a65,
|
||||||
|
0xddbe, 0xffff, 0xbfef, 0xddbe, 0x9944, 0x550b, 0xec52, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x0f3b, 0x5413, 0x7603, 0x7603, 0x7603,
|
||||||
|
0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x7603, 0x5413, 0x312b, 0xec52, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
|
||||||
|
}};
|
||||||
|
} // namespace icons
|
||||||
|
} // namespace espgui
|
10
src/icons/checked_grey.h
Normal file
10
src/icons/checked_grey.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "icon.h"
|
||||||
|
|
||||||
|
namespace espgui {
|
||||||
|
namespace icons {
|
||||||
|
extern const Icon<24, 24> checked_grey;
|
||||||
|
} // namespace icons
|
||||||
|
} // namespace espgui
|
45
src/icons/unchecked_grey.cpp
Normal file
45
src/icons/unchecked_grey.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "unchecked_grey.h"
|
||||||
|
|
||||||
|
namespace espgui {
|
||||||
|
namespace icons {
|
||||||
|
const Icon<24, 24> unchecked_grey {{
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0x6e6b, 0xaf6b, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073,
|
||||||
|
0xf073, 0xf073, 0xf073, 0xaf73, 0x4d63, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x0c5b, 0xcf73, 0xaf6b, 0x0c63, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x0c63, 0x8e6b, 0xcf73, 0x0c5b, 0xeb5a,
|
||||||
|
0xeb5a, 0xcf73, 0x6d6b, 0x0c5b, 0xaf6b, 0xd073, 0xf073, 0x8f6b, 0x0c5b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x6d6b, 0xcf73, 0xeb5a, 0x4d63, 0x8e6b, 0x0c5b, 0xd073, 0xf073, 0xf073, 0xf073, 0xf073,
|
||||||
|
0xd073, 0x0c5b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xaf6b, 0x6d6b,
|
||||||
|
0xaf73, 0x2c63, 0x8e6b, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xaf6b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x0c63, 0xaf6b, 0xf073, 0xeb5a, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073,
|
||||||
|
0xf073, 0xd073, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xf073,
|
||||||
|
0xf073, 0xeb5a, 0xd073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xf073, 0xaf6b, 0x2c63, 0xaf6b, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073,
|
||||||
|
0xf073, 0x8f6b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x0c63, 0xaf73,
|
||||||
|
0x6d6b, 0xaf6b, 0x0c5b, 0xd073, 0xf073, 0xf073, 0xf073, 0xf073, 0xd073, 0x0c5b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x8e6b, 0x4d63, 0xeb5a, 0xcf73, 0x6e6b, 0x0c5b, 0xae6b, 0xf073, 0xd073, 0xaf6b,
|
||||||
|
0x0c5b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x6e6b, 0xcf73, 0xeb5a,
|
||||||
|
0xeb5a, 0x0c5b, 0xcf73, 0x8e6b, 0x2c63, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0x2c63, 0xaf6b, 0xcf73, 0x0c5b, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0x4d63, 0xaf73, 0xf073, 0xf073, 0xf073,
|
||||||
|
0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xf073, 0xaf6b, 0x6d6b, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a, 0xeb5a,
|
||||||
|
|
||||||
|
}};
|
||||||
|
} // namespace icons
|
||||||
|
} // namespace espgui
|
10
src/icons/unchecked_grey.h
Normal file
10
src/icons/unchecked_grey.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "icon.h"
|
||||||
|
|
||||||
|
namespace espgui {
|
||||||
|
namespace icons {
|
||||||
|
extern const Icon<24, 24> unchecked_grey;
|
||||||
|
} // namespace icons
|
||||||
|
} // namespace espgui
|
@ -175,9 +175,8 @@ void MenuDisplay::redraw(TftInterface &tft)
|
|||||||
|
|
||||||
labelsIter->redraw(tft, item.text(), item.color(), selected ? TFT_GREY : TFT_BLACK, item.font());
|
labelsIter->redraw(tft, item.text(), item.color(), selected ? TFT_GREY : TFT_BLACK, item.font());
|
||||||
|
|
||||||
if (item.icon() != *iconsIter)
|
if (const auto icon = item.icon(selected); icon != *iconsIter)
|
||||||
{
|
{
|
||||||
auto icon = item.icon();
|
|
||||||
if (icon)
|
if (icon)
|
||||||
tft.pushImage(6, labelsIter->y() + 1, *icon);
|
tft.pushImage(6, labelsIter->y() + 1, *icon);
|
||||||
else if (*iconsIter)
|
else if (*iconsIter)
|
||||||
|
@ -13,12 +13,40 @@ namespace espgui {
|
|||||||
|
|
||||||
using MenuItemIcon = Icon<24, 24>;
|
using MenuItemIcon = Icon<24, 24>;
|
||||||
|
|
||||||
using MenuItemIconInterface = IconInterface<24, 24>;
|
template<uint16_t width, uint16_t height>
|
||||||
|
class SelectableIconInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual const Icon<width, height> *icon(bool selected) const { return nullptr; }
|
||||||
|
};
|
||||||
|
|
||||||
|
template<uint16_t width, uint16_t height, const Icon<width, height> *T, const Icon<width, height> *Tselected>
|
||||||
|
class StaticSelectableIcon : public virtual SelectableIconInterface<width, height>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual const Icon<width, height> *icon(bool selected) const override { return selected ? Tselected : T; }
|
||||||
|
};
|
||||||
|
|
||||||
|
template<uint16_t width, uint16_t height>
|
||||||
|
class SelectedIconInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual const Icon<width, height> *selectedIcon() const { return nullptr; }
|
||||||
|
};
|
||||||
|
|
||||||
|
template<uint16_t width, uint16_t height, const Icon<width, height> *T>
|
||||||
|
class StaticSelectedIcon : public virtual SelectedIconInterface<width, height>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual const Icon<width, height> *selectedIcon() const override { return T; }
|
||||||
|
};
|
||||||
|
|
||||||
|
using MenuItemIconInterface = SelectableIconInterface<24, 24>;
|
||||||
|
|
||||||
using MenuItemSelectedIconInterface = SelectedIconInterface<24, 24>;
|
using MenuItemSelectedIconInterface = SelectedIconInterface<24, 24>;
|
||||||
|
|
||||||
template<const MenuItemIcon *T>
|
template<const MenuItemIcon *T, const MenuItemIcon *Tselected>
|
||||||
using StaticMenuItemIcon = StaticIcon<24, 24, T>;
|
using StaticMenuItemIcon = StaticSelectableIcon<24, 24, T, Tselected>;
|
||||||
|
|
||||||
template<const MenuItemIcon *T>
|
template<const MenuItemIcon *T>
|
||||||
using StaticMenuItemSelectedIcon = StaticSelectedIcon<24, 24, T>;
|
using StaticMenuItemSelectedIcon = StaticSelectedIcon<24, 24, T>;
|
||||||
|
Reference in New Issue
Block a user