diff --git a/components/TFT_eSPI b/components/TFT_eSPI index 5b450e3..d27de95 160000 --- a/components/TFT_eSPI +++ b/components/TFT_eSPI @@ -1 +1 @@ -Subproject commit 5b450e3992c7a36f9789b75e4464d9b434d72375 +Subproject commit d27de95f6bf1892387d15d05a6acec52cc2df316 diff --git a/components/cpputils b/components/cpputils index b60122f..e4176f9 160000 --- a/components/cpputils +++ b/components/cpputils @@ -1 +1 @@ -Subproject commit b60122ff4a19f821b2ebc2080a9fe7aae3febc83 +Subproject commit e4176f9d0c7508cb5dcee6b2dbff0b8d52ecd182 diff --git a/components/esp-gui-lib b/components/esp-gui-lib index f4b568f..ad0d903 160000 --- a/components/esp-gui-lib +++ b/components/esp-gui-lib @@ -1 +1 @@ -Subproject commit f4b568f055ac3d0e67e657895736b2cc852540cf +Subproject commit ad0d90339e63ad97ff64875d6c17aba887d7d6e2 diff --git a/icons/back.png b/icons/back.png deleted file mode 100644 index c19f8d8..0000000 Binary files a/icons/back.png and /dev/null differ diff --git a/icons/checked.png b/icons/checked.png deleted file mode 100644 index 2227014..0000000 Binary files a/icons/checked.png and /dev/null differ diff --git a/icons/unchecked.png b/icons/unchecked.png deleted file mode 100644 index 3d2eb26..0000000 Binary files a/icons/unchecked.png and /dev/null differ diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 089a511..da8b5e4 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,10 +1,7 @@ set(headers - accessorinterface.h accessors/globalaccessors.h accessors/settingsaccessors.h accessors/wifiaccessors.h - actioninterface.h - actions/backproxyaction.h actions/bluetoothbeginaction.h actions/bluetoothbeginmasteraction.h actions/bluetoothconnectbmsaction.h @@ -15,15 +12,12 @@ set(headers actions/bmsturnoffdischargeaction.h actions/bmsturnonchargeaction.h actions/bmsturnondischargeaction.h - actions/dummyaction.h actions/erasenvsaction.h actions/loadsettingsaction.h actions/modesettingsaction.h actions/multiaction.h actions/rebootaction.h actions/savesettingsaction.h - actions/setvalueaction.h - actions/switchscreenaction.h actions/tempomatmodeapplycurrentpeedaction.h actions/toggleboolaction.h actions/wifiscanaction.h @@ -34,16 +28,13 @@ set(headers bletexthelpers.h bmsutils.h changevaluedisplay_bluetoothmode.h - changevaluedisplay_bool.h - changevaluedisplay_sntp_sync_mode_t.h - changevaluedisplay_daylightsavingmode.h + changevaluedisplay_controlmode.h + changevaluedisplay_controltype.h changevaluedisplay_larsmmode_mode.h changevaluedisplay_unifiedmodelmode.h changevaluedisplay_wifi_mode_t.h changevaluedisplay_wifi_power_t.h - checkboxicon.h cloud.h - colorinterface.h debugcolorhelpers.h displays/gameoflifedisplay.h displays/graphdisplay.h @@ -99,15 +90,11 @@ set(headers displays/statusdisplay.h displays/updatedisplay.h esp_websocket_client.h - fontinterface.h htmltag.h - iconinterface.h icons/alert.h - icons/back.h icons/bluetooth.h icons/bms.h icons/buzzer.h - icons/checked.h icons/close.h icons/demos.h icons/graph.h @@ -122,12 +109,9 @@ set(headers icons/scan.h icons/settings.h icons/time.h - icons/unchecked.h icons/update.h icons/wifi.h ledstrip.h - menudisplay.h - menuitem.h modes/defaultmode.h modes/gametrakmode.h modes/ignoreinputmode.h @@ -137,23 +121,13 @@ set(headers rotary.h screens.h types.h - widgets/progressbar.h - widgets/reverseprogressbar.h - widgets/verticalmeter.h - widgets/vumeter.h - widgets/graph.h - widgets/label.h esptexthelpers.h presets.h bluetoothtexthelpers.h buttons.h can.h - changevaluedisplay.h - changevaluedisplay_controlmode.h - changevaluedisplay_controltype.h controller.h debugtexthelpers.h - display.h dpad.h dpad3wire.h dpad5wire.h @@ -169,7 +143,7 @@ set(headers settingspersister.h settingsutils.h statistics.h - textinterface.h + statustexthelper.h texts.h time_bobbycar.h unifiedmodelmode.h diff --git a/main/accessorinterface.h b/main/accessorinterface.h deleted file mode 100644 index 93351a1..0000000 --- a/main/accessorinterface.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -namespace { -template -struct AccessorInterface -{ - virtual T getValue() const = 0; - virtual void setValue(T value) = 0; -}; - -//! A special type of AccessorInterface that allows for simple variable read/write operations -//! Can be used to read and write global settings for example. -template -struct RefAccessor : public virtual AccessorInterface -{ - virtual T& getRef() const = 0; - - T getValue() const override { return getRef(); }; - void setValue(T value) override { getRef() = value; }; -}; -} diff --git a/main/accessors/globalaccessors.h b/main/accessors/globalaccessors.h index 050dfed..2faf7c7 100644 --- a/main/accessors/globalaccessors.h +++ b/main/accessors/globalaccessors.h @@ -5,6 +5,8 @@ #include "globals.h" #include "modes/tempomatmode.h" +using namespace espgui; + namespace { struct AvgSpeedAccessor : public RefAccessor { float &getRef() const override { return avgSpeed; } }; diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 5d0115b..16e3544 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -5,6 +5,8 @@ #include "accessorinterface.h" #include "utils.h" +using namespace espgui; + namespace { //! Special type of RefAccessor that also saves settings after setValue() template @@ -110,7 +112,6 @@ struct GametrakYMaxAccessor : public RefAccessorSaveSettings { int16_t struct GametrakDistMinAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMin; } }; struct GametrakDistMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMax; } }; #endif -struct SwapScreenBytesAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.boardcomputerHardware.swapScreenBytes; } }; struct PotiReadRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.potiReadRate; } }; struct ModeUpdateRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.modeUpdateRate; } }; struct StatsUpdateRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.statsUpdateRate; } }; diff --git a/main/accessors/wifiaccessors.h b/main/accessors/wifiaccessors.h index 376959a..633e863 100644 --- a/main/accessors/wifiaccessors.h +++ b/main/accessors/wifiaccessors.h @@ -3,5 +3,7 @@ // local includes #include "accessorinterface.h" +using namespace espgui; + namespace { } diff --git a/main/actioninterface.h b/main/actioninterface.h deleted file mode 100644 index d2cf9d0..0000000 --- a/main/actioninterface.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -namespace { -class ActionInterface -{ -public: - virtual void triggered() = 0; -}; -} diff --git a/main/actions/backproxyaction.h b/main/actions/backproxyaction.h deleted file mode 100644 index f168172..0000000 --- a/main/actions/backproxyaction.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "actioninterface.h" - -namespace { -class BackProxyAction : public virtual ActionInterface -{ -public: - BackProxyAction(BackInterface &backInterface) : - m_backInterface{backInterface} - { - } - - void triggered() override - { - m_backInterface.back(); - } - -private: - BackInterface &m_backInterface; -}; -} diff --git a/main/actions/bluetoothbeginaction.h b/main/actions/bluetoothbeginaction.h index 1fe82c8..b06ffbe 100644 --- a/main/actions/bluetoothbeginaction.h +++ b/main/actions/bluetoothbeginaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "globals.h" +using namespace espgui; + namespace { #ifdef FEATURE_BLUETOOTH class BluetoothBeginAction : public virtual ActionInterface diff --git a/main/actions/bluetoothbeginmasteraction.h b/main/actions/bluetoothbeginmasteraction.h index 89131b2..a63c9aa 100644 --- a/main/actions/bluetoothbeginmasteraction.h +++ b/main/actions/bluetoothbeginmasteraction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "globals.h" +using namespace espgui; + namespace { #ifdef FEATURE_BLUETOOTH class BluetoothBeginMasterAction : public virtual ActionInterface diff --git a/main/actions/bluetoothconnectbmsaction.h b/main/actions/bluetoothconnectbmsaction.h index 49570d4..ef0f6c5 100644 --- a/main/actions/bluetoothconnectbmsaction.h +++ b/main/actions/bluetoothconnectbmsaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "globals.h" +using namespace espgui; + namespace { #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) class BluetoothConnectBmsAction : public virtual ActionInterface diff --git a/main/actions/bluetoothdisconnectaction.h b/main/actions/bluetoothdisconnectaction.h index 1e1eb52..82d778f 100644 --- a/main/actions/bluetoothdisconnectaction.h +++ b/main/actions/bluetoothdisconnectaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "globals.h" +using namespace espgui; + namespace { #ifdef FEATURE_BLUETOOTH class BluetoothDisconnectAction : public virtual ActionInterface diff --git a/main/actions/bluetoothendaction.h b/main/actions/bluetoothendaction.h index f7490e9..8a1ed67 100644 --- a/main/actions/bluetoothendaction.h +++ b/main/actions/bluetoothendaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "globals.h" +using namespace espgui; + namespace { #ifdef FEATURE_BLUETOOTH class BluetoothEndAction : public virtual ActionInterface diff --git a/main/actions/bluetoothflushaction.h b/main/actions/bluetoothflushaction.h index 0549b15..527e1b7 100644 --- a/main/actions/bluetoothflushaction.h +++ b/main/actions/bluetoothflushaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "globals.h" +using namespace espgui; + namespace { #ifdef FEATURE_BLUETOOTH class BluetoothFlushAction : public virtual ActionInterface diff --git a/main/actions/bmsturnoffchargeaction.h b/main/actions/bmsturnoffchargeaction.h index 52ae81e..719d84a 100644 --- a/main/actions/bmsturnoffchargeaction.h +++ b/main/actions/bmsturnoffchargeaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "bmsutils.h" +using namespace espgui; + namespace { #ifdef FEATURE_BMS class BmsTurnOffChargeAction : public virtual ActionInterface diff --git a/main/actions/bmsturnoffdischargeaction.h b/main/actions/bmsturnoffdischargeaction.h index 706cec3..6f123ca 100644 --- a/main/actions/bmsturnoffdischargeaction.h +++ b/main/actions/bmsturnoffdischargeaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "bmsutils.h" +using namespace espgui; + namespace { #ifdef FEATURE_BMS class BmsTurnOffDischargeAction : public virtual ActionInterface diff --git a/main/actions/bmsturnonchargeaction.h b/main/actions/bmsturnonchargeaction.h index bdcfe7a..712c568 100644 --- a/main/actions/bmsturnonchargeaction.h +++ b/main/actions/bmsturnonchargeaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "bmsutils.h" +using namespace espgui; + namespace { #ifdef FEATURE_BMS class BmsTurnOnChargeAction : public virtual ActionInterface diff --git a/main/actions/bmsturnondischargeaction.h b/main/actions/bmsturnondischargeaction.h index c2d02fb..585a5ab 100644 --- a/main/actions/bmsturnondischargeaction.h +++ b/main/actions/bmsturnondischargeaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "bmsutils.h" +using namespace espgui; + namespace { #ifdef FEATURE_BMS class BmsTurnOnDischargeAction : public virtual ActionInterface diff --git a/main/actions/dummyaction.h b/main/actions/dummyaction.h deleted file mode 100644 index cc300ac..0000000 --- a/main/actions/dummyaction.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "actioninterface.h" - -namespace { -class DummyAction : public virtual ActionInterface -{ -public: - void triggered() override {} -}; -} diff --git a/main/actions/erasenvsaction.h b/main/actions/erasenvsaction.h index c350060..a918c84 100644 --- a/main/actions/erasenvsaction.h +++ b/main/actions/erasenvsaction.h @@ -8,6 +8,8 @@ #include "globals.h" #include "presets.h" +using namespace espgui; + namespace { class EraseNvsAction : public virtual ActionInterface { diff --git a/main/actions/loadsettingsaction.h b/main/actions/loadsettingsaction.h index 3bdb1b3..8d973d6 100644 --- a/main/actions/loadsettingsaction.h +++ b/main/actions/loadsettingsaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "utils.h" +using namespace espgui; + namespace { class LoadSettingsAction : public virtual ActionInterface { diff --git a/main/actions/modesettingsaction.h b/main/actions/modesettingsaction.h index f33f465..76564cc 100644 --- a/main/actions/modesettingsaction.h +++ b/main/actions/modesettingsaction.h @@ -11,6 +11,8 @@ #include "displays/menus/larsmmodesettingsmenu.h" #include "displays/menus/gametrakmodesettingsmenu.h" +using namespace espgui; + namespace { class ModeSettingsAction : public virtual ActionInterface { diff --git a/main/actions/multiaction.h b/main/actions/multiaction.h index 1975335..9b11353 100644 --- a/main/actions/multiaction.h +++ b/main/actions/multiaction.h @@ -2,6 +2,8 @@ #include "actioninterface.h" +using namespace espgui; + namespace { template class MultiAction; diff --git a/main/actions/rebootaction.h b/main/actions/rebootaction.h index fc77138..92b0125 100644 --- a/main/actions/rebootaction.h +++ b/main/actions/rebootaction.h @@ -6,6 +6,8 @@ #include "globals.h" #include "texts.h" +using namespace espgui; + namespace { class RebootAction : public virtual ActionInterface { diff --git a/main/actions/savesettingsaction.h b/main/actions/savesettingsaction.h index e02ea47..1f8dcb8 100644 --- a/main/actions/savesettingsaction.h +++ b/main/actions/savesettingsaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "utils.h" +using namespace espgui; + namespace { class SaveSettingsAction : public virtual ActionInterface { diff --git a/main/actions/setvalueaction.h b/main/actions/setvalueaction.h deleted file mode 100644 index a7a2781..0000000 --- a/main/actions/setvalueaction.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include "actioninterface.h" -#include "accessorinterface.h" - -namespace { -template -class SetValueAction : public virtual ActionInterface -{ -public: - SetValueAction(T value, AccessorInterface &accessorInterface, BackInterface &backInterface) : - m_value{value}, - m_accessorInterface{accessorInterface}, - m_backInterface{backInterface} - { - } - - void triggered() override - { - m_accessorInterface.setValue(m_value); - } - - T value() const { return m_value; } - -private: - const T m_value; - AccessorInterface &m_accessorInterface; - BackInterface &m_backInterface; -}; -} diff --git a/main/actions/switchprofileaction.h b/main/actions/switchprofileaction.h index 2010d29..735bf06 100644 --- a/main/actions/switchprofileaction.h +++ b/main/actions/switchprofileaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "settingsutils.h" +using namespace espgui; + namespace { template class SwitchProfileAction : public virtual ActionInterface diff --git a/main/actions/switchscreenaction.h b/main/actions/switchscreenaction.h deleted file mode 100644 index 3a68137..0000000 --- a/main/actions/switchscreenaction.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "actioninterface.h" -#include "utils.h" - -namespace { -template -class SwitchScreenAction : public virtual ActionInterface -{ -public: - void triggered() override { switchScreen(std::make_unique()...); } -}; -} diff --git a/main/actions/tempomatmodeapplycurrentpeedaction.h b/main/actions/tempomatmodeapplycurrentpeedaction.h index d801822..77113c1 100644 --- a/main/actions/tempomatmodeapplycurrentpeedaction.h +++ b/main/actions/tempomatmodeapplycurrentpeedaction.h @@ -5,6 +5,8 @@ #include "globals.h" #include "modes/tempomatmode.h" +using namespace espgui; + namespace { class TempomatModeApplyCurrentSpeedAction : public virtual ActionInterface { diff --git a/main/actions/toggleboolaction.h b/main/actions/toggleboolaction.h index 700b714..2eaae09 100644 --- a/main/actions/toggleboolaction.h +++ b/main/actions/toggleboolaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "accessorinterface.h" +using namespace espgui; + namespace { class ToggleBoolAction : public virtual ActionInterface, public virtual AccessorInterface { diff --git a/main/actions/updateswapfrontbackaction.h b/main/actions/updateswapfrontbackaction.h index f423d06..4c9c276 100644 --- a/main/actions/updateswapfrontbackaction.h +++ b/main/actions/updateswapfrontbackaction.h @@ -3,6 +3,8 @@ #include "actioninterface.h" #include "utils.h" +using namespace espgui; + namespace { #ifdef FEATURE_SERIAL class UpdateSwapFrontBackAction : public virtual ActionInterface diff --git a/main/actions/wifiscanaction.h b/main/actions/wifiscanaction.h index dc631d6..452874d 100644 --- a/main/actions/wifiscanaction.h +++ b/main/actions/wifiscanaction.h @@ -7,6 +7,8 @@ #include "actioninterface.h" #include "wifi_bobbycar.h" +using namespace espgui; + namespace { class WifiScanAction : public virtual ActionInterface { diff --git a/main/changevaluedisplay.h b/main/changevaluedisplay.h deleted file mode 100644 index 2463108..0000000 --- a/main/changevaluedisplay.h +++ /dev/null @@ -1,167 +0,0 @@ -#pragma once - -// 3rdparty lib includes -#include - -// local includes -#include "display.h" -#include "textinterface.h" -#include "actioninterface.h" -#include "accessorinterface.h" -#include "widgets/label.h" -#include "globals.h" -#include "utils.h" - -namespace { -class ChangeValueDisplayInterface : public Display, public virtual TextInterface, public virtual ActionInterface -{ -public: - void initScreen() override; - - TextInterface *asTextInterface() override { return this; } - const TextInterface *asTextInterface() const override { return this; } - - ChangeValueDisplayInterface *asChangeValueDisplayInterface() override { return this; } - const ChangeValueDisplayInterface *asChangeValueDisplayInterface() const override { return this; } - - virtual int shownValue() const = 0; - virtual void setShownValue(int value) = 0; - -protected: - Label m_titleLabel{5, 5}; // 230, 25 - Label m_valueLabel{26, 81}; // 188, 53 -}; - -template -class ChangeValueDisplaySettingsInterface -{ -public: - virtual Tvalue step() const { return 1; }; -}; - -template -class RatioNumberStep : public virtual ChangeValueDisplaySettingsInterface -{ -public: - Tvalue step() const override { return Tvalue(Tratio::num) / Tratio::den; } -}; - -template -class ChangeValueDisplay : public ChangeValueDisplayInterface, public virtual AccessorInterface, public virtual ChangeValueDisplaySettingsInterface -{ - using Base = ChangeValueDisplayInterface; - -public: - void start() override; - void update() override; - void redraw() override; - - void rotate(int offset) override; - void confirm() override; - - int shownValue() const { return m_value; } - void setShownValue(int value) { m_value = value; } - -private: - Tvalue m_value{}; - - int m_rotateOffset; - bool m_pressed{}; -}; - -void ChangeValueDisplayInterface::initScreen() -{ - tft.fillScreen(TFT_BLACK); - - m_titleLabel.start(); - - tft.fillRect(0, 34, tft.width(), 3, TFT_WHITE); - - tft.drawRect(25, 75, 190, 65, TFT_WHITE); - m_valueLabel.start(); - - tft.setTextFont(4); - tft.setTextColor(TFT_WHITE); - tft.drawString("Change value and", 10, 160); - tft.drawString("press button to", 10, 185); - tft.drawString("confirm and go", 10, 210); - tft.drawString("back.", 10, 235); -} - -template -void ChangeValueDisplay::start() -{ - m_value = static_cast*>(this)->getValue(); - - m_rotateOffset = 0; - m_pressed = false; -} - -template -void ChangeValueDisplay::update() -{ - if (!m_pressed) - { - const auto rotateOffset = m_rotateOffset; - m_rotateOffset = 0; - - m_value -= rotateOffset * static_cast*>(this)->step(); - } - else - { - static_cast*>(this)->setValue(m_value); - triggered(); - } -} - -template -void ChangeValueDisplay::redraw() -{ - tft.setTextFont(4); - tft.setTextColor(TFT_YELLOW); - m_titleLabel.redraw(text()); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.setTextFont(7); - m_valueLabel.redraw(std::to_string(m_value)); -} - -template<> -void ChangeValueDisplay::redraw() -{ - tft.setTextFont(4); - tft.setTextColor(TFT_YELLOW); - m_titleLabel.redraw(text()); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.setTextFont(7); - m_valueLabel.redraw(fmt::format("{:.02f}", m_value)); -} - -template -void ChangeValueDisplay::rotate(int offset) -{ - m_rotateOffset += offset; -} - -template -void ChangeValueDisplay::confirm() -{ - m_pressed = true; -} -} - -#include "changevaluedisplay_bool.h" -#ifdef FEATURE_BLUETOOTH -#include "changevaluedisplay_bluetoothmode.h" -#endif -#ifdef FEATURE_NTP -#include "changevaluedisplay_sntp_sync_mode_t.h" -#endif -#include "changevaluedisplay_controlmode.h" -#include "changevaluedisplay_controltype.h" -#include "changevaluedisplay_daylightsavingmode.h" -#include "changevaluedisplay_larsmmode_mode.h" -#include "changevaluedisplay_unifiedmodelmode.h" -#include "changevaluedisplay_wifi_mode_t.h" -#include "changevaluedisplay_wifi_power_t.h" diff --git a/main/changevaluedisplay_bluetoothmode.h b/main/changevaluedisplay_bluetoothmode.h index 1d61c31..e34fcb3 100644 --- a/main/changevaluedisplay_bluetoothmode.h +++ b/main/changevaluedisplay_bluetoothmode.h @@ -12,7 +12,7 @@ #include "bluetoothmode.h" #endif -namespace { +namespace espgui { #ifdef FEATURE_BLUETOOTH template<> class ChangeValueDisplay : @@ -33,7 +33,7 @@ ChangeValueDisplay::ChangeValueDisplay() constructMenuItem, StaticText>>(BluetoothMode::Off, *this, *this); constructMenuItem, StaticText>>(BluetoothMode::Master, *this, *this); constructMenuItem, StaticText>>(BluetoothMode::Slave, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); } void ChangeValueDisplay::start() @@ -51,4 +51,4 @@ void ChangeValueDisplay::start() } } #endif -} +} // namespace espgui diff --git a/main/changevaluedisplay_bool.h b/main/changevaluedisplay_bool.h deleted file mode 100644 index 483e3f5..0000000 --- a/main/changevaluedisplay_bool.h +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -// local includes -#include "changevaluedisplay.h" -#include "menudisplay.h" -#include "actioninterface.h" -#include "utils.h" -#include "actions/setvalueaction.h" -#include "actions/backproxyaction.h" -#include "icons/back.h" -#include "texts.h" - -namespace { -template<> -class ChangeValueDisplay : - public MenuDisplay, - public virtual AccessorInterface, - public virtual ActionInterface -{ - using Base = MenuDisplay; - -public: - ChangeValueDisplay(); - - void start() override; -}; - -ChangeValueDisplay::ChangeValueDisplay() -{ - constructMenuItem, StaticText>>(true, *this, *this); - constructMenuItem, StaticText>>(false, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); -} - -void ChangeValueDisplay::start() -{ - Base::start(); - - switch (getValue()) - { - case true: setSelectedIndex(0); break; - case false: setSelectedIndex(1); break; - } -} -} diff --git a/main/changevaluedisplay_controlmode.h b/main/changevaluedisplay_controlmode.h index c0398ba..91abbf2 100644 --- a/main/changevaluedisplay_controlmode.h +++ b/main/changevaluedisplay_controlmode.h @@ -12,7 +12,7 @@ #include "icons/back.h" #include "texts.h" -namespace { +namespace espgui { template<> class ChangeValueDisplay : public MenuDisplay, @@ -34,7 +34,7 @@ ChangeValueDisplay::ChangeValueDisplay() constructMenuItem, StaticText>>(ControlMode::Voltage, *this, *this); constructMenuItem, StaticText>>(ControlMode::Speed, *this, *this); constructMenuItem, StaticText>>(ControlMode::Torque, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); } void ChangeValueDisplay::start() @@ -53,4 +53,4 @@ void ChangeValueDisplay::start() setSelectedIndex(4); } } -} +} // namespace espgui diff --git a/main/changevaluedisplay_controltype.h b/main/changevaluedisplay_controltype.h index 094b4d6..fa84ba0 100644 --- a/main/changevaluedisplay_controltype.h +++ b/main/changevaluedisplay_controltype.h @@ -12,7 +12,7 @@ #include "icons/back.h" #include "texts.h" -namespace { +namespace espgui { template<> class ChangeValueDisplay : public MenuDisplay, @@ -33,7 +33,7 @@ ChangeValueDisplay::ChangeValueDisplay() constructMenuItem, StaticText>>(ControlType::Commutation, *this, *this); constructMenuItem, StaticText>>(ControlType::Sinusoidal, *this, *this); constructMenuItem, StaticText>>(ControlType::FieldOrientedControl, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); } void ChangeValueDisplay::start() @@ -51,4 +51,4 @@ void ChangeValueDisplay::start() setSelectedIndex(3); } } -} +} // namespace espgui diff --git a/main/changevaluedisplay_daylightsavingmode.h b/main/changevaluedisplay_daylightsavingmode.h deleted file mode 100644 index 1783be6..0000000 --- a/main/changevaluedisplay_daylightsavingmode.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -// esp-idf includes -#include - -// 3rdparty lib includes -#include - -// local includes -#include "changevaluedisplay.h" -#include "menudisplay.h" -#include "utils.h" -#include "actions/setvalueaction.h" -#include "actions/backproxyaction.h" -#include "icons/back.h" -#include "texts.h" - -namespace { -template<> -class ChangeValueDisplay : - public MenuDisplay, - public virtual AccessorInterface, - public virtual ActionInterface -{ - using Base = MenuDisplay; - -public: - ChangeValueDisplay(); - - void start() override; -}; - -ChangeValueDisplay::ChangeValueDisplay() -{ - constructMenuItem, StaticText>>(espchrono::DayLightSavingMode::None, *this, *this); - constructMenuItem, StaticText>>(espchrono::DayLightSavingMode::EuropeanSummerTime, *this, *this); - constructMenuItem, StaticText>>(espchrono::DayLightSavingMode::UsDaylightTime, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); -} - -void ChangeValueDisplay::start() -{ - Base::start(); - - switch (const auto value = getValue()) - { - case espchrono::DayLightSavingMode::None: setSelectedIndex(0); break; - case espchrono::DayLightSavingMode::EuropeanSummerTime: setSelectedIndex(1); break; - case espchrono::DayLightSavingMode::UsDaylightTime: setSelectedIndex(2); break; - default: - ESP_LOGW("BOBBY", "Unknown DayLightSavingMode: %i", int(value)); - setSelectedIndex(3); - } -} -} diff --git a/main/changevaluedisplay_larsmmode_mode.h b/main/changevaluedisplay_larsmmode_mode.h index ce5ddfc..d9d1834 100644 --- a/main/changevaluedisplay_larsmmode_mode.h +++ b/main/changevaluedisplay_larsmmode_mode.h @@ -11,7 +11,7 @@ #include "texts.h" #include "modes/larsmmode.h" -namespace { +namespace espgui { template<> class ChangeValueDisplay : public MenuDisplay, @@ -32,7 +32,7 @@ ChangeValueDisplay::ChangeValueDisplay() constructMenuItem, StaticText>>(LarsmModeMode::Mode2, *this, *this); constructMenuItem, StaticText>>(LarsmModeMode::Mode3, *this, *this); constructMenuItem, StaticText>>(LarsmModeMode::Mode4, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); } void ChangeValueDisplay::start() @@ -50,4 +50,4 @@ void ChangeValueDisplay::start() setSelectedIndex(4); } } -} +} // namespace espgui diff --git a/main/changevaluedisplay_sntp_sync_mode_t.h b/main/changevaluedisplay_sntp_sync_mode_t.h deleted file mode 100644 index c9925ee..0000000 --- a/main/changevaluedisplay_sntp_sync_mode_t.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -// esp-idf includes -#include - -// local includes -#include "changevaluedisplay.h" -#include "menudisplay.h" -#include "utils.h" -#include "actions/setvalueaction.h" -#include "actions/backproxyaction.h" -#include "icons/back.h" -#include "texts.h" - -namespace { -template<> -class ChangeValueDisplay : - public MenuDisplay, - public virtual AccessorInterface, - public virtual ActionInterface -{ - using Base = MenuDisplay; - -public: - ChangeValueDisplay(); - - void start() override; -}; - -ChangeValueDisplay::ChangeValueDisplay() -{ - constructMenuItem, StaticText>>(SNTP_SYNC_MODE_IMMED, *this, *this); - constructMenuItem, StaticText>>(SNTP_SYNC_MODE_SMOOTH, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); -} - -void ChangeValueDisplay::start() -{ - Base::start(); - - switch (const auto value = getValue()) - { - case SNTP_SYNC_MODE_IMMED: setSelectedIndex(0); break; - case SNTP_SYNC_MODE_SMOOTH: setSelectedIndex(1); break; - default: - ESP_LOGW("BOBBY", "Unknown sntp_sync_mode_t: %i", int(value)); - setSelectedIndex(2); - } -} -} diff --git a/main/changevaluedisplay_unifiedmodelmode.h b/main/changevaluedisplay_unifiedmodelmode.h index ac40c1d..5e538f3 100644 --- a/main/changevaluedisplay_unifiedmodelmode.h +++ b/main/changevaluedisplay_unifiedmodelmode.h @@ -11,7 +11,7 @@ #include "texts.h" #include "unifiedmodelmode.h" -namespace { +namespace espgui { template<> class ChangeValueDisplay : public MenuDisplay, @@ -33,7 +33,7 @@ ChangeValueDisplay::ChangeValueDisplay() constructMenuItem, StaticText>>(UnifiedModelMode::FocVoltage, *this, *this); constructMenuItem, StaticText>>(UnifiedModelMode::FocSpeed, *this, *this); constructMenuItem, StaticText>>(UnifiedModelMode::FocTorque, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); } void ChangeValueDisplay::start() @@ -52,4 +52,4 @@ void ChangeValueDisplay::start() setSelectedIndex(5); } } -} +} // namespace espgui diff --git a/main/changevaluedisplay_wifi_mode_t.h b/main/changevaluedisplay_wifi_mode_t.h index f98d2ab..21a72ba 100644 --- a/main/changevaluedisplay_wifi_mode_t.h +++ b/main/changevaluedisplay_wifi_mode_t.h @@ -11,7 +11,7 @@ #include "icons/back.h" #include "texts.h" -namespace { +namespace espgui { template<> class ChangeValueDisplay : public MenuDisplay, @@ -32,7 +32,7 @@ ChangeValueDisplay::ChangeValueDisplay() constructMenuItem, StaticText>>(WIFI_MODE_STA, *this, *this); constructMenuItem, StaticText>>(WIFI_MODE_AP, *this, *this); constructMenuItem, StaticText>>(WIFI_MODE_APSTA, *this, *this); - constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); } void ChangeValueDisplay::start() @@ -50,4 +50,4 @@ void ChangeValueDisplay::start() setSelectedIndex(4); } } -} +} // namespace espgui diff --git a/main/changevaluedisplay_wifi_power_t.h b/main/changevaluedisplay_wifi_power_t.h index 8dca1c1..43e7724 100644 --- a/main/changevaluedisplay_wifi_power_t.h +++ b/main/changevaluedisplay_wifi_power_t.h @@ -8,7 +8,7 @@ #include "icons/back.h" #include "texts.h" -namespace { +namespace espgui { //template<> //class ChangeValueDisplay : // public MenuDisplay, @@ -37,7 +37,7 @@ namespace { // constructMenuItem, StaticText>>(WIFI_POWER_5dBm, *this, *this); // constructMenuItem, StaticText>>(WIFI_POWER_2dBm, *this, *this); // constructMenuItem, StaticText>>(WIFI_POWER_MINUS_1dBm, *this, *this); -// constructMenuItem, StaticMenuItemIcon<&icons::back>>>(*this); +// constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); //} //void ChangeValueDisplay::start() @@ -63,4 +63,4 @@ namespace { // setSelectedIndex(12); // } //} -} +} // namespace espgui diff --git a/main/checkboxicon.h b/main/checkboxicon.h deleted file mode 100644 index f60ec49..0000000 --- a/main/checkboxicon.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "menuitem.h" -#include "accessorinterface.h" -#include "icons/checked.h" -#include "icons/unchecked.h" - -namespace { -class CheckboxIcon : public virtual MenuItemIconInterface, public virtual AccessorInterface -{ -public: - const MenuItemIcon *icon() const override - { - return getValue() ? &icons::checked : &icons::unchecked; - } -}; -} diff --git a/main/colorinterface.h b/main/colorinterface.h deleted file mode 100644 index a1e5ad9..0000000 --- a/main/colorinterface.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "TFT_eSPI.h" - -namespace { -class ColorInterface { -public: - virtual int color() const { return TFT_WHITE; }; -}; - -template -class StaticColor : public virtual ColorInterface -{ -public: - static constexpr int STATIC_COLOR = TColor; - - int color() const override { return TColor; } -}; - -using DefaultColor = StaticColor; -using DisabledColor = StaticColor; - -class ChangeableColor : public virtual ColorInterface -{ -public: - int color() const override { return m_color; } - void setColor(const int &color) { m_color = color; } - -private: - int m_color; -}; -} diff --git a/main/display.h b/main/display.h deleted file mode 100644 index 59d270a..0000000 --- a/main/display.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once - -#include - -namespace { -class TextInterface; -class MenuDisplay; -class ChangeValueDisplayInterface; -} - -namespace { -class ConfirmInterface { -public: - virtual void confirm() = 0; -}; - -class BackInterface { -public: - virtual void back() = 0; -}; - -template -class ConfirmActionInterface : public virtual ConfirmInterface -{ -public: - void confirm() override { T{}.triggered(); } -}; - -class DummyConfirm : public virtual ConfirmInterface -{ -public: - void confirm() override {} -}; - -template -class BackActionInterface : public virtual BackInterface -{ -public: - void back() override { T{}.triggered(); } -}; - -class DummyBack : public virtual BackInterface -{ -public: - void back() override {} -}; - -class Display : public virtual ConfirmInterface, public virtual BackInterface { -public: - virtual ~Display() = default; - - virtual void start() {}; - virtual void initScreen() {}; - virtual void update() {}; - virtual void redraw() {}; - virtual void stop() {} - - virtual void rotate(int offset) {} - - virtual TextInterface *asTextInterface() { return nullptr; } - virtual const TextInterface *asTextInterface() const { return nullptr; } - - virtual MenuDisplay *asMenuDisplay() { return nullptr; } - virtual const MenuDisplay *asMenuDisplay() const { return nullptr; } - - virtual ChangeValueDisplayInterface *asChangeValueDisplayInterface() { return nullptr; } - virtual const ChangeValueDisplayInterface *asChangeValueDisplayInterface() const { return nullptr; } -}; -} diff --git a/main/displays/calibratedisplay.h b/main/displays/calibratedisplay.h index 8ff1a15..befda29 100644 --- a/main/displays/calibratedisplay.h +++ b/main/displays/calibratedisplay.h @@ -6,6 +6,7 @@ // 3rdparty lib includes #include +#include // local includes #include "display.h" @@ -130,12 +131,12 @@ void CalibrateDisplay::initScreen() void CalibrateDisplay::update() { if (raw_gas) - m_gas = scaleBetween(*raw_gas, m_gasMin, m_gasMax, 0., 1000.); + m_gas = cpputils::mapValueClamped(*raw_gas, m_gasMin, m_gasMax, 0., 1000.); else m_gas = std::nullopt; if (raw_brems) - m_brems = scaleBetween(*raw_brems, m_bremsMin, m_bremsMax, 0., 1000.); + m_brems = cpputils::mapValueClamped(*raw_brems, m_bremsMin, m_bremsMax, 0., 1000.); else m_brems = std::nullopt; } diff --git a/main/displays/menus/aboutmenu.h b/main/displays/menus/aboutmenu.h index 3ccfb57..78b6b77 100644 --- a/main/displays/menus/aboutmenu.h +++ b/main/displays/menus/aboutmenu.h @@ -14,6 +14,8 @@ namespace { class SettingsMenu; } // namespace +using namespace espgui; + namespace { constexpr char TEXT_VERSION[] = "Version: 1.0"; @@ -44,7 +46,7 @@ public: constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/accesspointwifisettingsmenu.h b/main/displays/menus/accesspointwifisettingsmenu.h index 74ca673..36657fd 100644 --- a/main/displays/menus/accesspointwifisettingsmenu.h +++ b/main/displays/menus/accesspointwifisettingsmenu.h @@ -14,6 +14,8 @@ namespace { class WifiSettingsMenu; } // namespace +using namespace espgui; + namespace { class AccessPointWifiSettingsMenu : public MenuDisplay, @@ -31,7 +33,7 @@ public: constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/blesettingsmenu.h b/main/displays/menus/blesettingsmenu.h index ad5daaa..7e4ea02 100644 --- a/main/displays/menus/blesettingsmenu.h +++ b/main/displays/menus/blesettingsmenu.h @@ -16,6 +16,8 @@ namespace { class SettingsMenu; } // namespace +using namespace espgui; + namespace { #ifdef FEATURE_BLE class BleSettingsMenu : @@ -29,7 +31,7 @@ public: constructMenuItem, ToggleBoolAction, CheckboxIcon, BleEnabledAccessor>>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; #endif diff --git a/main/displays/menus/bluetoothsettingsmenu.h b/main/displays/menus/bluetoothsettingsmenu.h index 090cc46..26de103 100644 --- a/main/displays/menus/bluetoothsettingsmenu.h +++ b/main/displays/menus/bluetoothsettingsmenu.h @@ -2,6 +2,9 @@ // local includes #include "changevaluedisplay.h" +#ifdef FEATURE_BLUETOOTH +#include "changevaluedisplay_bluetoothmode.h" +#endif #include "menudisplay.h" #include "menuitem.h" #include "actions/dummyaction.h" @@ -23,6 +26,8 @@ namespace { class SettingsMenu; } // namespace +using namespace espgui; + namespace { #ifdef FEATURE_BLUETOOTH class BluetoothSettingsMenu; @@ -54,7 +59,7 @@ public: constructMenuItem, BluetoothEndAction>>(); constructMenuItem, BluetoothDisconnectAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; #endif diff --git a/main/displays/menus/bmsmenu.h b/main/displays/menus/bmsmenu.h index 3226308..e4905cb 100644 --- a/main/displays/menus/bmsmenu.h +++ b/main/displays/menus/bmsmenu.h @@ -23,6 +23,8 @@ namespace { class MainMenu; } // namespace +using namespace espgui; + namespace { #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) class BmsMenu : @@ -40,7 +42,7 @@ public: constructMenuItem, BmsTurnOffChargeAction>>(); constructMenuItem, BmsTurnOnDischargeAction>>(); constructMenuItem, BmsTurnOffDischargeAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; #endif diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.h b/main/displays/menus/boardcomputerhardwaresettingsmenu.h index e054c76..7a86466 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/main/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -24,6 +24,8 @@ class TimersMenu; class SettingsMenu; } // namespace +using namespace espgui; + namespace { struct GasText : public virtual TextInterface { public: @@ -183,9 +185,8 @@ public: constructMenuItem, SwitchScreenAction>>(); #endif constructMenuItem>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, SwapScreenBytesAccessor>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/buzzermenu.h b/main/displays/menus/buzzermenu.h index 303e7bc..12b7db9 100644 --- a/main/displays/menus/buzzermenu.h +++ b/main/displays/menus/buzzermenu.h @@ -19,6 +19,8 @@ class BuzzerMenu; class SettingsMenu; } // namespace +using namespace espgui; + namespace { struct FrontFreqAccessor : public RefAccessor { uint8_t &getRef() const override { return controllers.front.command.buzzer.freq; } }; using FrontFreqChangeScreen = makeComponent< @@ -102,7 +104,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/cloudsettingsmenu.h b/main/displays/menus/cloudsettingsmenu.h index e05d9b3..3a0371e 100644 --- a/main/displays/menus/cloudsettingsmenu.h +++ b/main/displays/menus/cloudsettingsmenu.h @@ -43,7 +43,7 @@ public: constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; #endif diff --git a/main/displays/menus/commanddebugmenu.h b/main/displays/menus/commanddebugmenu.h index cb211aa..e751a63 100644 --- a/main/displays/menus/commanddebugmenu.h +++ b/main/displays/menus/commanddebugmenu.h @@ -15,6 +15,8 @@ namespace { class DebugMenu; } // namespace +using namespace espgui; + namespace { template class CommandDebugMenu : @@ -29,7 +31,7 @@ public: constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/displays/menus/controllerhardwaresettingsmenu.h b/main/displays/menus/controllerhardwaresettingsmenu.h index a2e0d0b..3f1020c 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.h +++ b/main/displays/menus/controllerhardwaresettingsmenu.h @@ -23,6 +23,8 @@ class InvertMenu; class SettingsMenu; } // namespace +using namespace espgui; + namespace { using WheelDiameterMmChangeScreen = makeComponent< ChangeValueDisplay, @@ -83,7 +85,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/debugmenu.h b/main/displays/menus/debugmenu.h index 91cfc4c..6ad6a85 100644 --- a/main/displays/menus/debugmenu.h +++ b/main/displays/menus/debugmenu.h @@ -16,6 +16,8 @@ #include "texts.h" #include "debugcolorhelpers.h" +using namespace espgui; + // forward declares namespace { class MainMenu; @@ -34,6 +36,8 @@ class BackRightMotorFeedbackDebugMenu; class DynamicDebugMenu; } // namespace +using namespace espgui; + namespace { class DebugMenu : public MenuDisplay, @@ -64,7 +68,7 @@ public: constructMenuItem, SwitchScreenAction, BackFeedbackColor>>(); constructMenuItem>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/displays/menus/defaultmodesettingsmenu.h index 51861bf..7e9f9cb 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/displays/menus/defaultmodesettingsmenu.h @@ -4,6 +4,7 @@ #include "menudisplay.h" #include "utils.h" #include "changevaluedisplay.h" +#include "changevaluedisplay_unifiedmodelmode.h" #include "menuitem.h" #include "actions/toggleboolaction.h" #include "actions/switchscreenaction.h" @@ -18,6 +19,8 @@ class DefaultModeSettingsMenu; class ModesSettingsMenu; } // namespace +using namespace espgui; + namespace { using DefaultModeModelModeChangeDisplay = makeComponent< ChangeValueDisplay, @@ -103,7 +106,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/demosmenu.h b/main/displays/menus/demosmenu.h index 22b3fd5..ad5dc88 100644 --- a/main/displays/menus/demosmenu.h +++ b/main/displays/menus/demosmenu.h @@ -17,6 +17,8 @@ class GameOfLifeDisplay; class MainMenu; } // namespace +using namespace espgui; + namespace { class DemosMenu : public MenuDisplay, @@ -30,7 +32,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/dynamicdebugmenu.h b/main/displays/menus/dynamicdebugmenu.h index 1ac0fb2..48e7e8a 100644 --- a/main/displays/menus/dynamicdebugmenu.h +++ b/main/displays/menus/dynamicdebugmenu.h @@ -25,6 +25,8 @@ namespace { class DebugMenu; } // namespace +using namespace espgui; + namespace { class RandomText : public virtual TextInterface { @@ -157,7 +159,7 @@ public: constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/enablemenu.h b/main/displays/menus/enablemenu.h index 956b25d..2b38107 100644 --- a/main/displays/menus/enablemenu.h +++ b/main/displays/menus/enablemenu.h @@ -16,6 +16,8 @@ namespace { class ControllerHardwareSettingsMenu; } // namespace +using namespace espgui; + namespace { class EnableMenu : public MenuDisplay, @@ -29,7 +31,7 @@ public: constructMenuItem, ToggleBoolAction, CheckboxIcon, FrontRightEnabledAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackLeftEnabledAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackRightEnabledAccessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/feedbackdebugmenu.h b/main/displays/menus/feedbackdebugmenu.h index c40afad..b9c4b30 100644 --- a/main/displays/menus/feedbackdebugmenu.h +++ b/main/displays/menus/feedbackdebugmenu.h @@ -16,6 +16,8 @@ namespace { class DebugMenu; } // namespace +using namespace espgui; + namespace { template class ColorInterface> class FeedbackDebugMenu : @@ -31,7 +33,7 @@ public: //constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, ColorInterface, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/displays/menus/gametrakmodesettingsmenu.h b/main/displays/menus/gametrakmodesettingsmenu.h index 57f303a..6a5a869 100644 --- a/main/displays/menus/gametrakmodesettingsmenu.h +++ b/main/displays/menus/gametrakmodesettingsmenu.h @@ -13,6 +13,8 @@ namespace { class ModesSettingsMenu; } // namespace +using namespace espgui; + namespace { #ifdef FEATURE_GAMETRAK class ContainerModeSettingsMenu : @@ -23,7 +25,7 @@ class ContainerModeSettingsMenu : public: ContainerModeSettingsMenu() { - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; #endif diff --git a/main/displays/menus/genericwifisettingsmenu.h b/main/displays/menus/genericwifisettingsmenu.h index 0191932..c8cc09d 100644 --- a/main/displays/menus/genericwifisettingsmenu.h +++ b/main/displays/menus/genericwifisettingsmenu.h @@ -19,6 +19,8 @@ class GenericWifiSettingsMenu; class WifiSettingsMenu; } // namespace +using namespace espgui; + namespace { class GenericWifiSettingsMenu : public MenuDisplay, @@ -28,7 +30,7 @@ class GenericWifiSettingsMenu : public: GenericWifiSettingsMenu() { - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/graphsmenu.h b/main/displays/menus/graphsmenu.h index 0e14826..a32dc3d 100644 --- a/main/displays/menus/graphsmenu.h +++ b/main/displays/menus/graphsmenu.h @@ -16,6 +16,8 @@ class MainMenu; class GraphsMenu; } // namespace +using namespace espgui; + namespace { using GasGraphDisplay = makeComponent< GraphDisplay<1>, @@ -181,7 +183,7 @@ public: #endif constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/invertmenu.h b/main/displays/menus/invertmenu.h index 70e7fd4..ce125c1 100644 --- a/main/displays/menus/invertmenu.h +++ b/main/displays/menus/invertmenu.h @@ -16,6 +16,8 @@ namespace { class ControllerHardwareSettingsMenu; } // namespace +using namespace espgui; + namespace { class InvertMenu : public MenuDisplay, @@ -29,7 +31,7 @@ public: constructMenuItem, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackLeftInvertedAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackRightInvertedAccessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/larsmmodesettingsmenu.h b/main/displays/menus/larsmmodesettingsmenu.h index aab6728..a1d4203 100644 --- a/main/displays/menus/larsmmodesettingsmenu.h +++ b/main/displays/menus/larsmmodesettingsmenu.h @@ -4,6 +4,8 @@ #include "menudisplay.h" #include "utils.h" #include "changevaluedisplay.h" +#include "changevaluedisplay_larsmmode_mode.h" +#include "changevaluedisplay_unifiedmodelmode.h" #include "menuitem.h" #include "actions/switchscreenaction.h" #include "icons/back.h" @@ -16,6 +18,8 @@ class LarsmModeSettingsMenu; class ModesSettingsMenu; } // namespace +using namespace espgui; + namespace { using LarsmModeModelModeChangeDisplay = makeComponent< ChangeValueDisplay, @@ -50,7 +54,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/limitssettingsmenu.h b/main/displays/menus/limitssettingsmenu.h index 1f176c9..dd749fc 100644 --- a/main/displays/menus/limitssettingsmenu.h +++ b/main/displays/menus/limitssettingsmenu.h @@ -16,6 +16,8 @@ class LimitsSettingsMenu; class SettingsMenu; } // namespace +using namespace espgui; + namespace { using IMotMaxChangeScreen = makeComponent< ChangeValueDisplay, @@ -74,7 +76,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/mainmenu.h b/main/displays/menus/mainmenu.h index c4f1f5d..cd70f1b 100644 --- a/main/displays/menus/mainmenu.h +++ b/main/displays/menus/mainmenu.h @@ -42,6 +42,8 @@ class PoweroffDisplay; class DebugMenu; } // namespace +using namespace espgui; + namespace { class MainMenu : public MenuDisplay, @@ -51,7 +53,7 @@ class MainMenu : public: MainMenu() { - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::modes>>>(); constructMenuItem, ModeSettingsAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::presets>>>(); diff --git a/main/displays/menus/modessettingsmenu.h b/main/displays/menus/modessettingsmenu.h index 5c8d639..b5016f2 100644 --- a/main/displays/menus/modessettingsmenu.h +++ b/main/displays/menus/modessettingsmenu.h @@ -16,6 +16,8 @@ class GametrakModeSettingsMenu; class SettingsMenu; } // namespace +using namespace espgui; + namespace { class ModesSettingsMenu : public MenuDisplay, @@ -31,7 +33,7 @@ public: #ifdef FEATURE_GAMETRAK constructMenuItem, SwitchScreenAction>>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/mosfetsmenu.h b/main/displays/menus/mosfetsmenu.h index 79b4ae0..2036100 100644 --- a/main/displays/menus/mosfetsmenu.h +++ b/main/displays/menus/mosfetsmenu.h @@ -16,6 +16,8 @@ namespace { class MainMenu; } // namespace +using namespace espgui; + namespace { #ifdef FEATURE_MOSFETS template @@ -41,7 +43,7 @@ public: constructMenuItem, ToggleBoolAction, CheckboxIcon, Mosfet0Accessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, Mosfet1Accessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, Mosfet2Accessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; #endif diff --git a/main/displays/menus/motorfeedbackdebugmenu.h b/main/displays/menus/motorfeedbackdebugmenu.h index 4299580..c1a2c70 100644 --- a/main/displays/menus/motorfeedbackdebugmenu.h +++ b/main/displays/menus/motorfeedbackdebugmenu.h @@ -16,6 +16,8 @@ namespace { class DebugMenu; } // namespace +using namespace espgui; + namespace { template class ColorInterface> class MotorFeedbackDebugMenu : @@ -40,7 +42,7 @@ public: constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/displays/menus/motorstatedebugmenu.h b/main/displays/menus/motorstatedebugmenu.h index e4a8f3e..378b1a1 100644 --- a/main/displays/menus/motorstatedebugmenu.h +++ b/main/displays/menus/motorstatedebugmenu.h @@ -15,6 +15,8 @@ namespace { class DebugMenu; } // namespace +using namespace espgui; + namespace { template class MotorStateDebugMenu : @@ -36,7 +38,7 @@ public: constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/displays/menus/presetsmenu.h b/main/displays/menus/presetsmenu.h index 9fde848..85d2b88 100644 --- a/main/displays/menus/presetsmenu.h +++ b/main/displays/menus/presetsmenu.h @@ -17,6 +17,8 @@ namespace { class MainMenu; } // namespace +using namespace espgui; + namespace { class ApplyPresetAction : public virtual ActionInterface { @@ -92,7 +94,7 @@ public: constructMenuItem, MultiAction, SwitchScreenAction>>>(); constructMenuItem, MultiAction, SwitchScreenAction>>>(); constructMenuItem, MultiAction, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/profilesmenu.h b/main/displays/menus/profilesmenu.h index bb0c62a..9061ba5 100644 --- a/main/displays/menus/profilesmenu.h +++ b/main/displays/menus/profilesmenu.h @@ -12,6 +12,8 @@ namespace { class MainMenu; } // namespace +using namespace espgui; + namespace { class ProfilesMenu : public MenuDisplay, @@ -25,7 +27,7 @@ public: constructMenuItem, SwitchProfileAction<1>>>(); constructMenuItem, SwitchProfileAction<2>>>(); constructMenuItem, SwitchProfileAction<3>>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/selectmodemenu.h b/main/displays/menus/selectmodemenu.h index 9c033fd..65a64c0 100644 --- a/main/displays/menus/selectmodemenu.h +++ b/main/displays/menus/selectmodemenu.h @@ -20,6 +20,8 @@ namespace { class MainMenu; } // namespace +using namespace espgui; + namespace { template class SetterAction : public ActionInterface @@ -52,7 +54,7 @@ public: #ifdef FEATURE_GAMETRAK constructMenuItem, MultiAction>>>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } void start() override; diff --git a/main/displays/menus/settingsmenu.h b/main/displays/menus/settingsmenu.h index c9e138e..8295606 100644 --- a/main/displays/menus/settingsmenu.h +++ b/main/displays/menus/settingsmenu.h @@ -35,6 +35,8 @@ class AboutMenu; class MainMenu; } +using namespace espgui; + namespace { #ifdef FEATURE_LEDBACKLIGHT struct BacklightAccessor : public virtual AccessorInterface @@ -79,7 +81,7 @@ public: constructMenuItem, ToggleBoolAction, CheckboxIcon, FrontLedAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackLedAccessor>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::info>>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/stationwifisettingsmenu.h b/main/displays/menus/stationwifisettingsmenu.h index 0078c4f..02da880 100644 --- a/main/displays/menus/stationwifisettingsmenu.h +++ b/main/displays/menus/stationwifisettingsmenu.h @@ -22,6 +22,8 @@ class WifiScanMenu; class WifiSettingsMenu; } // namespace +using namespace espgui; + namespace { class StationWifiSettingsMenu : public MenuDisplay, @@ -52,7 +54,7 @@ public: constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/tempomatmodesettingsmenu.h b/main/displays/menus/tempomatmodesettingsmenu.h index b33ef24..2e5ce97 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.h +++ b/main/displays/menus/tempomatmodesettingsmenu.h @@ -4,6 +4,7 @@ #include "menudisplay.h" #include "utils.h" #include "changevaluedisplay.h" +#include "changevaluedisplay_unifiedmodelmode.h" #include "menuitem.h" #include "actions/switchscreenaction.h" #include "icons/back.h" @@ -18,6 +19,8 @@ class TempomatModeSettingsMenu; class ModesSettingsMenu; } // namespace +using namespace espgui; + namespace { using DefaultModeCruiseMotTgtChangeDisplay = makeComponent< ChangeValueDisplay, @@ -46,7 +49,7 @@ public: constructMenuItem, TempomatModeApplyCurrentSpeedAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/timersmenu.h b/main/displays/menus/timersmenu.h index d6771e6..c58a51a 100644 --- a/main/displays/menus/timersmenu.h +++ b/main/displays/menus/timersmenu.h @@ -14,6 +14,8 @@ namespace { class BoardcomputerHardwareSettingsMenu; } // namespace +using namespace espgui; + namespace { class TimersMenu; @@ -96,7 +98,7 @@ public: #ifdef FEATURE_CLOUD constructMenuItem, SwitchScreenAction>>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/timesettingsmenu.h b/main/displays/menus/timesettingsmenu.h index 767f34c..d9eafee 100644 --- a/main/displays/menus/timesettingsmenu.h +++ b/main/displays/menus/timesettingsmenu.h @@ -5,6 +5,9 @@ #include // local includes +#include "changevaluedisplay.h" +#include "changevaluedisplay_daylightsavingmode.h" +#include "changevaluedisplay_sntp_sync_mode_t.h" #include "menudisplay.h" #include "utils.h" #include "actions/toggleboolaction.h" @@ -21,6 +24,8 @@ class SettingsMenu; class TimeSettingsMenu; } // namespace +using namespace espgui; + namespace { class CurrentUtcDateTimeText : public virtual TextInterface { public: std::string text() const override { return fmt::format("utc: {}", espchrono::toString(espchrono::toDateTime(espchrono::utc_clock::now()))); }}; @@ -84,7 +89,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/menus/wifiscanmenu.h b/main/displays/menus/wifiscanmenu.h index fbda642..3fa2c10 100644 --- a/main/displays/menus/wifiscanmenu.h +++ b/main/displays/menus/wifiscanmenu.h @@ -27,6 +27,7 @@ class StationWifiSettingsMenu; } // namespace using namespace std::chrono_literals; +using namespace espgui; namespace { class WifiScanMenu : public MenuDisplay, public BackActionInterface> @@ -50,7 +51,7 @@ private: WifiScanMenu::WifiScanMenu() { - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string WifiScanMenu::text() const diff --git a/main/displays/menus/wifisettingsmenu.h b/main/displays/menus/wifisettingsmenu.h index 0cbeaf3..f3904e7 100644 --- a/main/displays/menus/wifisettingsmenu.h +++ b/main/displays/menus/wifisettingsmenu.h @@ -15,6 +15,8 @@ class AccessPointWifiSettingsMenu; class SettingsMenu; } // namespace +using namespace espgui; + namespace { class WifiSettingsMenu; @@ -29,7 +31,7 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // namespace diff --git a/main/displays/statusdisplay.h b/main/displays/statusdisplay.h index 865bf5d..a6582ec 100644 --- a/main/displays/statusdisplay.h +++ b/main/displays/statusdisplay.h @@ -279,9 +279,9 @@ void StatusDisplay::BoardStatus::redraw(const Controller &controller) tft.drawString("No data!", 60, m_y+50, 4); tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.setSwapBytes(!settings.boardcomputerHardware.swapScreenBytes); + tft.setSwapBytes(true); tft.pushImage(10, m_y+40, icons::alert.WIDTH, icons::alert.HEIGHT, icons::alert.buffer); - tft.setSwapBytes(settings.boardcomputerHardware.swapScreenBytes); + tft.setSwapBytes(false); } m_lastFeedbackValid = controller.feedbackValid; diff --git a/main/fontinterface.h b/main/fontinterface.h deleted file mode 100644 index 8991052..0000000 --- a/main/fontinterface.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -namespace { -class FontInterface { -public: - virtual int font() const { return 4; }; -}; - -template -class StaticFont : public virtual FontInterface -{ -public: - static constexpr int STATIC_FONT = TFont; - - int font() const override { return TFont; } -}; - -using DefaultFont = StaticFont<4>; - -class ChangeableFont : public virtual FontInterface -{ -public: - int font() const override { return m_font; } - void setfont(const int &font) { m_font = font; } - -private: - int m_font; -}; -} diff --git a/main/globals.h b/main/globals.h index f9f1362..d74c246 100644 --- a/main/globals.h +++ b/main/globals.h @@ -27,6 +27,8 @@ #include "settingspersister.h" #include "macros_bobbycar.h" +using namespace espgui; + namespace { std::optional raw_gas, raw_brems; std::optional gas, brems; @@ -43,8 +45,6 @@ Settings settings; StringSettings stringSettings; SettingsPersister settingsPersister; -constexpr auto TFT_GREY = 0x5AEB; - class Controllers : public std::array { public: @@ -86,8 +86,6 @@ struct { BluetoothSerial bluetoothSerial; #endif -TFT_eSPI tft = TFT_eSPI(); - ModeInterface *lastMode{}; ModeInterface *currentMode{}; diff --git a/main/iconinterface.h b/main/iconinterface.h deleted file mode 100644 index ce4b7ab..0000000 --- a/main/iconinterface.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "icon.h" - -namespace { -template -class IconInterface -{ -public: - virtual const Icon *icon() const { return nullptr; } -}; - -template *T> -class StaticIcon : public virtual IconInterface -{ -public: - virtual const Icon *icon() const { return T; } -}; -} diff --git a/main/icons/back.h b/main/icons/back.h deleted file mode 100644 index a9cb95c..0000000 --- a/main/icons/back.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include "icon.h" - -namespace { -namespace icons { -const Icon<24, 24> back{{ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016C, 0x014B, 0x010B, 0x01AC, 0x018C, 0x018C, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014B, 0x0009, 0x0000, // 0x0020 (32) pixels - 0x2AD0, 0x3331, 0x00CB, 0x09CD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x012B, 0x0007, 0x0000, 0x1A6F, 0x5CD7, 0x5C96, 0x0003, 0x09ED, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010B, 0x0006, 0xFFFF, 0x022F, 0x6518, // 0x0050 (80) pixels - 0x75FB, 0x5C96, 0x0000, 0x1AB0, 0x2312, 0x22F1, 0x1AB0, 0x1A6F, 0x0A0E, 0x016C, 0x0048, 0x00EA, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels - 0x0000, 0x0000, 0x010A, 0x0029, 0x0000, 0x022F, 0x6538, 0x761B, 0x761B, 0x5CD7, 0x024F, 0x22D0, 0x22D0, 0x1AB0, 0x1A6F, 0x124F, // 0x0070 (112) pixels - 0x01CD, 0x002A, 0x0000, 0x018C, 0x0007, 0x014B, 0x0000, 0x0000, 0x0002, 0x0003, 0x0A2E, 0x0000, 0x1A90, 0x6518, 0x7E3C, 0x761C, // 0x0080 (128) pixels - 0x761C, 0x6E1C, 0x65BB, 0x5D9A, 0x5D7A, 0x5539, 0x54F8, 0x4CB7, 0x4C76, 0x3BD4, 0x2B11, 0x1A6F, 0x016C, 0x43F5, 0x012B, 0x00A6, // 0x0090 (144) pixels - 0x0006, 0x024F, 0x0000, 0x22F1, 0x6518, 0x7E3C, 0x7E5C, 0x765C, 0x765C, 0x6E3C, 0x661C, 0x65FC, 0x5DBB, 0x559A, 0x4D5A, 0x44F9, // 0x00A0 (160) pixels - 0x44D8, 0x3C97, 0x4456, 0x3BD4, 0x2AF1, 0x09CD, 0x5D7C, 0x00AA, 0x022F, 0x0000, 0x2AF1, 0x6518, 0x863C, 0x7E3C, 0x6E3C, 0x663C, // 0x00B0 (176) pixels - 0x663D, 0x5E3D, 0x5E1C, 0x5DFC, 0x55DB, 0x559B, 0x4D5A, 0x4519, 0x3CB8, 0x3477, 0x3436, 0x33F5, 0x3BD4, 0x2AF1, 0x018C, 0x0000, // 0x00C0 (192) pixels - 0x014B, 0x22B0, 0x54B7, 0x5D9A, 0x4D7A, 0x3D7B, 0x357B, 0x2D9C, 0x2DDC, 0x2DDC, 0x2DBC, 0x2D7B, 0x355A, 0x3D5A, 0x453A, 0x4519, // 0x00D0 (208) pixels - 0x3CD8, 0x3477, 0x3436, 0x2BD5, 0x2BB5, 0x3394, 0x1A6F, 0x014C, 0x016B, 0x1A90, 0x3436, 0x24D9, 0x14D9, 0x1D1A, 0x1D5B, 0x1D9C, // 0x00E0 (224) pixels - 0x25DD, 0x25DD, 0x1D9C, 0x1D5B, 0x1D1A, 0x1CD9, 0x1CB8, 0x2CB8, 0x3CB8, 0x3477, 0x2C36, 0x2BD5, 0x2394, 0x33D5, 0x22F1, 0x11CC, // 0x00F0 (240) pixels - 0x022F, 0x0004, 0x1AD0, 0x2C57, 0x24F9, 0x1D1A, 0x1D5B, 0x1D7C, 0x1DBC, 0x25BC, 0x1D9C, 0x1D5B, 0x1D1A, 0x1CD9, 0x1C98, 0x1457, // 0x0100 (256) pixels - 0x1C37, 0x2C36, 0x2C16, 0x23D5, 0x2394, 0x23B5, 0x2B32, 0x11CD, 0x0000, 0x0A0E, 0x0000, 0x22F1, 0x2C77, 0x251A, 0x1D3A, 0x1D5B, // 0x0110 (272) pixels - 0x1D7B, 0x1D7B, 0x1D5B, 0x1D3A, 0x1CFA, 0x1CB9, 0x1C78, 0x1457, 0x1416, 0x13D5, 0x23D5, 0x23B5, 0x1B94, 0x1B94, 0x2B52, 0x11ED, // 0x0120 (288) pixels - 0x0023, 0x0000, 0x0A4F, 0x0000, 0x22F1, 0x3497, 0x251A, 0x1D1A, 0x1D3A, 0x2D5B, 0x2D3A, 0x2D1A, 0x24F9, 0x24D9, 0x1478, 0x1437, // 0x0130 (304) pixels - 0x13F6, 0x13B5, 0x1394, 0x1B74, 0x1B74, 0x1B94, 0x2B52, 0x11ED, 0x0000, 0x0087, 0x0000, 0x124F, 0x0000, 0x1AB0, 0x3497, 0x1D1A, // 0x0140 (320) pixels - 0x1CFA, 0x3497, 0x1B32, 0x2373, 0x2393, 0x2BD4, 0x3415, 0x2C57, 0x13F6, 0x1395, 0x1374, 0x1353, 0x1354, 0x2394, 0x2B32, 0x11ED, // 0x0150 (336) pixels - 0x0000, 0x0000, 0x0000, 0x00EA, 0x00EA, 0x0000, 0x126F, 0x3497, 0x24D9, 0x3435, 0x0000, 0x1270, 0x0000, 0x0029, 0x01AC, 0x22F1, // 0x0160 (352) pixels - 0x33F5, 0x1395, 0x1354, 0x1333, 0x0B33, 0x2394, 0x22F1, 0x22B0, 0x0000, 0x0000, 0x0000, 0x0000, 0x010B, 0x0008, 0x0000, 0x1A6F, // 0x0170 (368) pixels - 0x3477, 0x3435, 0x0006, 0x09ED, 0x0027, 0x00EA, 0x01AC, 0x0000, 0x22B0, 0x2BB4, 0x0B33, 0x1333, 0x0B34, 0x2B73, 0x22B0, 0x09AD, // 0x0180 (384) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012B, 0x0009, 0x0000, 0x1A90, 0x3352, 0x004A, 0x09CD, 0x0000, 0x0000, 0x010A, 0x012B, // 0x0190 (400) pixels - 0x09CD, 0x2B53, 0x1354, 0x0B33, 0x1B54, 0x2B32, 0x228F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014B, 0x010B, // 0x01A0 (416) pixels - 0x0007, 0x018D, 0x01AC, 0x01AC, 0x0000, 0x0000, 0x0000, 0x014B, 0x09CD, 0x2B32, 0x1374, 0x0B33, 0x2353, 0x2AF1, 0x08EA, 0x1A0D, // 0x01B0 (432) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01AD, 0x09ED, 0x00CA, 0x018C, 0x018C, 0x0000, 0x0000, 0x0000, 0x018C, // 0x01C0 (448) pixels - 0x09ED, 0x2B53, 0x1354, 0x1B53, 0x2B32, 0x224E, 0x2B11, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01D0 (464) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A8, 0x09ED, 0x122E, 0x2B73, 0x1B54, 0x2B53, 0x32D0, 0x43D4, 0x0004, 0x0000, // 0x01E0 (480) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0049, 0x451B, // 0x01F0 (496) pixels - 0x1AB0, 0x2BB4, 0x2B53, 0x32F0, 0x5D3A, 0x0008, 0x00C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0200 (512) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x018C, 0x010B, 0x3332, 0x3393, 0x2AD0, 0x873F, 0x012B, 0x11ED, 0x0000, 0x0000, // 0x0210 (528) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0109, 0x01AD, 0x018C, // 0x0220 (544) pixels - 0x22B0, 0x32F0, 0x761E, 0x016C, 0x1A2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0230 (560) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014B, 0x018C, 0x018C, 0x09CD, 0x4C77, 0x012B, 0x1A0E, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0240 (576) pixels -}}; -} -} diff --git a/main/icons/checked.h b/main/icons/checked.h deleted file mode 100644 index 14af376..0000000 --- a/main/icons/checked.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include "icon.h" - -namespace { -namespace icons { -const Icon<24, 24> checked{{ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2945, 0x6B4D, 0x5AEB, 0x5AEB, // 0x0050 (80) pixels - 0x5AEB, 0x5AEB, 0x5AEB, 0x5AEB, 0x5AEB, 0x5AEB, 0x5AEB, 0x8BF1, 0x0240, 0x01E0, 0x02C0, 0x0280, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels - 0x0000, 0x0000, 0xA514, 0xA534, 0xA534, 0xBDD7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0x8C91, // 0x0070 (112) pixels - 0x3807, 0x0000, 0x0000, 0x0260, 0x0260, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xC618, 0xBDD7, 0xCE59, 0xAD75, 0xB596, 0xB596, // 0x0080 (128) pixels - 0xB596, 0xB596, 0xAD75, 0xAD75, 0xAD75, 0xB596, 0xAD75, 0x9CD3, 0x0300, 0x8E31, 0x00E0, 0x0240, 0x0260, 0x0000, 0x0000, 0x0000, // 0x0090 (144) pixels - 0x0000, 0x8431, 0xA534, 0xA514, 0xA534, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD55, 0xAD75, 0xAD75, 0xA554, 0x5BEB, // 0x00A0 (160) pixels - 0x4508, 0xBF77, 0x1C43, 0x0240, 0x01C0, 0x02C0, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0x9492, 0xCE59, 0xF7BE, 0xFFBF, 0xF79E, // 0x00B0 (176) pixels - 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xF7BE, 0xEF9D, 0x8D51, 0x34E6, 0xA6F4, 0xA734, 0xA6F4, 0x54EA, 0x02E0, 0x0240, 0x0000, 0x0000, // 0x00C0 (192) pixels - 0x0000, 0x7BCF, 0x0000, 0x8C72, 0x7C8F, 0x6CCD, 0xC698, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, 0xF79E, 0xF79E, 0x8510, 0x34C6, 0x9EB3, // 0x00D0 (208) pixels - 0x9692, 0x9672, 0x9692, 0x44C8, 0x02E0, 0x0220, 0x0000, 0x0000, 0x0160, 0x632C, 0x02A0, 0x3B27, 0x3426, 0x8E30, 0x23C4, 0xCEB9, // 0x00E0 (224) pixels - 0xF77E, 0xEF7D, 0xF79E, 0xF79E, 0x8D51, 0x2463, 0x8E51, 0x8630, 0x8610, 0x8610, 0x44A8, 0x02A0, 0x0160, 0x0000, 0x0000, 0x0000, // 0x00F0 (240) pixels - 0x0240, 0x02A0, 0x0260, 0x1BA3, 0x75AD, 0x860F, 0x656B, 0x4C29, 0xCED9, 0xF7BE, 0xEF7D, 0x8D31, 0x2C24, 0x7E0E, 0x7DEE, 0x7DCE, // 0x0100 (256) pixels - 0x7DCE, 0x4CA9, 0x02A0, 0x1843, 0x0220, 0x0280, 0x0000, 0x0000, 0x0240, 0x0000, 0x0321, 0x6D6B, 0x75AC, 0x75AC, 0x75EC, 0x654A, // 0x0110 (272) pixels - 0x33A6, 0xCED9, 0x9D73, 0x3C26, 0x7E0D, 0x75CC, 0x75AC, 0x6D8C, 0x5CEA, 0x2AE5, 0x634D, 0x2288, 0x7BCE, 0x0000, 0x0000, 0x0000, // 0x0120 (288) pixels - 0x0260, 0x0220, 0x0200, 0x1361, 0x6549, 0x658A, 0x6DCA, 0x760B, 0x5CE8, 0x02E0, 0x33C4, 0x760B, 0x6DCA, 0x6DCA, 0x6DAA, 0x7D6D, // 0x0130 (304) pixels - 0x646C, 0x6B6D, 0x6B6E, 0x8C4E, 0x52AD, 0x0000, 0x0000, 0x0000, 0x0200, 0x5B0B, 0x0220, 0x2A85, 0x2B83, 0x6568, 0x5DC8, 0x65E8, // 0x0140 (320) pixels - 0x7649, 0x6D49, 0x75EA, 0x6E09, 0x65C8, 0x65A9, 0x6CEB, 0x3BA8, 0xE75C, 0x7BD0, 0x634D, 0x73B1, 0x5ACA, 0x0000, 0x0000, 0x0000, // 0x0150 (336) pixels - 0x0000, 0x5AAD, 0x000A, 0x630D, 0x5BCB, 0x2344, 0x65A6, 0x4D84, 0x55C4, 0x4DC4, 0x4DA3, 0x4D83, 0x4563, 0x4463, 0x1B83, 0xE73C, // 0x0160 (352) pixels - 0xFFDF, 0x7BF0, 0x6B4D, 0x7BEE, 0x52AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x630E, 0x0010, 0x5AEC, 0xCE79, 0x9DB3, 0x1300, 0x5DC3, // 0x0170 (368) pixels - 0x4E01, 0x4E22, 0x4E21, 0x4E02, 0x5D24, 0x4388, 0xE73C, 0xF79E, 0xFFDF, 0x8410, 0x6B6E, 0x840D, 0x630E, 0x0000, 0x0000, 0x0000, // 0x0180 (384) pixels - 0x0000, 0x73AE, 0x8C6A, 0x630D, 0xC638, 0xFFFF, 0xADF5, 0x0B60, 0x6664, 0x56A1, 0x66C3, 0x5503, 0x3B48, 0xDF3B, 0xF7BE, 0xF79E, // 0x0190 (400) pixels - 0xFFDF, 0x8431, 0x73AF, 0x6B4F, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x738D, 0x5280, 0x6B4D, 0xC638, 0xFFFF, 0xFFFF, 0xA5D4, // 0x01A0 (416) pixels - 0x1280, 0x7F45, 0x5D83, 0x0300, 0xEF9D, 0xFFFF, 0xFFDF, 0xF7BE, 0xFFFF, 0x8C51, 0x7BCF, 0x7BF2, 0x738D, 0x0000, 0x0000, 0x0000, // 0x01B0 (432) pixels - 0x0000, 0x738D, 0x0000, 0x6B6E, 0xC638, 0xFFFF, 0xFFFF, 0xFFFF, 0x9572, 0x32A5, 0x53C9, 0xEF9D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x01C0 (448) pixels - 0xFFFF, 0x8C72, 0x7BF0, 0x8C53, 0x738D, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BD0, 0xA510, 0x7BCF, 0xA535, 0xCE59, 0xCE59, 0xCE59, // 0x01D0 (464) pixels - 0xCE79, 0x84B0, 0xADB5, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xC638, 0x8C51, 0x8410, 0x8430, 0x7BD0, 0x0000, 0x0000, 0x0000, // 0x01E0 (480) pixels - 0x0000, 0x8C71, 0x8431, 0x8431, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x8410, 0x83F0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, // 0x01F0 (496) pixels - 0x7BF0, 0x8410, 0x8C51, 0x8431, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0x9492, 0xB593, 0x9493, 0x9491, 0x94B1, // 0x0200 (512) pixels - 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x9491, 0x9CF3, 0x4200, 0x8430, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) pixels - 0x0000, 0x0020, 0x0000, 0x630D, 0x8C71, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, // 0x0220 (544) pixels - 0x8C71, 0x8410, 0x8C51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0230 (560) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0240 (576) pixels -}}; -} -} diff --git a/main/icons/unchecked.h b/main/icons/unchecked.h deleted file mode 100644 index afa1e99..0000000 --- a/main/icons/unchecked.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include "icon.h" - -namespace { -namespace icons { -const Icon<24, 24> unchecked{{ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2945, 0x6B4D, 0x5AEB, 0x5AEB, // 0x0050 (80) pixels - 0x5AEB, 0x5AEB, 0x5AEB, 0x5AEB, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels - 0x0000, 0x0000, 0xA514, 0xA534, 0xA534, 0xBDD7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDD7, 0xB5B6, 0xB5B6, 0x31A6, 0x31A6, 0x39E7, // 0x0070 (112) pixels - 0x0180, 0x0000, 0x11E3, 0x4269, 0x4229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xC618, 0xBDD7, 0xCE59, 0xAD75, 0xB596, 0xB596, // 0x0080 (128) pixels - 0xB596, 0xB596, 0xAD75, 0xAD55, 0xA514, 0xA514, 0xA514, 0xA514, 0xA514, 0x8C71, 0x8C51, 0x5B0C, 0x4AC9, 0x0000, 0x0000, 0x0000, // 0x0090 (144) pixels - 0x0000, 0x8431, 0xA534, 0xA514, 0xA534, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, 0xAD75, // 0x00A0 (160) pixels - 0xB596, 0x8C71, 0x8431, 0x5BCC, 0x2A85, 0x52AC, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0x9492, 0xC638, 0xF7BE, 0xFFDF, 0xFFDF, // 0x00B0 (176) pixels - 0xF7BE, 0xF7BE, 0xFFDF, 0xF7BE, 0xF7DE, 0xF7BE, 0xFFDF, 0xFFDF, 0xFFFF, 0x8C51, 0x6B6E, 0x538A, 0x2A85, 0x528C, 0x0000, 0x0000, // 0x00C0 (192) pixels - 0x5ACB, 0x52AA, 0xFFFF, 0x8451, 0xC638, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xF7BE, 0xF7BE, 0xF79E, 0xF7BE, 0xF7BE, // 0x00D0 (208) pixels - 0xFFDF, 0x8C51, 0x6B6E, 0x53AA, 0x2284, 0x52AC, 0x0000, 0x0000, 0xEF7D, 0xFFFF, 0xEF5D, 0x632D, 0xBDF7, 0xF7BE, 0xF7BE, 0xF79E, // 0x00E0 (224) pixels - 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF7BE, 0xF7BE, 0xFFDF, 0x8431, 0x6B6E, 0x4B0A, 0x52CB, 0x528C, 0x0000, 0x0000, // 0x00F0 (240) pixels - 0xF7BE, 0xE73C, 0x8CD1, 0x738E, 0xBDF7, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, // 0x0100 (256) pixels - 0xFFDF, 0x8431, 0x6B6E, 0x5B0C, 0x5ACC, 0x39C8, 0x0000, 0x0000, 0xF7BE, 0xF79E, 0xB616, 0x73CF, 0xC638, 0xFFDF, 0xF79E, 0xF7BE, // 0x0110 (272) pixels - 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF7BE, 0xFFDF, 0xF7BE, 0xFFDF, 0x8431, 0x6B6E, 0x630D, 0x5AED, 0x0000, 0x0000, 0x0000, // 0x0120 (288) pixels - 0xF79E, 0xFFFF, 0x8CD1, 0x52CB, 0xC618, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, // 0x0130 (304) pixels - 0xFFDF, 0x8431, 0x6B6E, 0x5AEC, 0x52AC, 0x0000, 0x0000, 0x0000, 0x10A2, 0xBDF7, 0x634B, 0x4A4A, 0xC618, 0xF7DE, 0xF7BE, 0xF7BE, // 0x0140 (320) pixels - 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xFFFF, 0x8C51, 0x6B6E, 0x7BCF, 0x5AED, 0x0000, 0x0000, 0x0000, // 0x0150 (336) pixels - 0x0000, 0x0000, 0x528C, 0x4A6A, 0xC618, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7DF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF7BE, // 0x0160 (352) pixels - 0xFFDF, 0x8431, 0x6B6E, 0x7BCF, 0x5AED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACD, 0x4A4A, 0xBDF8, 0xF7BE, 0xF7BE, 0xF7BE, // 0x0170 (368) pixels - 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xFFFF, 0x8C51, 0x738E, 0x73AE, 0x632E, 0x0000, 0x0000, 0x0000, // 0x0180 (384) pixels - 0x0000, 0x0000, 0x6B6D, 0x4209, 0xC618, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xFFDF, 0xF7BE, // 0x0190 (400) pixels - 0xFFDF, 0x8C51, 0x73AF, 0x738F, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B4C, 0x4A6A, 0xC638, 0xFFFF, 0xFFFF, 0xF7BE, // 0x01A0 (416) pixels - 0xFFDF, 0xFFDF, 0xF7BE, 0xFFDF, 0xF7BE, 0xF7BE, 0xFFDF, 0xF7BE, 0xFFFF, 0x8C51, 0x7BCF, 0x7BF1, 0x738D, 0x0000, 0x0000, 0x0000, // 0x01B0 (432) pixels - 0x0000, 0x0000, 0x6B4C, 0x5ACB, 0xC638, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BE, 0xFFDF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x01C0 (448) pixels - 0xFFFF, 0x8C72, 0x7BF0, 0x8C53, 0x738D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0x738E, 0xA534, 0xCE59, 0xCE59, 0xCE59, // 0x01D0 (464) pixels - 0xCE59, 0xC638, 0xC618, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xC638, 0x8C51, 0x8410, 0x8430, 0x7BD0, 0x0000, 0x0000, 0x0000, // 0x01E0 (480) pixels - 0x0000, 0x0000, 0x8C51, 0x8431, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, 0x7BF0, // 0x01F0 (496) pixels - 0x7BF0, 0x8410, 0x8C51, 0x8431, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0x9492, 0xB593, 0x9493, 0x9491, 0x94B1, // 0x0200 (512) pixels - 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x94B1, 0x9491, 0x9CF3, 0x4200, 0x8430, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) pixels - 0x0000, 0x0020, 0x0000, 0x630D, 0x8C71, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, // 0x0220 (544) pixels - 0x8C71, 0x8410, 0x8C51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0230 (560) pixels - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0240 (576) pixels -}}; -} -} diff --git a/main/menudisplay.h b/main/menudisplay.h deleted file mode 100644 index 790f5cd..0000000 --- a/main/menudisplay.h +++ /dev/null @@ -1,299 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "display.h" -#include "textinterface.h" -#include "widgets/label.h" -#include "globals.h" -#include "menuitem.h" - -namespace { -class MenuDisplay : public Display, public virtual TextInterface -{ -public: - void start() override; - void initScreen() override; - void update() override; - void redraw() override; - void stop() override; - - void rotate(int offset) override; - void confirm() override; - - TextInterface *asTextInterface() override { return this; } - const TextInterface *asTextInterface() const override { return this; } - - MenuDisplay *asMenuDisplay() override { return this; } - const MenuDisplay *asMenuDisplay() const override { return this; } - - int selectedIndex() const { return m_selectedIndex; } - - - std::size_t menuItemCount() const { return m_menuItems.size(); } - - MenuItem& getMenuItem(std::size_t index) - { - assert(index < m_menuItems.size()); - return *m_menuItems[index].get(); - } - - const MenuItem& getMenuItem(std::size_t index) const - { - assert(index < m_menuItems.size()); - return *m_menuItems[index].get(); - } - - void runForEveryMenuItem(std::function &&callback) - { - for (const auto &ptr : m_menuItems) - callback(*ptr); - } - - void runForEveryMenuItem(std::function &&callback) const - { - for (const auto &ptr : m_menuItems) - callback(*ptr); - } - - template - T &constructMenuItem(Args&&... args) - { - auto ptr = std::make_unique(std::forward(args)...); - T &ref = *ptr; - emplaceMenuItem(std::move(ptr)); - return ref; - } - - void emplaceMenuItem(std::unique_ptr &&ptr) - { - m_menuItems.emplace_back(std::move(ptr)); - } - - void clearMenuItems() - { - m_menuItems.clear(); - } - - std::unique_ptr takeLastMenuItem() - { - assert(!m_menuItems.empty()); - std::unique_ptr ptr = std::move(m_menuItems.back()); - m_menuItems.pop_back(); - return ptr; - } - -protected: - void setSelectedIndex(int selectedIndex) { m_selectedIndex = selectedIndex; } - -private: - Label m_titleLabel{5, 5}; // 230, 25 - - static constexpr auto iconWidth = 25; - static constexpr auto horizontalSpacing = 10; - static constexpr auto topMargin = 40; - static constexpr auto lineHeight = 25; - static constexpr auto verticalSpacing = 3; - - std::array m_labels {{ - Label{horizontalSpacing + iconWidth, topMargin+(0*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(1*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(2*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(3*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(4*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(5*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(6*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(7*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(8*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - Label{horizontalSpacing + iconWidth, topMargin+(9*(lineHeight+verticalSpacing))}, // 240-(horizontalSpacing*2)-iconWidth, lineHeight - }}; - - std::array *, 10> m_icons; - - int m_selectedIndex; - int m_scrollOffset; - int m_highlightedIndex; - - int m_rotateOffset; - bool m_pressed; - - std::vector> m_menuItems; -}; - -void MenuDisplay::start() -{ - m_selectedIndex = 0; - m_scrollOffset = 0; - - m_rotateOffset = 0; - m_pressed = false; -} - -void MenuDisplay::initScreen() -{ - tft.fillScreen(TFT_BLACK); - - m_titleLabel.start(); - tft.fillRect(0, 34, tft.width(), 3, TFT_WHITE); - - for (auto &label : m_labels) - label.start(); - - runForEveryMenuItem([](MenuItem &item){ - item.start(); - }); - - m_icons.fill(nullptr); - - m_highlightedIndex = -1; -} - -void MenuDisplay::update() -{ - if (!m_pressed) - { - const auto offset = m_rotateOffset; - m_rotateOffset = 0; - - const auto itemCount = menuItemCount(); - - if (itemCount) - { - if (m_selectedIndex == -1) - m_selectedIndex = 0; - - m_selectedIndex = m_selectedIndex + offset; - - if (m_selectedIndex < 0) - m_selectedIndex += itemCount; - if (m_selectedIndex >= itemCount) - m_selectedIndex -= itemCount; - - if (m_selectedIndex < m_scrollOffset) - m_scrollOffset = m_selectedIndex; - if (m_selectedIndex >= m_scrollOffset + m_labels.size()) - m_scrollOffset = m_selectedIndex - m_labels.size() + 1; - } - else - { - m_selectedIndex = -1; - m_scrollOffset = 0; - } - - runForEveryMenuItem([&](MenuItem &item){ - item.update(); - }); - } - else - { - m_pressed = false; - if (m_selectedIndex >= 0) - getMenuItem(m_selectedIndex).triggered(); - } -} - -void MenuDisplay::redraw() -{ - tft.setTextFont(4); - tft.setTextColor(TFT_YELLOW, TFT_BLACK); - m_titleLabel.redraw(text()); - - int i{0}; - - auto labelsIter = std::begin(m_labels); - - auto iconsIter = std::begin(m_icons); - - int newHighlightedIndex{-1}; - - const auto drawItemRect = [](const auto &label, const auto color){ - tft.drawRect(5, - label.y()-1, - 240 - 10, - lineHeight+2, - color); - }; - - runForEveryMenuItem([&](MenuItem &item){ - const auto index = i++; - - if (index < m_scrollOffset) - return; - - if (labelsIter == std::end(m_labels)) - return; - - const auto relativeIndex = index - m_scrollOffset; - const auto selected = index == m_selectedIndex; - - if (selected) - newHighlightedIndex = relativeIndex; - else if (relativeIndex == m_highlightedIndex) - drawItemRect(*labelsIter, TFT_BLACK); - - tft.setTextFont(item.font()); - tft.setTextColor(item.color(), TFT_BLACK); - labelsIter->redraw(item.text()); - - if (item.icon() != *iconsIter) - { - tft.fillRect(5, labelsIter->y()+1, 24, 24, TFT_BLACK); - - auto icon = item.icon(); - if (icon) - { - tft.setSwapBytes(!settings.boardcomputerHardware.swapScreenBytes); - tft.pushImage(6, labelsIter->y()+1, icon->WIDTH, icon->HEIGHT, icon->buffer); - tft.setSwapBytes(settings.boardcomputerHardware.swapScreenBytes); - } - *iconsIter = icon; - } - - if (selected && (relativeIndex != m_highlightedIndex)) - { - drawItemRect(*labelsIter, TFT_WHITE); - } - - labelsIter++; - iconsIter++; - }); - - for (; labelsIter != std::end(m_labels); labelsIter++, iconsIter++) - { - const auto relativeIndex = std::distance(std::begin(m_labels), labelsIter); - - if (relativeIndex == m_highlightedIndex) - drawItemRect(*labelsIter, TFT_BLACK); - - labelsIter->clear(); - - if (*iconsIter) - { - tft.fillRect(5, labelsIter->y()+1, 24, 24, TFT_BLACK); - *iconsIter = nullptr; - } - } - - m_highlightedIndex = newHighlightedIndex; -} - -void MenuDisplay::stop() -{ - runForEveryMenuItem([](MenuItem &item){ - item.stop(); - }); -} - -void MenuDisplay::rotate(int offset) -{ - m_rotateOffset += offset; -} - -void MenuDisplay::confirm() -{ - m_pressed = true; -} -} diff --git a/main/menuitem.h b/main/menuitem.h deleted file mode 100644 index 84eda73..0000000 --- a/main/menuitem.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "textinterface.h" -#include "fontinterface.h" -#include "colorinterface.h" -#include "iconinterface.h" -#include "actioninterface.h" - -namespace { -using MenuItemIconInterface = IconInterface<24, 24>; - -using MenuItemIcon = Icon<24, 24>; - -template -using StaticMenuItemIcon = StaticIcon<24, 24, T>; - -class MenuItem : - public virtual ActionInterface, - public virtual TextInterface, - public virtual FontInterface, - public virtual ColorInterface, - public virtual IconInterface<24, 24> -{ -public: - virtual void start() {} - virtual void update() {} - virtual void stop() {} -}; -} diff --git a/main/presets.h b/main/presets.h index 8c257b9..200fa80 100644 --- a/main/presets.h +++ b/main/presets.h @@ -155,7 +155,6 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware { .gametrakDistMin = DEFAULT_GAMETRAKDISTMIN, .gametrakDistMax = DEFAULT_GAMETRAKDISTMAX, #endif - .swapScreenBytes = DEFAULT_SWAPSCREENBYTES, .timersSettings = defaultTimersSettings }; diff --git a/main/screens.h b/main/screens.h index 07d9bfb..fa24a74 100644 --- a/main/screens.h +++ b/main/screens.h @@ -119,7 +119,6 @@ void redrawDisplay() { if (currentDisplay) { - tft.setSwapBytes(settings.boardcomputerHardware.swapScreenBytes); currentDisplay->redraw(); } } diff --git a/main/settings.h b/main/settings.h index da6d15c..5ea7163 100644 --- a/main/settings.h +++ b/main/settings.h @@ -97,7 +97,6 @@ struct Settings #ifdef FEATURE_GAMETRAK int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax; #endif - bool swapScreenBytes; struct TimersSettings { int16_t potiReadRate; @@ -205,7 +204,6 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("gametrakDistMin", boardcomputerHardware.gametrakDistMin); callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax); #endif - callable("swapScreenBytes", boardcomputerHardware.swapScreenBytes); callable("potiReadRate", boardcomputerHardware.timersSettings.potiReadRate); callable("modeUpdateRate", boardcomputerHardware.timersSettings.modeUpdateRate); diff --git a/main/statustexthelper.h b/main/statustexthelper.h new file mode 100644 index 0000000..a499824 --- /dev/null +++ b/main/statustexthelper.h @@ -0,0 +1,22 @@ +#pragma once + +// local includes +#include "textinterface.h" +#include "globals.h" +#include "utils.h" + +namespace { +template +class StatusTextHelper : public virtual TextInterface +{ +public: + std::string text() const override { using std::to_string; using ::to_string; return Ttext + to_string((Tptr->*Tmethod)()); } +}; + +template +class StaticStatusTextHelper : public virtual TextInterface +{ +public: + std::string text() const override { using std::to_string; using ::to_string; return Ttext + to_string(Tmethod()); } +}; +} diff --git a/main/textinterface.h b/main/textinterface.h deleted file mode 100644 index dbe9f80..0000000 --- a/main/textinterface.h +++ /dev/null @@ -1,94 +0,0 @@ -#pragma once - -// system includes -#include - -// 3rdparty lib includes -#include - -// local includes -#include "utils.h" - -namespace { -class TextInterface { -public: - virtual std::string text() const = 0; -}; - -class EmptyText : public virtual TextInterface -{ -public: - std::string text() const override { return {}; } -}; - -template -class StaticText : public virtual TextInterface -{ -public: - static constexpr const char *STATIC_TEXT = Ttext; - - std::string text() const override { return Ttext; } -}; - -class ChangeableText : public virtual TextInterface -{ -public: - std::string text() const override { return m_title; } - void setTitle(std::string &&title) { m_title = std::move(title); } - void setTitle(const std::string &title) { m_title = title; } - -private: - std::string m_title; -}; - -template -class StatusTextHelper : public virtual TextInterface -{ -public: - std::string text() const override { using std::to_string; using ::to_string; return Ttext + to_string((Tptr->*Tmethod)()); } -}; - -template -class StaticStatusTextHelper : public virtual TextInterface -{ -public: - std::string text() const override { using std::to_string; using ::to_string; return Ttext + to_string(Tmethod()); } -}; - -template -class CachedText : public virtual T -{ -public: - std::string text() const override - { - if (!m_loaded) - { - m_text = T::text(); - m_loaded = true; - } - - return m_text; - } - -private: - mutable bool m_loaded{}; - mutable std::string m_text; -}; - -template -class StaticallyCachedText : public virtual T -{ -public: - std::string text() const override - { - static const auto text = T::text(); - return text; - } -}; - -template -struct TextWithValueHelper : public virtual TextInterface -{ - std::string text() const override { return fmt::format("{} {}", Tprefix, Taccessor{}.getValue()); } -}; -} diff --git a/main/texts.h b/main/texts.h index f18ba4e..7c6e9c8 100644 --- a/main/texts.h +++ b/main/texts.h @@ -274,7 +274,6 @@ constexpr char TEXT_SETGAMETRAKYMIN[] = "Set gametrakYMin"; constexpr char TEXT_SETGAMETRAKYMAX[] = "Set gametrakYMax"; constexpr char TEXT_SETGAMETRAKDISTMIN[] = "Set gametrakDistMin"; constexpr char TEXT_SETGAMETRAKDISTMAX[] = "Set gametrakDistMax"; -constexpr char TEXT_SWAPSCREENBYTES[] = "Swap screen bytes"; constexpr char TEXT_TIMERS[] = "Timers"; //constexpr char TEXT_BACK[] = "Back"; @@ -344,16 +343,6 @@ constexpr char TEXT_OFF[] = "Off"; constexpr char TEXT_MASTER[] = "Master"; constexpr char TEXT_SLAVE[] = "Slave"; -//ChangeValueDisplay -constexpr char TEXT_TRUE[] = "true"; -constexpr char TEXT_FALSE[] = "false"; -//constexpr char TEXT_BACK[] = "Back"; - -//ChangeValueDisplay -constexpr char TEXT_IMMED[] = "IMMED"; -constexpr char TEXT_SMOOTH[] = "SMOOTH"; -//constexpr char TEXT_BACK[] = "Back"; - //ChangeValueDisplay constexpr char TEXT_OPENMODE[] = "Open mode"; constexpr char TEXT_VOLTAGE[] = "Voltage"; @@ -367,12 +356,6 @@ constexpr char TEXT_SINUSOIDAL[] = "Sinusoidal"; constexpr char TEXT_FIELDORIENTEDCONTROL[] = "Field oriented control"; //constexpr char TEXT_BACK[] = "Back"; -//ChangeValueDisplay -constexpr char TEXT_NONE[] = "None"; -constexpr char TEXT_EUROPEANSUMMERTIME[] = "EuropeanSummerTime"; -constexpr char TEXT_USDAYLIGHTTIME[] = "UsDaylightTime"; -//constexpr char TEXT_BACK[] = "Back"; - //ChangeValueDisplay constexpr char TEXT_LARSMMODE1[] = "Mode1"; constexpr char TEXT_LARSMMODE2[] = "Mode2"; diff --git a/main/utils.h b/main/utils.h index f87360f..32ed158 100644 --- a/main/utils.h +++ b/main/utils.h @@ -13,6 +13,7 @@ // 3rdparty lib includes #include #include +#include // local includes #ifdef FEATURE_CAN @@ -33,31 +34,6 @@ bool currentlyReverseBeeping; bool reverseBeepToggle; espchrono::millis_clock::time_point lastReverseBeepToggle; -template -class makeComponent : public T... -{}; - -template -class makeComponentArgs : public T1, public T2, public T3... -{ -public: - template - makeComponentArgs(T&& ...args) : - T2{std::forward(args)...} - { - } -}; - -template -T scaleBetween(T x, T in_min, T in_max, T out_min, T out_max) { - if (x < std::min(in_min, in_max)) - x = std::min(in_min, in_max); - else if (x > std::max(in_min, in_max)) - x = std::max(in_min, in_max); - - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; -}; - float convertToKmh(float val) { return val /* / settings.controllerHardware.numMagnetPoles */ / 60.f * settings.controllerHardware.wheelDiameter / 1000.f * 3.14159265359f * 3.6f; @@ -338,23 +314,23 @@ void readPotis() #endif if (raw_gas) - gas = scaleBetween(*raw_gas, settings.boardcomputerHardware.gasMin, settings.boardcomputerHardware.gasMax, 0., 1000.); + gas = cpputils::mapValueClamped(*raw_gas, settings.boardcomputerHardware.gasMin, settings.boardcomputerHardware.gasMax, 0., 1000.); else gas = std::nullopt; if (raw_brems) - brems = scaleBetween(*raw_brems, settings.boardcomputerHardware.bremsMin, settings.boardcomputerHardware.bremsMax, 0., 1000.); + brems = cpputils::mapValueClamped(*raw_brems, settings.boardcomputerHardware.bremsMin, settings.boardcomputerHardware.bremsMax, 0., 1000.); else brems = std::nullopt; #ifdef FEATURE_GAMETRAK raw_gametrakX = sampleMultipleTimes(PINS_GAMETRAKX); - gametrakX = scaleBetween(raw_gametrakX, settings.boardcomputerHardware.gametrakXMin, settings.boardcomputerHardware.gametrakXMax, 0., 1000.); + gametrakX = cpputils::mapValueClamped(raw_gametrakX, settings.boardcomputerHardware.gametrakXMin, settings.boardcomputerHardware.gametrakXMax, 0., 1000.); raw_gametrakY = sampleMultipleTimes(PINS_GAMETRAKY); - gametrakY = scaleBetween(raw_gametrakY, settings.boardcomputerHardware.gametrakYMin, settings.boardcomputerHardware.gametrakYMax, 0., 1000.); + gametrakY = cpputils::mapValueClamped(raw_gametrakY, settings.boardcomputerHardware.gametrakYMin, settings.boardcomputerHardware.gametrakYMax, 0., 1000.); raw_gametrakDist = sampleMultipleTimes(PINS_GAMETRAKDIST); - gametrakDist = scaleBetween(raw_gametrakDist, settings.boardcomputerHardware.gametrakDistMin, settings.boardcomputerHardware.gametrakDistMax, 0., 1000.); + gametrakDist = cpputils::mapValueClamped(raw_gametrakDist, settings.boardcomputerHardware.gametrakDistMin, settings.boardcomputerHardware.gametrakDistMax, 0., 1000.); #endif } } diff --git a/main/widgets/graph.h b/main/widgets/graph.h deleted file mode 100644 index 7968885..0000000 --- a/main/widgets/graph.h +++ /dev/null @@ -1,145 +0,0 @@ -#pragma once - -#include - -#include "globals.h" -#include "ring-buffer.h" -#include "label.h" -//#include "utils.h" - -namespace { -template -class Graph -{ - static constexpr int labelOffset = -5; - static constexpr int leftMargin = 40; - -public: - using Container = std::array>, COUNT>; - static constexpr int WIDTH = LENGTH+40; - - Graph(int x, int y, int height); - - void start(const Container &buffers); - void redraw(const Container &buffers); - -private: - void render(const Container &buffers, bool delta); - - const int m_x, m_y, m_height; - - std::array m_labels; - - std::array, LENGTH> m_lastPixels; - - float m_min; - float m_max; -}; - -template -Graph::Graph(int x, int y, int height) : - m_x{x}, m_y{y}, m_height{height}, - m_labels{ - Label{m_x, int(m_y+(m_height/4.f*0)+labelOffset)}, - Label{m_x, int(m_y+(m_height/4.f*1)+labelOffset)}, - Label{m_x, int(m_y+(m_height/4.f*2)+labelOffset)}, - Label{m_x, int(m_y+(m_height/4.f*3)+labelOffset)}, - Label{m_x, int(m_y+(m_height/4.f*4)+labelOffset)}, - } -{ -} - -template -void Graph::start(const Container &buffers) -{ - m_min = 0.f; - m_max = 10.f; - - tft.drawFastVLine(m_x+leftMargin-1, m_y, m_height, TFT_WHITE); - - for (auto iter = std::begin(m_labels); iter != std::end(m_labels); iter++) - { - tft.drawFastHLine(m_x+leftMargin-5, float(m_y)+(float(m_height)/(m_labels.size()-1)*std::distance(std::begin(m_labels), iter)), 4, TFT_WHITE); - iter->start(); - } - - render(buffers, false); -} - -template -void Graph::redraw(const Container &buffers) -{ - render(buffers, true); -} - -template -void Graph::render(const Container &buffers, bool delta) -{ - float min{std::numeric_limits::quiet_NaN()}, max{std::numeric_limits::quiet_NaN()}; - bool first{true}; - for (const ring_buffer &buffer : buffers) - { - auto minmax = std::minmax_element(std::cbegin(buffer), std::cend(buffer)); - - if (first || *minmax.first < min) - min = *minmax.first; - if (first || *minmax.second > max) - max = *minmax.second; - first = false; - } - - if (min < m_min) - m_min = min*0.9f; - else if (min > m_min*1.1f) - m_min = min*1.1f; - - if (max > m_max) - m_max = max*1.1f; - else if (max < m_max*0.9f) - m_max = max*1.1f; - - if (m_max-m_min < 2.f) - { - m_min-=1.f; - m_max+=1.f; - } - - if (m_min > 0 && m_max > 0) - m_min = 0; - if (m_min < 0 && m_max < 0) - m_max = 0; - - tft.setTextFont(2); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - for (auto iter = std::begin(m_labels); iter != std::end(m_labels); iter++) - iter->redraw(std::to_string(int(m_max+((m_min-m_max)/(m_labels.size()-1)*std::distance(std::begin(m_labels), iter))))); - - int x{leftMargin}; - for (auto pixelsIter = std::begin(m_lastPixels); pixelsIter!=std::end(m_lastPixels); pixelsIter++) - { - const auto index0 = std::distance(std::begin(m_lastPixels), pixelsIter); - auto &pixels = *pixelsIter; - - for (auto iter = std::begin(pixels); iter != std::end(pixels); iter++) - { - const auto index1 = std::distance(std::begin(pixels), iter); - - const std::reference_wrapper> &ref = *(std::begin(buffers)+index1); - const ring_buffer &buffer = ref.get(); - - const float &val = *(std::begin(buffer)+index0); - - int y = scaleBetween(val, m_min, m_max, m_y+m_height-1, m_y+1); - if (!delta || *iter != y) - { - if (delta) - tft.drawFastVLine(x, *iter-1, 3, TFT_BLACK); - tft.drawFastVLine(x, y-1, 3, TFT_WHITE); - *iter = y; - } - } - - x++; - } -} -} diff --git a/main/widgets/label.h b/main/widgets/label.h deleted file mode 100644 index 0010d3f..0000000 --- a/main/widgets/label.h +++ /dev/null @@ -1,84 +0,0 @@ -#pragma once - -#include - -#include "globals.h" - -namespace { -class Label -{ -public: - Label(int x, int y); - - int x() const { return m_x; }; - int y() const { return m_y; }; - - void start(); - void redraw(std::string_view str, bool forceRedraw = false); - void clear(); - -private: - const int m_x; - const int m_y; - - std::string m_lastStr; - int m_lastFont; - int m_lastColor; - - int m_lastWidth; - int m_lastHeight; -}; - -Label::Label(int x, int y) : - m_x{x}, - m_y{y} -{ -} - -void Label::start() -{ - m_lastStr.clear(); - m_lastFont = -1; - m_lastColor = -1; - - m_lastWidth = 0; - m_lastHeight = 0; -} - -void Label::redraw(std::string_view str, bool forceRedraw) -{ - if (m_lastStr == str && - m_lastFont == tft.textfont && - m_lastColor == tft.textcolor && - !forceRedraw) - return; - - const auto renderedWidth = tft.drawString(str.data(), m_x, m_y); - const auto renderedHeight = tft.fontHeight(); - - if (renderedWidth < m_lastWidth) - tft.fillRect(m_x + renderedWidth, m_y, - m_lastWidth - renderedWidth, m_lastHeight, - tft.textbgcolor); - - if (renderedHeight < m_lastHeight) - tft.fillRect(m_x, m_y + renderedHeight, - renderedWidth, m_lastHeight - renderedHeight, - tft.textbgcolor); - - m_lastStr = str; - m_lastFont = tft.textfont; - m_lastColor = tft.textcolor; - - m_lastWidth = renderedWidth; - m_lastHeight = renderedHeight; -} - -void Label::clear() -{ - if (m_lastWidth || m_lastHeight) - tft.fillRect(m_x, m_y, m_lastWidth, m_lastHeight, tft.textbgcolor); - - start(); -} -} diff --git a/main/widgets/progressbar.h b/main/widgets/progressbar.h deleted file mode 100644 index 9538dd1..0000000 --- a/main/widgets/progressbar.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -#include "globals.h" -#include "utils.h" - -namespace { -class ProgressBar -{ -public: - ProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color=TFT_YELLOW); - - void start(); - void redraw(int value); - -private: - const int m_x; - const int m_y; - const int m_width; - const int m_height; - const int m_min; - const int m_max; - const uint32_t m_color; - - int m_lastValue; -}; - -ProgressBar::ProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color) : - m_x{x}, m_y{y}, m_width{width}, m_height{height}, m_min{min}, m_max{max}, m_color{color} -{ -} - -void ProgressBar::start() -{ - m_lastValue = m_x+1; - tft.drawRect(m_x, m_y, m_width, m_height, TFT_WHITE); -} - -void ProgressBar::redraw(int value) -{ - value = scaleBetween(value, m_min, m_max, m_x+1, m_x+m_width-1); - - if (value < m_lastValue) - tft.fillRect(value, m_y+1, m_lastValue-value, m_height-2, TFT_BLACK); - else if (value > m_lastValue) - tft.fillRect(m_lastValue, m_y+1, value-m_lastValue, m_height-2, m_color); - - m_lastValue = value; -} - -} diff --git a/main/widgets/reverseprogressbar.h b/main/widgets/reverseprogressbar.h deleted file mode 100644 index b8c2e2a..0000000 --- a/main/widgets/reverseprogressbar.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -#include "globals.h" -#include "utils.h" - -namespace { -class ReverseProgressBar -{ -public: - ReverseProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color=TFT_YELLOW); - - void start(); - void redraw(int value); - -private: - const int m_x; - const int m_y; - const int m_width; - const int m_height; - const int m_min; - const int m_max; - const uint32_t m_color; - - int m_lastValue; -}; - -ReverseProgressBar::ReverseProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color) : - m_x{x}, m_y{y}, m_width{width}, m_height{height}, m_min{min}, m_max{max}, m_color{color} -{ -} - -void ReverseProgressBar::start() -{ - m_lastValue = m_x+m_width-1; - tft.drawRect(m_x, m_y, m_width, m_height, TFT_WHITE); -} - -void ReverseProgressBar::redraw(int value) -{ - value = scaleBetween(value, m_min, m_max, m_x+m_width-1, m_x+1); - - if (value < m_lastValue) - tft.fillRect(value, m_y+1, m_lastValue-value, m_height-2, m_color); - else if (value > m_lastValue) - tft.fillRect(m_lastValue, m_y+1, value-m_lastValue, m_height-2, TFT_BLACK); - - m_lastValue = value; -} - -} diff --git a/main/widgets/verticalmeter.h b/main/widgets/verticalmeter.h deleted file mode 100644 index d679cea..0000000 --- a/main/widgets/verticalmeter.h +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -#include "globals.h" -#include "utils.h" - -namespace { -class VerticalMeter -{ -public: - VerticalMeter(const char *text, const char *format, int x, int y); - - void start(); - void redraw(float value, float min, float max); - -private: - const char * const m_text; - const char * const m_format; - const int m_x; - const int m_y; - - float m_oldValue{}; -}; - -VerticalMeter::VerticalMeter(const char *text, const char *format, int x, int y) : - m_text{text}, m_format{format}, m_x{x}, m_y{y} -{ -} - -void VerticalMeter::start() -{ - int w = 36; - tft.drawRect(m_x, m_y, w, 155, TFT_GREY); - tft.fillRect(m_x + 2, m_y + 19, w - 3, 155 - 38, TFT_WHITE); - tft.setTextColor(TFT_CYAN, TFT_BLACK); - tft.drawCentreString(m_text, m_x + w / 2, m_y + 2, 2); - - for (int i = 0; i < 110; i += 10) - tft.drawFastHLine(m_x + 20, m_y + 27 + i, 6, TFT_BLACK); - - for (int i = 0; i < 110; i += 50) - tft.drawFastHLine(m_x + 20, m_y + 27 + i, 9, TFT_BLACK); - - tft.fillTriangle(m_x + 3, m_y + 127, m_x + 3 + 16, m_y + 127, m_x + 3, m_y + 127 - 5, TFT_RED); - tft.fillTriangle(m_x + 3, m_y + 127, m_x + 3 + 16, m_y + 127, m_x + 3, m_y + 127 + 5, TFT_RED); - - tft.drawCentreString("---", m_x + w / 2, m_y + 155 - 18, 2); -} - -void VerticalMeter::redraw(float value, float min, float max) -{ - tft.setTextColor(TFT_GREEN, TFT_BLACK); - - char buf[16]; - snprintf(&buf[0], 16, m_format, value); - tft.drawRightString(buf, m_x + 36 - 5, 187 - 27 + 155 - 18, 2); - - const int dx = 3 + m_x; - value = scaleBetween(value, min, max, 0.f, 100.f); - - while (m_oldValue > value) - { - const int dy = 187 + 100 - m_oldValue; - tft.drawLine(dx, dy - 5, dx + 16, dy, TFT_WHITE); - m_oldValue--; - tft.drawLine(dx, dy + 6, dx + 16, dy + 1, TFT_RED); - } - - while (m_oldValue < value) - { - const int dy = 187 + 100 - m_oldValue; - tft.drawLine(dx, dy + 5, dx + 16, dy, TFT_WHITE); - m_oldValue++; - tft.drawLine(dx, dy - 6, dx + 16, dy - 1, TFT_RED); - } -} - - -} diff --git a/main/widgets/vumeter.h b/main/widgets/vumeter.h deleted file mode 100644 index a28a4a4..0000000 --- a/main/widgets/vumeter.h +++ /dev/null @@ -1,145 +0,0 @@ -#pragma once - -#include "globals.h" - -namespace { -class VuMeter -{ -public: - void start(); - void redraw(float value); - -private: - float ltx; // Saved x coord of bottom of needle - uint16_t osx, osy; // Saved x & y coords -}; - -void VuMeter::start() -{ - ltx = 0; - osx = 120; - osy = 120; - - // Meter outline - tft.fillRect(0, 0, 239, 126, TFT_GREY); - tft.fillRect(5, 3, 230, 119, TFT_WHITE); - - tft.setTextColor(TFT_BLACK); // Text colour - - // Draw ticks every 5 degrees from -50 to +50 degrees (100 deg. FSD swing) - for (int i = -50; i < 51; i += 5) { - // Long scale tick length - int tl = 15; - - // Coodinates of tick to draw - float sx = cos((i - 90) * 0.0174532925); - float sy = sin((i - 90) * 0.0174532925); - uint16_t x0 = sx * (100 + tl) + 120; - uint16_t y0 = sy * (100 + tl) + 140; - uint16_t x1 = sx * 100 + 120; - uint16_t y1 = sy * 100 + 140; - - // Coordinates of next tick for zone fill - float sx2 = cos((i + 5 - 90) * 0.0174532925); - float sy2 = sin((i + 5 - 90) * 0.0174532925); - int x2 = sx2 * (100 + tl) + 120; - int y2 = sy2 * (100 + tl) + 140; - int x3 = sx2 * 100 + 120; - int y3 = sy2 * 100 + 140; - - // Yellow zone limits - //if (i >= -50 && i < 0) { - // tft.fillTriangle(x0, y0, x1, y1, x2, y2, TFT_YELLOW); - // tft.fillTriangle(x1, y1, x2, y2, x3, y3, TFT_YELLOW); - //} - - // Green zone limits - if (i >= 0 && i < 25) { - tft.fillTriangle(x0, y0, x1, y1, x2, y2, TFT_GREEN); - tft.fillTriangle(x1, y1, x2, y2, x3, y3, TFT_GREEN); - } - - // Orange zone limits - if (i >= 25 && i < 50) { - tft.fillTriangle(x0, y0, x1, y1, x2, y2, TFT_ORANGE); - tft.fillTriangle(x1, y1, x2, y2, x3, y3, TFT_ORANGE); - } - - // Short scale tick length - if (i % 25 != 0) tl = 8; - - // Recalculate coords incase tick lenght changed - x0 = sx * (100 + tl) + 120; - y0 = sy * (100 + tl) + 140; - x1 = sx * 100 + 120; - y1 = sy * 100 + 140; - - // Draw tick - tft.drawLine(x0, y0, x1, y1, TFT_BLACK); - - // Check if labels should be drawn, with position tweaks - if (i % 25 == 0) { - // Calculate label positions - x0 = sx * (100 + tl + 10) + 120; - y0 = sy * (100 + tl + 10) + 140; - switch (i / 25) { - case -2: tft.drawCentreString("0", x0, y0 - 12, 2); break; - case -1: tft.drawCentreString("7.5", x0, y0 - 9, 2); break; - case 0: tft.drawCentreString("15", x0, y0 - 6, 2); break; - case 1: tft.drawCentreString("22.5", x0, y0 - 9, 2); break; - case 2: tft.drawCentreString("30", x0, y0 - 12, 2); break; - } - } - - // Now draw the arc of the scale - sx = cos((i + 5 - 90) * 0.0174532925); - sy = sin((i + 5 - 90) * 0.0174532925); - x0 = sx * 100 + 120; - y0 = sy * 100 + 140; - // Draw scale arc, don't draw the last part - if (i < 50) tft.drawLine(x0, y0, x1, y1, TFT_BLACK); - } - - tft.drawString("KM/h", 5 + 230 - 40, 119 - 20, 2); // Units at bottom right - tft.drawCentreString("KM/h", 120, 70, 4); // Comment out to avoid font 4 - tft.drawRect(5, 3, 230, 119, TFT_BLACK); // Draw bezel line -} - -void VuMeter::redraw(float value) -{ - tft.setTextColor(TFT_BLACK, TFT_WHITE); - char buf[8]; dtostrf(value, 4, 0, buf); - tft.drawRightString(buf, 50, 119 - 25, 4); - - if (value < -3) value = -3; // Limit value to emulate needle end stops - if (value > 33) value = 33; - - float sdeg = map(value, -3, 33, -150, -30); // Map value to angle - // Calcualte tip of needle coords - float sx = cos(sdeg * 0.0174532925); - float sy = sin(sdeg * 0.0174532925); - - // Calculate x delta of needle start (does not start at pivot point) - float tx = tan((sdeg + 90) * 0.0174532925); - - // Erase old needle image - tft.drawLine(120 + 20 * ltx - 1, 140 - 20, osx - 1, osy, TFT_WHITE); - tft.drawLine(120 + 20 * ltx, 140 - 20, osx, osy, TFT_WHITE); - tft.drawLine(120 + 20 * ltx + 1, 140 - 20, osx + 1, osy, TFT_WHITE); - - // Re-plot text under needle - tft.setTextColor(TFT_BLACK); - tft.drawCentreString("KM/h", 120, 70, 4); // // Comment out to avoid font 4 - - // Store new needle end coords for next erase - ltx = tx; - osx = sx * 98 + 120; - osy = sy * 98 + 140; - - // Draw the needle in the new postion, magenta makes needle a bit bolder - // draws 3 lines to thicken needle - tft.drawLine(120 + 20 * ltx - 1, 140 - 20, osx - 1, osy, TFT_RED); - tft.drawLine(120 + 20 * ltx, 140 - 20, osx, osy, TFT_MAGENTA); - tft.drawLine(120 + 20 * ltx + 1, 140 - 20, osx + 1, osy, TFT_RED); -} -}