From 4b9a36f50784bb824ba850c673619308695a4ad7 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Wed, 29 Dec 2021 21:53:47 +0100 Subject: [PATCH] Implemented error handler in ChangeValueDisplays --- components/esp-gui-lib | 2 +- main/CMakeLists.txt | 6 +- main/accessorhelpers.h | 59 +++++++++- main/accessors/settingsaccessors.h | 48 ++++---- main/accessors/wifistaconfigaccessors.cpp | 36 ------ main/accessors/wifistaconfigaccessors.h | 81 +++++--------- main/bobbyerrorhandler.cpp | 14 +++ main/bobbyerrorhandler.h | 9 ++ main/displays/bobbychangevaluedisplay.h | 5 +- main/displays/bobbydisplay.cpp | 3 + main/displays/bobbydisplay.h | 3 - main/displays/bobbydisplaywithtitle.cpp | 3 + main/displays/bobbydisplaywithtitle.h | 3 - main/displays/bobbymenudisplay.cpp | 3 + main/displays/bobbymenudisplay.h | 3 - main/displays/bobbypopupdisplay.cpp | 29 +++++ main/displays/bobbypopupdisplay.h | 18 +++ main/displays/menus/batterymenu.cpp | 12 +- .../boardcomputerhardwaresettingsmenu.cpp | 48 ++++---- main/displays/menus/buzzermenu.cpp | 32 +++--- main/displays/menus/cloudsettingsmenu.cpp | 12 +- .../menus/controllerhardwaresettingsmenu.cpp | 20 ++-- main/displays/menus/debugmenu.cpp | 6 +- .../menus/defaultmodesettingsmenu.cpp | 44 ++++---- main/displays/menus/handbremssettingsmenu.cpp | 4 +- main/displays/menus/larsmmodesettingsmenu.cpp | 4 +- main/displays/menus/ledstripmenu.cpp | 36 +++--- main/displays/menus/limitssettingsmenu.cpp | 24 ++-- .../displays/menus/lockscreensettingsmenu.cpp | 16 +-- main/displays/menus/mosfetsmenu.h | 2 +- .../menus/motortestmodesettingsmenu.cpp | 8 +- main/displays/menus/settingsmenu.cpp | 2 +- .../menus/tempomatmodesettingsmenu.cpp | 4 +- main/displays/menus/timersmenu.cpp | 4 +- main/displays/menus/timesettingsmenu.cpp | 8 +- main/displays/menus/udpcloudsettingsmenu.cpp | 4 +- main/displays/menus/wifiapsettingsmenu.cpp | 4 +- main/displays/popups/alertdisplay.cpp | 105 ------------------ main/displays/popups/alertdisplay.h | 30 ----- 39 files changed, 336 insertions(+), 418 deletions(-) create mode 100644 main/bobbyerrorhandler.cpp create mode 100644 main/bobbyerrorhandler.h create mode 100644 main/displays/bobbypopupdisplay.cpp create mode 100644 main/displays/bobbypopupdisplay.h delete mode 100644 main/displays/popups/alertdisplay.cpp delete mode 100644 main/displays/popups/alertdisplay.h diff --git a/components/esp-gui-lib b/components/esp-gui-lib index a29efa4..a279559 160000 --- a/components/esp-gui-lib +++ b/components/esp-gui-lib @@ -1 +1 @@ -Subproject commit a29efa4e47dbf422be4f4fa22d52c62ff9089e6d +Subproject commit a279559e768b70c919a1516f8401a4fae4821c54 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 98f4f12..4c12d22 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -8,6 +8,7 @@ set(headers bluetoothtexthelpers.h bmsutils.h bobbybuttons.h + bobbyerrorhandler.h buildserver.h buttons.h can.h @@ -107,6 +108,7 @@ set(headers displays/bobbydisplaywithtitle.h displays/bobbygraphdisplay.h displays/bobbymenudisplay.h + displays/bobbypopupdisplay.h displays/bobbysplitgraphdisplay.h displays/calibratedisplay.h displays/calibratevoltagedisplay.h @@ -183,7 +185,6 @@ set(headers displays/menus/wifistasettingsmenu.h displays/metersdisplay.h displays/pingpongdisplay.h - displays/popups/alertdisplay.h displays/poweroffdisplay.h displays/powersupplydisplay.h displays/qrcodedebug.h @@ -241,6 +242,7 @@ set(sources bluetoothtexthelpers.cpp bmsutils.cpp bobbybuttons.cpp + bobbyerrorhandler.cpp buildserver.cpp buttons.cpp can.cpp @@ -337,6 +339,7 @@ set(sources displays/bobbydisplaywithtitle.cpp displays/bobbygraphdisplay.cpp displays/bobbymenudisplay.cpp + displays/bobbypopupdisplay.cpp displays/bobbysplitgraphdisplay.cpp displays/calibratedisplay.cpp displays/calibratevoltagedisplay.cpp @@ -411,7 +414,6 @@ set(sources displays/menus/wifistasettingsmenu.cpp displays/metersdisplay.cpp displays/pingpongdisplay.cpp - displays/popups/alertdisplay.cpp displays/poweroffdisplay.cpp displays/powersupplydisplay.cpp displays/qrcodedebug.cpp diff --git a/main/accessorhelpers.h b/main/accessorhelpers.h index 7e0ce07..d558f5a 100644 --- a/main/accessorhelpers.h +++ b/main/accessorhelpers.h @@ -1,5 +1,8 @@ #pragma once +// system includes +#include + // 3rdparty lib includes #include @@ -11,7 +14,15 @@ template struct RefAccessorSaveSettings : public virtual espgui::RefAccessor { - void setValue(T value) override { espgui::RefAccessor::setValue(value); saveSettings(); }; + typename espgui::AccessorInterface::setter_result_t setValue(T value) override + { + espgui::RefAccessor::setValue(value); + + if (!saveSettings()) + return tl::make_unexpected("saveSettings() failed!"); + + return {}; + }; }; template @@ -19,6 +30,48 @@ struct NewSettingsAccessor : public virtual espgui::AccessorInterface { virtual ConfigWrapper& getConfig() const = 0; - T getValue() const override { return getConfig().value; } - void setValue(T value) override { configs.write_config(getConfig(), value); } + T getValue() const override + { + return getConfig().value; + } + + typename espgui::AccessorInterface::setter_result_t setValue(T value) override + { + return configs.write_config(getConfig(), value); + } +}; + +template +struct NewSettingsChronoAdaptorAccessor; + +template<> +struct NewSettingsChronoAdaptorAccessor : public virtual espgui::AccessorInterface +{ + virtual ConfigWrapper& getConfig() const = 0; + + int32_t getValue() const override + { + return getConfig().value.count(); + } + + typename espgui::AccessorInterface::setter_result_t setValue(int32_t value) override + { + return configs.write_config(getConfig(), espchrono::minutes32{value}); + } +}; + +template<> +struct NewSettingsChronoAdaptorAccessor : public virtual espgui::AccessorInterface +{ + virtual ConfigWrapper& getConfig() const = 0; + + int32_t getValue() const override + { + return getConfig().value.count(); + } + + typename espgui::AccessorInterface::setter_result_t setValue(int32_t value) override + { + return configs.write_config(getConfig(), espchrono::milliseconds32{value}); + } }; diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index bd8dbae..2230674 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -27,7 +27,13 @@ struct IDcMaxAccessor : public RefAccessorSaveSettings { int16_t &getRe struct NMotMaxKmhAccessor : public virtual espgui::AccessorInterface { int16_t getValue() const override { return convertToKmh(settings.limits.nMotMax); } - void setValue(int16_t value) override { settings.limits.nMotMax = convertFromKmh(value); saveSettings(); } + espgui::AccessorInterface::setter_result_t setValue(int16_t value) override + { + settings.limits.nMotMax = convertFromKmh(value); + if (!saveSettings()) + return tl::make_unexpected("saveSettings() failed!"); + return {}; + } }; struct NMotMaxRpmAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.limits.nMotMax; } }; struct FieldWeakMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.limits.fieldWeakMax; } }; @@ -50,32 +56,14 @@ struct CloudTransmitTimeoutAccessor : public RefAccessorSaveSettings { #endif // Time -struct TimezoneOffsetAccessor : public virtual espgui::AccessorInterface -{ - int32_t getValue() const override { return configs.timezoneOffset.value.count(); } - void setValue(int32_t value) override { configs.write_config(configs.timezoneOffset, espchrono::minutes32{value}); } -}; -struct DaylightSavingModeAccessor : public virtual espgui::AccessorInterface -{ - espchrono::DayLightSavingMode getValue() const override { return configs.timeDst.value; } - void setValue(espchrono::DayLightSavingMode value) override { configs.write_config(configs.timeDst, value); } -}; +//struct TimezoneOffsetAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.timezoneOffset; } }; +struct TimezoneOffsetAccessor : public NewSettingsChronoAdaptorAccessor { ConfigWrapper &getConfig() const override { return configs.timezoneOffset; } }; +struct DaylightSavingModeAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.timeDst; } }; #ifdef FEATURE_NTP -struct TimeServerEnabledAccessor : public virtual espgui::AccessorInterface -{ - bool getValue() const override { return configs.timeServerEnabled.value; } - void setValue(bool value) override { configs.write_config(configs.timeServerEnabled, value); } -}; -struct TimeSyncModeAccessor : public virtual espgui::AccessorInterface -{ - sntp_sync_mode_t getValue() const override { return configs.timeSyncMode.value; } - void setValue(sntp_sync_mode_t value) override { configs.write_config(configs.timeSyncMode, value); } -}; -struct TimeSyncIntervalAccessor : public virtual espgui::AccessorInterface -{ - int32_t getValue() const override { return configs.timeSyncInterval.value.count(); } - void setValue(int32_t value) override { configs.write_config(configs.timeSyncInterval, espchrono::milliseconds32{value}); } -}; +struct TimeServerEnabledAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.timeServerEnabled; } }; +struct TimeSyncModeAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.timeSyncMode; } }; +//struct TimeSyncIntervalAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.timeSyncInterval; } }; +struct TimeSyncIntervalAccessor : public NewSettingsChronoAdaptorAccessor { ConfigWrapper &getConfig() const override { return configs.timeSyncInterval; } }; #endif // Controller Hardware @@ -93,7 +81,13 @@ struct WheelDiameterMmAccessor : public RefAccessorSaveSettings { int16 struct WheelDiameterInchAccessor : public virtual espgui::AccessorInterface { float getValue() const override { return convertToInch(settings.controllerHardware.wheelDiameter); } - void setValue(float value) override { settings.controllerHardware.wheelDiameter = convertFromInch(value); saveSettings(); } + espgui::AccessorInterface::setter_result_t setValue(float value) override + { + settings.controllerHardware.wheelDiameter = convertFromInch(value); + if (!saveSettings()) + return tl::make_unexpected("saveSettings() failed!"); + return {}; + } }; struct NumMagnetPolesAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.controllerHardware.numMagnetPoles; } }; struct SwapFrontBackAccessor : public RefAccessorSaveSettings { diff --git a/main/accessors/wifistaconfigaccessors.cpp b/main/accessors/wifistaconfigaccessors.cpp index 115a6f6..102e2e2 100644 --- a/main/accessors/wifistaconfigaccessors.cpp +++ b/main/accessors/wifistaconfigaccessors.cpp @@ -1,39 +1,3 @@ #include "wifistaconfigaccessors.h" -// local includes -#include "newsettings.h" -using namespace espgui; - -bool WifiStaEnabledAccessor::getValue() const { return configs.wifiStaEnabled.value; } -void WifiStaEnabledAccessor::setValue(bool value) { configs.write_config(configs.wifiStaEnabled, value); } - -std::string WifiStaConfigSsidAccessor::getValue() const { return configs.wifi_configs[m_index].ssid.value; } -void WifiStaConfigSsidAccessor::setValue(std::string value) { configs.write_config(configs.wifi_configs[m_index].ssid, value); } - -std::string WifiStaConfigKeyAccessor::getValue() const { return configs.wifi_configs[m_index].key.value; } -void WifiStaConfigKeyAccessor::setValue(std::string value) { configs.write_config(configs.wifi_configs[m_index].key, value); } - -bool WifiStaConfigUseStaticIpAccessor::getValue() const { return configs.wifi_configs[m_index].useStaticIp.value; } -void WifiStaConfigUseStaticIpAccessor::setValue(bool value) { configs.write_config(configs.wifi_configs[m_index].useStaticIp, value); } - -wifi_stack::ip_address_t WifiStaConfigStaticIpAccessor::getValue() const { return configs.wifi_configs[m_index].staticIp.value; } -void WifiStaConfigStaticIpAccessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticIp, value); } - -wifi_stack::ip_address_t WifiStaConfigStaticSubnetAccessor::getValue() const { return configs.wifi_configs[m_index].staticSubnet.value; } -void WifiStaConfigStaticSubnetAccessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticSubnet, value); } - -wifi_stack::ip_address_t WifiStaConfigStaticGatewayAccessor::getValue() const { return configs.wifi_configs[m_index].staticGateway.value; } -void WifiStaConfigStaticGatewayAccessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticGateway, value); } - -bool WifiStaConfigUseStaticDnsAccessor::getValue() const { return configs.wifi_configs[m_index].useStaticDns.value; } -void WifiStaConfigUseStaticDnsAccessor::setValue(bool value) { configs.write_config(configs.wifi_configs[m_index].useStaticDns, value); } - -wifi_stack::ip_address_t WifiStaConfigStaticDns0Accessor::getValue() const { return configs.wifi_configs[m_index].staticDns0.value; } -void WifiStaConfigStaticDns0Accessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticDns0, value); } - -wifi_stack::ip_address_t WifiStaConfigStaticDns1Accessor::getValue() const { return configs.wifi_configs[m_index].staticDns1.value; } -void WifiStaConfigStaticDns1Accessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticDns1, value); } - -wifi_stack::ip_address_t WifiStaConfigStaticDns2Accessor::getValue() const { return configs.wifi_configs[m_index].staticDns2.value; } -void WifiStaConfigStaticDns2Accessor::setValue(wifi_stack::ip_address_t value) { configs.write_config(configs.wifi_configs[m_index].staticDns2, value); } diff --git a/main/accessors/wifistaconfigaccessors.h b/main/accessors/wifistaconfigaccessors.h index 5c2a835..bfeaa5f 100644 --- a/main/accessors/wifistaconfigaccessors.h +++ b/main/accessors/wifistaconfigaccessors.h @@ -9,129 +9,98 @@ #include #include -class WifiStaEnabledAccessor : public virtual espgui::AccessorInterface -{ -public: - bool getValue() const override; - void setValue(bool value) override; -}; +// local includes +#include "newsettings.h" +#include "accessorhelpers.h" -class WifiStaConfigSsidAccessor : public virtual espgui::AccessorInterface +struct WifiStaEnabledAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.wifiStaEnabled; } }; + +class WifiStaConfigSsidAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigSsidAccessor(int index) : m_index{index} {} - - std::string getValue() const override; - void setValue(std::string value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].ssid; } private: const int m_index; }; -class WifiStaConfigKeyAccessor : public virtual espgui::AccessorInterface +class WifiStaConfigKeyAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigKeyAccessor(int index) : m_index{index} {} - - std::string getValue() const override; - void setValue(std::string value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].key; } private: const int m_index; }; -class WifiStaConfigUseStaticIpAccessor : public virtual espgui::AccessorInterface +class WifiStaConfigUseStaticIpAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigUseStaticIpAccessor(int index) : m_index{index} {} - - bool getValue() const override; - void setValue(bool value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].useStaticIp; } private: const int m_index; }; -class WifiStaConfigStaticIpAccessor : public virtual espgui::AccessorInterface +class WifiStaConfigStaticIpAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigStaticIpAccessor(int index) : m_index{index} {} - - wifi_stack::ip_address_t getValue() const override; - void setValue(wifi_stack::ip_address_t value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].staticIp; } private: const int m_index; }; -class WifiStaConfigStaticSubnetAccessor : public virtual espgui::AccessorInterface +class WifiStaConfigStaticSubnetAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigStaticSubnetAccessor(int index) : m_index{index} {} - - wifi_stack::ip_address_t getValue() const override; - void setValue(wifi_stack::ip_address_t value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].staticSubnet; } private: const int m_index; }; -class WifiStaConfigStaticGatewayAccessor : public virtual espgui::AccessorInterface +class WifiStaConfigStaticGatewayAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigStaticGatewayAccessor(int index) : m_index{index} {} - - wifi_stack::ip_address_t getValue() const override; - void setValue(wifi_stack::ip_address_t value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].staticGateway; } private: const int m_index; }; -class WifiStaConfigUseStaticDnsAccessor : public virtual espgui::AccessorInterface +class WifiStaConfigUseStaticDnsAccessor : public virtual NewSettingsAccessor { public: WifiStaConfigUseStaticDnsAccessor(int index) : m_index{index} {} - - bool getValue() const override; - void setValue(bool value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].useStaticDns; } private: const int m_index; }; -class WifiStaConfigStaticDns0Accessor : public virtual espgui::AccessorInterface +class WifiStaConfigStaticDns0Accessor : public virtual NewSettingsAccessor { public: WifiStaConfigStaticDns0Accessor(int index) : m_index{index} {} - - wifi_stack::ip_address_t getValue() const override; - void setValue(wifi_stack::ip_address_t value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].staticDns0; } private: const int m_index; }; -class WifiStaConfigStaticDns1Accessor : public virtual espgui::AccessorInterface +class WifiStaConfigStaticDns1Accessor : public virtual NewSettingsAccessor { public: WifiStaConfigStaticDns1Accessor(int index) : m_index{index} {} - - wifi_stack::ip_address_t getValue() const override; - void setValue(wifi_stack::ip_address_t value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].staticDns1; } private: const int m_index; }; -class WifiStaConfigStaticDns2Accessor : public virtual espgui::AccessorInterface +class WifiStaConfigStaticDns2Accessor : public virtual NewSettingsAccessor { public: WifiStaConfigStaticDns2Accessor(int index) : m_index{index} {} - - wifi_stack::ip_address_t getValue() const override; - void setValue(wifi_stack::ip_address_t value) override; - + ConfigWrapper& getConfig() const override { return configs.wifi_configs[m_index].staticDns2; } private: const int m_index; }; diff --git a/main/bobbyerrorhandler.cpp b/main/bobbyerrorhandler.cpp new file mode 100644 index 0000000..fc90faf --- /dev/null +++ b/main/bobbyerrorhandler.cpp @@ -0,0 +1,14 @@ +#include "bobbyerrorhandler.h" + +// 3rdparty lib includes +#include + +// local includes +#include "displays/bobbypopupdisplay.h" + +void BobbyErrorHandler::errorOccured(std::string &&error) +{ + auto newDisplay = std::make_unique(std::move(error), std::move(espgui::currentDisplay)); + newDisplay->initOverlay(); + espgui::currentDisplay = std::move(newDisplay); +} diff --git a/main/bobbyerrorhandler.h b/main/bobbyerrorhandler.h new file mode 100644 index 0000000..c62f8fa --- /dev/null +++ b/main/bobbyerrorhandler.h @@ -0,0 +1,9 @@ +#pragma once + +// 3rdparty lib includes +#include + +struct BobbyErrorHandler : public virtual espgui::ErrorHandlerInterface +{ + void errorOccured(std::string &&error) override; +}; diff --git a/main/displays/bobbychangevaluedisplay.h b/main/displays/bobbychangevaluedisplay.h index 6f7dcb1..7ba3065 100644 --- a/main/displays/bobbychangevaluedisplay.h +++ b/main/displays/bobbychangevaluedisplay.h @@ -5,9 +5,12 @@ // local includes #include "bobbybuttons.h" +#include "bobbyerrorhandler.h" template -class BobbyChangeValueDisplay : public espgui::ChangeValueDisplay +class BobbyChangeValueDisplay : + public espgui::ChangeValueDisplay, + public virtual BobbyErrorHandler { using Base = espgui::ChangeValueDisplay; diff --git a/main/displays/bobbydisplay.cpp b/main/displays/bobbydisplay.cpp index 79c0f64..dda2469 100644 --- a/main/displays/bobbydisplay.cpp +++ b/main/displays/bobbydisplay.cpp @@ -1,5 +1,8 @@ #include "bobbydisplay.h" +// local includes +#include "bobbybuttons.h" + void BobbyDisplay::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); diff --git a/main/displays/bobbydisplay.h b/main/displays/bobbydisplay.h index 0a542f0..60c1e70 100644 --- a/main/displays/bobbydisplay.h +++ b/main/displays/bobbydisplay.h @@ -3,9 +3,6 @@ // 3rdparty lib includes #include -// local includes -#include "bobbybuttons.h" - class BobbyDisplay : public espgui::Display { using Base = espgui::Display; diff --git a/main/displays/bobbydisplaywithtitle.cpp b/main/displays/bobbydisplaywithtitle.cpp index dfcf76b..55f8db2 100644 --- a/main/displays/bobbydisplaywithtitle.cpp +++ b/main/displays/bobbydisplaywithtitle.cpp @@ -1,5 +1,8 @@ #include "bobbydisplaywithtitle.h" +// local includes +#include "bobbybuttons.h" + void BobbyDisplayWithTitle::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); diff --git a/main/displays/bobbydisplaywithtitle.h b/main/displays/bobbydisplaywithtitle.h index 84e8884..0edb868 100644 --- a/main/displays/bobbydisplaywithtitle.h +++ b/main/displays/bobbydisplaywithtitle.h @@ -3,9 +3,6 @@ // 3rdparty lib includes #include -// local includes -#include "bobbybuttons.h" - class BobbyDisplayWithTitle : public espgui::DisplayWithTitle { using Base = espgui::DisplayWithTitle; diff --git a/main/displays/bobbymenudisplay.cpp b/main/displays/bobbymenudisplay.cpp index a1d3ab3..2066720 100644 --- a/main/displays/bobbymenudisplay.cpp +++ b/main/displays/bobbymenudisplay.cpp @@ -1,5 +1,8 @@ #include "bobbymenudisplay.h" +// local includes +#include "bobbybuttons.h" + void BobbyMenuDisplay::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); diff --git a/main/displays/bobbymenudisplay.h b/main/displays/bobbymenudisplay.h index bb94e3a..4e92c1b 100644 --- a/main/displays/bobbymenudisplay.h +++ b/main/displays/bobbymenudisplay.h @@ -3,9 +3,6 @@ // 3rdparty lib includes #include -// local includes -#include "bobbybuttons.h" - class BobbyMenuDisplay : public espgui::MenuDisplay { using Base = espgui::MenuDisplay; diff --git a/main/displays/bobbypopupdisplay.cpp b/main/displays/bobbypopupdisplay.cpp new file mode 100644 index 0000000..d163303 --- /dev/null +++ b/main/displays/bobbypopupdisplay.cpp @@ -0,0 +1,29 @@ +#include "bobbypopupdisplay.h" + +// local includes +#include "bobbybuttons.h" + +void BobbyPopupDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + if (const auto translated = translateRawButton(button)) + buttonPressed(*translated); +} + +void BobbyPopupDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + if (const auto translated = translateRawButton(button)) + buttonReleased(*translated); +} + +void BobbyPopupDisplay::buttonPressed(espgui::Button button) +{ + //Base::buttonPressed(button); + buttonPressedCommon(button); +} + +void BobbyPopupDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/bobbypopupdisplay.h b/main/displays/bobbypopupdisplay.h new file mode 100644 index 0000000..b680df3 --- /dev/null +++ b/main/displays/bobbypopupdisplay.h @@ -0,0 +1,18 @@ +#pragma once + +// 3rdparty lib includes +#include + +class BobbyPopupDisplay : public espgui::PopupDisplay +{ + using Base = espgui::PopupDisplay; + +public: + using Base::Base; + + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; diff --git a/main/displays/menus/batterymenu.cpp b/main/displays/menus/batterymenu.cpp index 4851961..e41428b 100644 --- a/main/displays/menus/batterymenu.cpp +++ b/main/displays/menus/batterymenu.cpp @@ -18,24 +18,24 @@ using BatteryCellSeriesChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BatterySeriesCellsAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using BatteryCellParallelChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BatteryParallelCellsAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using BatteryWHperKMChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BatteryWHperKMAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using namespace espgui; diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp b/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp index 64e96e0..4c9ed7e 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp +++ b/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp @@ -48,36 +48,36 @@ using SampleCountChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, SampleCountAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GasMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GasMinAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GasMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GasMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using BremsMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BremsMinAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using BremsMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BremsMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; #if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) @@ -85,8 +85,8 @@ using DPadDebounceChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DPadDebounceAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; #endif @@ -108,43 +108,43 @@ using GametrakXMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakXMinAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GametrakXMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakXMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GametrakYMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakYMinAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GametrakYMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakYMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GametrakDistMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakDistMinAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using GametrakDistMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakDistMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; #endif } // namespace diff --git a/main/displays/menus/buzzermenu.cpp b/main/displays/menus/buzzermenu.cpp index cb1866b..3a09f02 100644 --- a/main/displays/menus/buzzermenu.cpp +++ b/main/displays/menus/buzzermenu.cpp @@ -21,8 +21,8 @@ using FrontFreqChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, FrontFreqAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; struct FrontPatternAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.front.command.buzzer.pattern; } }; @@ -30,8 +30,8 @@ using FrontPatternChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, FrontPatternAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; struct BackFreqAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.back.command.buzzer.freq; } }; @@ -39,8 +39,8 @@ using BackFreqChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BackFreqAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; struct BackPatternAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.back.command.buzzer.pattern; } }; @@ -48,37 +48,37 @@ using BackPatternChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BackPatternAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using ReverseBeepFreq0ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepFreq0Accessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using ReverseBeepFreq1ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepFreq1Accessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using ReverseBeepDuration0ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepDuration0Accessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using ReverseBeepDuration1ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepDuration1Accessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/cloudsettingsmenu.cpp b/main/displays/menus/cloudsettingsmenu.cpp index 9f2479a..227072b 100644 --- a/main/displays/menus/cloudsettingsmenu.cpp +++ b/main/displays/menus/cloudsettingsmenu.cpp @@ -24,8 +24,8 @@ using CloudTransmitTimeoutChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CloudTransmitTimeoutAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; struct CloudBufferLengthText : public virtual espgui::TextInterface @@ -41,16 +41,16 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CloudCollectRateAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using CloudSendRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CloudSendRateAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/controllerhardwaresettingsmenu.cpp b/main/displays/menus/controllerhardwaresettingsmenu.cpp index 8d4b4a5..3d9a092 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.cpp +++ b/main/displays/menus/controllerhardwaresettingsmenu.cpp @@ -24,38 +24,38 @@ using WheelDiameterMmChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, WheelDiameterMmAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using WheelDiameterInchChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, WheelDiameterInchAccessor, espgui::RatioNumberStep>, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using NumMagnetPolesChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, NumMagnetPolesAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; #ifdef FEATURE_CAN using CanTransmitTimeoutChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CanTransmitTimeoutAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using CanReceiveTimeoutChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CanReceiveTimeoutAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; #endif } // namespace diff --git a/main/displays/menus/debugmenu.cpp b/main/displays/menus/debugmenu.cpp index c7a2cce..af0fb81 100644 --- a/main/displays/menus/debugmenu.cpp +++ b/main/displays/menus/debugmenu.cpp @@ -28,7 +28,7 @@ #include "displays/menus/dynamicdebugmenu.h" #include "displays/menus/mainmenu.h" #include "displays/menus/batterydebugmenu.h" -#include "displays/popups/alertdisplay.cpp" +#include "bobbyerrorhandler.h" namespace { class AlertAction : public espgui::MenuItem @@ -37,9 +37,7 @@ public: std::string text() const override { return "Open popup"; } void triggered() override { - auto newDisplay = std::make_unique("Das\nist\nein sehr langer text, der nicht in eine zeile passt", std::move(currentDisplay)); - newDisplay->initOverlay(); - currentDisplay = std::move(newDisplay); + BobbyErrorHandler{}.errorOccured("Das\nist\nein sehr langer text, der nicht in eine zeile passt"); } }; } // namespace diff --git a/main/displays/menus/defaultmodesettingsmenu.cpp b/main/displays/menus/defaultmodesettingsmenu.cpp index faf0cfa..d62a0e9 100644 --- a/main/displays/menus/defaultmodesettingsmenu.cpp +++ b/main/displays/menus/defaultmodesettingsmenu.cpp @@ -37,78 +37,78 @@ using DefaultModeSmoothingChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeSmoothingAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeFwSmoothingLowerLimitChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeFrontPercentageChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeFrontPercentageAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeBackPercentageChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeBackPercentageAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeAddSchwelleChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeAddSchwelleAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeGas1WertChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeGas1WertAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeGas2WertChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeGas2WertAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeBrems1WertChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeBrems1WertAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeBrems2WertChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeBrems2WertAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeHybridActivationLimitChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeHybridActivationLimitAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DefaultModeHybridDeactivationLimitChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DefaultModeHybridDeactivationLimitAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/handbremssettingsmenu.cpp b/main/displays/menus/handbremssettingsmenu.cpp index 011f472..182e1c4 100644 --- a/main/displays/menus/handbremssettingsmenu.cpp +++ b/main/displays/menus/handbremssettingsmenu.cpp @@ -21,8 +21,8 @@ using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, HandbremsTimeoutAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using HandBremsModeChangeValueDisplay = espgui::makeComponent< BobbyChangeValueDisplay, diff --git a/main/displays/menus/larsmmodesettingsmenu.cpp b/main/displays/menus/larsmmodesettingsmenu.cpp index 23bd2db..66c2cbf 100644 --- a/main/displays/menus/larsmmodesettingsmenu.cpp +++ b/main/displays/menus/larsmmodesettingsmenu.cpp @@ -33,8 +33,8 @@ using LarsmModeIterationsChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LarsmModeIterationsAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/ledstripmenu.cpp b/main/displays/menus/ledstripmenu.cpp index 3c3db7b..4fa59ab 100644 --- a/main/displays/menus/ledstripmenu.cpp +++ b/main/displays/menus/ledstripmenu.cpp @@ -30,72 +30,72 @@ using LedsCountChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LedsCountAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using CenterOffsetChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CenterOffsetAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using SmallOffsetChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, SmallOffsetAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using BigOffsetChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BigOffsetAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DeziampereChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DeziampereAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using StVOOffsetChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LedsStVOFrontOffsetAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using StVOLengthChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LedsStVOFrontLengthAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using animationMultiplierChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, AnimationMultiplierAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using ledstripBrightnessChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LedstripBrightnessAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; class AllCustomLedsOffAction : public virtual espgui::ActionInterface diff --git a/main/displays/menus/limitssettingsmenu.cpp b/main/displays/menus/limitssettingsmenu.cpp index ad13e7d..9c531ce 100644 --- a/main/displays/menus/limitssettingsmenu.cpp +++ b/main/displays/menus/limitssettingsmenu.cpp @@ -18,43 +18,43 @@ using IMotMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, IMotMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using IDcMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, IDcMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using NMotMaxKmhChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, NMotMaxKmhAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using NMotMaxRpmChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, NMotMaxRpmAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using FieldWeakMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, FieldWeakMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using PhaseAdvMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, PhaseAdvMaxAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/lockscreensettingsmenu.cpp b/main/displays/menus/lockscreensettingsmenu.cpp index 850b9b1..f4e6080 100644 --- a/main/displays/menus/lockscreensettingsmenu.cpp +++ b/main/displays/menus/lockscreensettingsmenu.cpp @@ -20,32 +20,32 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<0>, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<1>, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<2>, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using LockscreenPinDigit3ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<3>, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/mosfetsmenu.h b/main/displays/menus/mosfetsmenu.h index d142faa..2491f76 100644 --- a/main/displays/menus/mosfetsmenu.h +++ b/main/displays/menus/mosfetsmenu.h @@ -14,7 +14,7 @@ class GPIOAccessor : public virtual espgui::AccessorInterface { public: bool getValue() const override { return digitalRead(PIN); } - void setValue(bool value) override { digitalWrite(PIN, value ? HIGH : LOW); } + espgui::AccessorInterface::setter_result_t setValue(bool value) override { digitalWrite(PIN, value ? HIGH : LOW); return {}; } }; using Mosfet0Accessor = GPIOAccessor; diff --git a/main/displays/menus/motortestmodesettingsmenu.cpp b/main/displays/menus/motortestmodesettingsmenu.cpp index 6515db9..ede9186 100644 --- a/main/displays/menus/motortestmodesettingsmenu.cpp +++ b/main/displays/menus/motortestmodesettingsmenu.cpp @@ -17,16 +17,16 @@ using MotortestMultiplikatorChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, MotortestModeMultiplikatorAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using MotortestMaxPwmChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, MotortestMaxPwmAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/settingsmenu.cpp b/main/displays/menus/settingsmenu.cpp index c7e4928..893b8f2 100644 --- a/main/displays/menus/settingsmenu.cpp +++ b/main/displays/menus/settingsmenu.cpp @@ -49,7 +49,7 @@ namespace { struct BacklightAccessor : public virtual espgui::AccessorInterface { bool getValue() const override { return digitalRead(PINS_LEDBACKLIGHT) != ledBacklightInverted; } - void setValue(bool value) override { digitalWrite(PINS_LEDBACKLIGHT, value != ledBacklightInverted); } + espgui::AccessorInterface::setter_result_t setValue(bool value) override { digitalWrite(PINS_LEDBACKLIGHT, value != ledBacklightInverted); return {}; } }; #endif struct FrontLedAccessor : public espgui::RefAccessor { bool &getRef() const override { return controllers.front.command.led; } }; diff --git a/main/displays/menus/tempomatmodesettingsmenu.cpp b/main/displays/menus/tempomatmodesettingsmenu.cpp index 472b52e..f83956d 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.cpp +++ b/main/displays/menus/tempomatmodesettingsmenu.cpp @@ -21,8 +21,8 @@ using TempomatModeCruiseMotTgtChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TempomatModeCruiseMotTgtAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using TempomatModeModelModeChangeScreen = espgui::makeComponent< diff --git a/main/displays/menus/timersmenu.cpp b/main/displays/menus/timersmenu.cpp index 4632fc7..16d3d43 100644 --- a/main/displays/menus/timersmenu.cpp +++ b/main/displays/menus/timersmenu.cpp @@ -16,8 +16,8 @@ using StatsUpdateRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, StatsUpdateRateAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } diff --git a/main/displays/menus/timesettingsmenu.cpp b/main/displays/menus/timesettingsmenu.cpp index 92dac51..5ba1e7e 100644 --- a/main/displays/menus/timesettingsmenu.cpp +++ b/main/displays/menus/timesettingsmenu.cpp @@ -48,8 +48,8 @@ using TimezoneOffsetChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TimezoneOffsetAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using DaylightSavingModeChangeDisplay = espgui::makeComponent< @@ -73,8 +73,8 @@ using TimeSyncIntervalChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TimeSyncIntervalAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; class NtpSyncStatusText : public virtual espgui::TextInterface diff --git a/main/displays/menus/udpcloudsettingsmenu.cpp b/main/displays/menus/udpcloudsettingsmenu.cpp index c3197d9..c579663 100644 --- a/main/displays/menus/udpcloudsettingsmenu.cpp +++ b/main/displays/menus/udpcloudsettingsmenu.cpp @@ -21,8 +21,8 @@ using UdpCloudSendRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, UdpCloudSendIntervalAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; } // namespace diff --git a/main/displays/menus/wifiapsettingsmenu.cpp b/main/displays/menus/wifiapsettingsmenu.cpp index 614ebc4..e0f2789 100644 --- a/main/displays/menus/wifiapsettingsmenu.cpp +++ b/main/displays/menus/wifiapsettingsmenu.cpp @@ -55,8 +55,8 @@ using ApChannelChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, WifiApChannelAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> >; using ApAuthmodeChangeScreen = espgui::makeComponent< diff --git a/main/displays/popups/alertdisplay.cpp b/main/displays/popups/alertdisplay.cpp deleted file mode 100644 index aa68238..0000000 --- a/main/displays/popups/alertdisplay.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "alertdisplay.h" - -// 3rdparty lib includes -#include -#include -#include - -AlertDisplay::AlertDisplay(std::string &&message, std::unique_ptr &&lastDisplay) : - m_message{std::move(message)}, m_lastDisplay{std::move(lastDisplay)} -{ -} - -void AlertDisplay::initScreen() -{ - m_lastDisplay->initScreen(); - - initOverlay(); -} - -void AlertDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Left: - case Button::Right: - closeOverlay(); - break; - default:; - } -} - -void AlertDisplay::initOverlay() -{ - constexpr auto leftMargin = 20; - constexpr auto rightMargin = leftMargin; - constexpr auto topMargin = 50; - constexpr auto bottomMargin = topMargin; - - const auto width = espgui::tft.width() - leftMargin - rightMargin; - const auto height = espgui::tft.height() - topMargin - bottomMargin; - const auto right = espgui::tft.width() - rightMargin; - const auto bottom = espgui::tft.height() - bottomMargin; - - CPP_UNUSED(right) - - //espgui::tft.drawRect(leftMargin, topMargin, espgui::tft.width() - leftMargin - rightMargin, espgui::tft.height() - topMargin - bottomMargin, TFT_WHITE); - //espgui::tft.fillRect(leftMargin + 1, topMargin + 1, espgui::tft.width() - leftMargin - rightMargin - 2, espgui::tft.height() - topMargin - bottomMargin - 2, TFT_BLACK); - - espgui::tft.drawSunkenRect(leftMargin, topMargin, width, height, - color565(240, 240, 240), - color565(100, 100, 100), - color565(30, 30, 30)); - - espgui::tft.setTextColor(TFT_WHITE, color565(30, 30, 30)); - - int x = leftMargin + 5; - int y = topMargin + 5; - for (char c : m_message) - { - if (c == '\n' || x > espgui::tft.width() - rightMargin - 10) - { - x = leftMargin + 5; - y += espgui::tft.fontHeight(4); - } - - if (c != '\n') - { - const auto addedWidth = espgui::tft.drawChar(espgui::tft.decodeUTF8(c), x, y, 4); - x += addedWidth; - } - - if (y >= espgui::tft.height() - bottomMargin) - break; - } - - espgui::tft.setTextColor(TFT_BLACK, color565(170, 170, 170)); - - espgui::tft.drawSunkenRect(leftMargin + 15, bottom - 40, - (width - 15 - 10 - 15) / 2, - 30, - color565(240, 240, 240), - color565(100, 100, 100), - color565(170, 170, 170)); - - espgui::tft.drawString("Yes", leftMargin + 18, bottom - 37); - - espgui::tft.drawSunkenRect(leftMargin + 15 + ((width - 15 - 30 - 15) / 2) + 15, bottom - 40, - (width - 15 - 10 - 15) / 2, - 30, - color565(240, 240, 240), - color565(100, 100, 100), - color565(170, 170, 170)); - - espgui::tft.drawString("No", leftMargin + 18 + ((width - 15 - 30 - 15) / 2) + 15 + 1, bottom - 37); -} - -void AlertDisplay::closeOverlay() -{ - auto guard = std::move(espgui::currentDisplay); - espgui::currentDisplay = std::move(m_lastDisplay); - espgui::currentDisplay->initScreen(); -} diff --git a/main/displays/popups/alertdisplay.h b/main/displays/popups/alertdisplay.h deleted file mode 100644 index dbb30a2..0000000 --- a/main/displays/popups/alertdisplay.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -// system includes -#include - -// local includes -#include "displays/bobbydisplay.h" - -class AlertDisplay : public BobbyDisplay -{ - using Base = BobbyDisplay; - -public: - AlertDisplay(std::string &&message, std::unique_ptr &&lastDisplay); - - //void start() override; - void initScreen() override; - //void update() override; - //void redraw() override; - //void stop() override; - - void buttonPressed(espgui::Button button) override; - - void initOverlay(); - void closeOverlay(); - -private: - std::string m_message; - std::unique_ptr m_lastDisplay; -};