Merge pull request #324 from bobbycar-graz/refactoring

This commit is contained in:
CommanderRedYT
2022-05-25 03:07:57 +02:00
committed by GitHub
37 changed files with 412 additions and 266 deletions

BIN
icons/git.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -105,6 +105,7 @@ set(headers
displays/menus/feedbackdebugmenu.h displays/menus/feedbackdebugmenu.h
displays/menus/gametrakmodesettingsmenu.h displays/menus/gametrakmodesettingsmenu.h
displays/menus/garagemenu.h displays/menus/garagemenu.h
displays/menus/gitmenu.h
displays/menus/graphsmenu.h displays/menus/graphsmenu.h
displays/menus/greenpassmenu.h displays/menus/greenpassmenu.h
displays/menus/handbremssettingsmenu.h displays/menus/handbremssettingsmenu.h
@ -179,6 +180,7 @@ set(headers
icons/buzzer.h icons/buzzer.h
icons/close.h icons/close.h
icons/demos.h icons/demos.h
icons/git.h
icons/graph.h icons/graph.h
icons/greenpass.h icons/greenpass.h
icons/hardware.h icons/hardware.h
@ -344,6 +346,7 @@ set(sources
displays/menus/feedbackdebugmenu.cpp displays/menus/feedbackdebugmenu.cpp
displays/menus/gametrakmodesettingsmenu.cpp displays/menus/gametrakmodesettingsmenu.cpp
displays/menus/garagemenu.cpp displays/menus/garagemenu.cpp
displays/menus/gitmenu.cpp
displays/menus/graphsmenu.cpp displays/menus/graphsmenu.cpp
displays/menus/greenpassmenu.cpp displays/menus/greenpassmenu.cpp
displays/menus/handbremssettingsmenu.cpp displays/menus/handbremssettingsmenu.cpp
@ -418,6 +421,7 @@ set(sources
icons/buzzer.cpp icons/buzzer.cpp
icons/close.cpp icons/close.cpp
icons/demos.cpp icons/demos.cpp
icons/git.cpp
icons/graph.cpp icons/graph.cpp
icons/greenpass.cpp icons/greenpass.cpp
icons/hardware.cpp icons/hardware.cpp
@ -504,6 +508,24 @@ idf_component_register(
${dependencies} ${dependencies}
) )
execute_process(COMMAND git rev-parse HEAD
OUTPUT_VARIABLE GIT_REV ERROR_QUIET
)
execute_process(
COMMAND git log -1 --pretty=%B
OUTPUT_VARIABLE GIT_MESSAGE ERROR_QUIET
)
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE GIT_BRANCH
)
string(STRIP "${GIT_REV}" GIT_REV)
string(SUBSTRING "${GIT_REV}" 1 7 GIT_SHORT_REV)
string(STRIP "${GIT_MESSAGE}" GIT_MESSAGE)
string(SUBSTRING "${GIT_MESSAGE}" 0 100 GIT_MESSAGE)
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
target_compile_options(${COMPONENT_TARGET} target_compile_options(${COMPONENT_TARGET}
PRIVATE PRIVATE
-fstack-reuse=all -fstack-reuse=all
@ -513,5 +535,9 @@ target_compile_options(${COMPONENT_TARGET}
-Wno-deprecated-declarations -Wno-deprecated-declarations
-Wno-missing-field-initializers -Wno-missing-field-initializers
-Wno-parentheses -Wno-parentheses
-DGIT_REV="${GIT_REV}"
-DGIT_SHORT_REV="${GIT_SHORT_REV}"
-DGIT_MESSAGE="${GIT_MESSAGE}"
-DGIT_BRANCH="${GIT_BRANCH}"
${BOBBYCAR_BUILDFLAGS} ${BOBBYCAR_BUILDFLAGS}
) )

View File

@ -18,27 +18,26 @@ struct QrMenu {
}; };
} // namespace } // namespace
template<typename TMenu> class PushQrDisplayAction : public virtual espgui::ActionInterface
class SwitchQrDisplayAction : public virtual espgui::ActionInterface
{ {
public: public:
explicit SwitchQrDisplayAction(const qraction::QrMenu &qrmenu) : m_msg{qrmenu.message} {} explicit PushQrDisplayAction(const qraction::QrMenu &qrmenu) : m_msg{qrmenu.message} {}
explicit SwitchQrDisplayAction(qraction::QrMenu &&qrmenu) : m_msg{std::move(qrmenu.message)} {} explicit PushQrDisplayAction(qraction::QrMenu &&qrmenu) : m_msg{std::move(qrmenu.message)} {}
void triggered() override void triggered() override
{ {
espgui::pushScreen<QrDisplay<TMenu>>(m_msg); espgui::pushScreen<QrDisplay>(m_msg);
} }
private: private:
std::string m_msg; std::string m_msg;
}; };
template<typename TMenu> template<typename TMenu>
class SwitchQrImportDisplayAction : public virtual espgui::ActionInterface class PushQrImportDisplayAction : public virtual espgui::ActionInterface
{ {
public: public:
explicit SwitchQrImportDisplayAction(const std::string &nvskey) : m_nvskey{nvskey} {} explicit PushQrImportDisplayAction(const std::string &nvskey) : m_nvskey{nvskey} {}
explicit SwitchQrImportDisplayAction(std::string &&nvskey) : m_nvskey{std::move(nvskey)} {} explicit PushQrImportDisplayAction(std::string &&nvskey) : m_nvskey{std::move(nvskey)} {}
void triggered() override void triggered() override
{ {

View File

@ -6,9 +6,7 @@
#include "actions/popscreenaction.h" #include "actions/popscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "esptexthelpers.h" #include "esptexthelpers.h"
#include "displays/menus/settingsmenu.h"
#include <espasyncota.h>
#include <esp_ota_ops.h> #include <esp_ota_ops.h>
#include "fmt/core.h" #include "fmt/core.h"

View File

@ -4,7 +4,8 @@
#include <fmt/core.h> #include <fmt/core.h>
#include "menuitem.h" #include "menuitem.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "actions/switchscreenaction.h" #include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "icons/back.h" #include "icons/back.h"
@ -28,8 +29,8 @@ using CloudTransmitTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>,
CloudTransmitTimeoutAccessor, CloudTransmitTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
struct CloudBufferLengthText : public virtual espgui::TextInterface struct CloudBufferLengthText : public virtual espgui::TextInterface
@ -45,16 +46,16 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDCOLLECTRATE>, espgui::StaticText<TEXT_CLOUDCOLLECTRATE>,
CloudCollectRateAccessor, CloudCollectRateAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using CloudSendRateChangeDisplay = espgui::makeComponent< using CloudSendRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDSENDRATE>, espgui::StaticText<TEXT_CLOUDSENDRATE>,
CloudSendRateAccessor, CloudSendRateAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} // namespace } // namespace
@ -63,14 +64,14 @@ using namespace espgui;
CloudSettingsMenu::CloudSettingsMenu() CloudSettingsMenu::CloudSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDENABLED>, BobbyCheckbox, CloudEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDENABLED>, BobbyCheckbox, CloudEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, SwitchScreenAction<CloudTransmitTimeoutChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, PushScreenAction<CloudTransmitTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, CloudCreatedText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CloudCreatedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CloudStartedText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CloudStartedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CloudConnectedText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CloudConnectedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CloudBufferLengthText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CloudBufferLengthText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDCOLLECTRATE>, SwitchScreenAction<CloudCollectRateChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDCOLLECTRATE>, PushScreenAction<CloudCollectRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDSENDRATE>, SwitchScreenAction<CloudSendRateChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDSENDRATE>, PushScreenAction<CloudSendRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string CloudSettingsMenu::text() const std::string CloudSettingsMenu::text() const
@ -80,5 +81,5 @@ std::string CloudSettingsMenu::text() const
void CloudSettingsMenu::back() void CloudSettingsMenu::back()
{ {
switchScreen<SettingsMenu>(); popScreen();
} }

View File

@ -4,8 +4,9 @@
#include <ratio> #include <ratio>
// 3rdparty lib includes // 3rdparty lib includes
#include "actions/popscreenaction.h"
#include "actions/pushscreenaction.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
@ -40,38 +41,38 @@ using WheelDiameterMmChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_WHEELDIAMETERMM>, espgui::StaticText<TEXT_WHEELDIAMETERMM>,
WheelDiameterMmAccessor, WheelDiameterMmAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using WheelDiameterInchChangeScreen = espgui::makeComponent< using WheelDiameterInchChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<float>, BobbyChangeValueDisplay<float>,
espgui::StaticText<TEXT_WHEELDIAMETERINCH>, espgui::StaticText<TEXT_WHEELDIAMETERINCH>,
WheelDiameterInchAccessor, WheelDiameterInchAccessor,
espgui::RatioNumberStep<float, std::ratio<1,10>>, espgui::RatioNumberStep<float, std::ratio<1,10>>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using NumMagnetPolesChangeScreen = espgui::makeComponent< using NumMagnetPolesChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NUMMAGNETPOLES>, espgui::StaticText<TEXT_NUMMAGNETPOLES>,
NumMagnetPolesAccessor, NumMagnetPolesAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
#ifdef FEATURE_CAN #ifdef FEATURE_CAN
using CanTransmitTimeoutChangeScreen = espgui::makeComponent< using CanTransmitTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>, espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>,
CanTransmitTimeoutAccessor, CanTransmitTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using CanReceiveTimeoutChangeScreen = espgui::makeComponent< using CanReceiveTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANRECEIVETIMEOUT>, espgui::StaticText<TEXT_CANRECEIVETIMEOUT>,
CanReceiveTimeoutAccessor, CanReceiveTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
#endif #endif
} // namespace } // namespace
@ -79,21 +80,21 @@ using CanReceiveTimeoutChangeScreen = espgui::makeComponent<
ControllerHardwareSettingsMenu::ControllerHardwareSettingsMenu() ControllerHardwareSettingsMenu::ControllerHardwareSettingsMenu()
{ {
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETENABLED>, SwitchScreenAction<EnableMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETENABLED>, PushScreenAction<EnableMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETINVERTED>, SwitchScreenAction<InvertMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETINVERTED>, PushScreenAction<InvertMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, SwitchScreenAction<WheelDiameterMmChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, PushScreenAction<WheelDiameterMmChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, SwitchScreenAction<WheelDiameterInchChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, PushScreenAction<WheelDiameterInchChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, SwitchScreenAction<NumMagnetPolesChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, PushScreenAction<NumMagnetPolesChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, BobbyCheckbox, SwapFrontBackAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, BobbyCheckbox, SwapFrontBackAccessor>>();
#ifdef FEATURE_CAN #ifdef FEATURE_CAN
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTSENDCAN>, BobbyCheckbox, SendFrontCanCmdAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTSENDCAN>, BobbyCheckbox, SendFrontCanCmdAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKSENDCAN>, BobbyCheckbox, SendBackCanCmdAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKSENDCAN>, BobbyCheckbox, SendBackCanCmdAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANTRANSMITTIMEOUT>, SwitchScreenAction<CanTransmitTimeoutChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANTRANSMITTIMEOUT>, PushScreenAction<CanTransmitTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRECEIVETIMEOUT>, SwitchScreenAction<CanReceiveTimeoutChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRECEIVETIMEOUT>, PushScreenAction<CanReceiveTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRESETONERROR>, BobbyCheckbox, CanResetOnErrorAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRESETONERROR>, BobbyCheckbox, CanResetOnErrorAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANREINSTALLDRIVER>, BobbyCheckbox, CanReinstallDriverAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANREINSTALLDRIVER>, BobbyCheckbox, CanReinstallDriverAccessor>>();
#endif #endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string ControllerHardwareSettingsMenu::text() const std::string ControllerHardwareSettingsMenu::text() const
@ -103,5 +104,5 @@ std::string ControllerHardwareSettingsMenu::text() const
void ControllerHardwareSettingsMenu::back() void ControllerHardwareSettingsMenu::back()
{ {
espgui::switchScreen<SettingsMenu>(); espgui::popScreen();
} }

View File

@ -1,13 +1,10 @@
#include "enablemenu.h" #include "enablemenu.h"
// 3rdparty lib includes
#include "actions/switchscreenaction.h"
#include "icons/back.h"
// local includes // local includes
#include "displays/menus/controllerhardwaresettingsmenu.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "actions/popscreenaction.h"
#include "bobbycheckbox.h" #include "bobbycheckbox.h"
#include "icons/back.h"
namespace { namespace {
constexpr char TEXT_SETENABLED[] = "Set enabled"; constexpr char TEXT_SETENABLED[] = "Set enabled";
@ -25,7 +22,7 @@ EnableMenu::EnableMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTRIGHT>, BobbyCheckbox, FrontRightEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTRIGHT>, BobbyCheckbox, FrontRightEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKLEFT>, BobbyCheckbox, BackLeftEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKLEFT>, BobbyCheckbox, BackLeftEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKRIGHT>, BobbyCheckbox, BackRightEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKRIGHT>, BobbyCheckbox, BackRightEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string EnableMenu::text() const std::string EnableMenu::text() const
@ -35,5 +32,5 @@ std::string EnableMenu::text() const
void EnableMenu::back() void EnableMenu::back()
{ {
espgui::switchScreen<ControllerHardwareSettingsMenu>(); espgui::popScreen();
} }

View File

@ -2,7 +2,7 @@
// 3rdparty lib includes // 3rdparty lib includes
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/pushscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include <accessorinterface.h> #include <accessorinterface.h>
#include <actioninterface.h> #include <actioninterface.h>
@ -61,8 +61,8 @@ EspNowMenu::EspNowMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SENDTSMSG>, SendBobbycarTimesyncMessageAction, StaticMenuItemIcon<&bobbyicons::time>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SENDTSMSG>, SendBobbycarTimesyncMessageAction, StaticMenuItemIcon<&bobbyicons::time>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_RECEIVETS>, BobbyCheckbox, ReceiveTimeStampAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_RECEIVETS>, BobbyCheckbox, ReceiveTimeStampAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_RECEIVETSFROMBOBBY>, BobbyCheckbox, ReceiveTsFromOtherBobbycarsAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_RECEIVETSFROMBOBBY>, BobbyCheckbox, ReceiveTsFromOtherBobbycarsAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SETTINGS>, SwitchScreenAction<EspNowSettingsMenu>, StaticMenuItemIcon<&bobbyicons::settings>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SETTINGS>, PushScreenAction<EspNowSettingsMenu>, StaticMenuItemIcon<&bobbyicons::settings>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PushScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string EspNowMenu::text() const std::string EspNowMenu::text() const
@ -72,5 +72,5 @@ std::string EspNowMenu::text() const
void EspNowMenu::back() void EspNowMenu::back()
{ {
espgui::switchScreen<SettingsMenu>(); espgui::popScreen();
} }

View File

@ -1,22 +1,13 @@
#include "espnowsettingsmenu.h" #include "espnowsettingsmenu.h"
// 3rdparty lib includes // 3rdparty lib includes
#include "actions/dummyaction.h" #include "actions/popscreenaction.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include <accessorinterface.h>
#include <actioninterface.h>
#include <espchrono.h>
#include <fmt/core.h>
#include <menudisplay.h>
#include <textinterface.h> #include <textinterface.h>
// local includes // local includes
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "icons/time.h"
#include "espnowmenu.h"
#include "bobbycheckbox.h" #include "bobbycheckbox.h"
#include "espnowfunctions.h"
namespace { namespace {
constexpr char TEXT_ESPNOW_SETTINGS[] = "ESP-Now settings"; constexpr char TEXT_ESPNOW_SETTINGS[] = "ESP-Now settings";
@ -29,10 +20,11 @@ constexpr char TEXT_BACK[] = "Back";
EspNowSettingsMenu::EspNowSettingsMenu() EspNowSettingsMenu::EspNowSettingsMenu()
{ {
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCTIME>, BobbyCheckbox, ESPNowSyncTimeEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCTIME>, BobbyCheckbox, ESPNowSyncTimeEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCWITHOTHERS>, BobbyCheckbox, ESPNowSyncTimeWithOthersEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCWITHOTHERS>, BobbyCheckbox, ESPNowSyncTimeWithOthersEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCBLINK>, BobbyCheckbox, ESPNowSyncBlinkEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCBLINK>, BobbyCheckbox, ESPNowSyncBlinkEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<EspNowMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string EspNowSettingsMenu::text() const std::string EspNowSettingsMenu::text() const
@ -42,5 +34,5 @@ std::string EspNowSettingsMenu::text() const
void EspNowSettingsMenu::back() void EspNowSettingsMenu::back()
{ {
espgui::switchScreen<EspNowMenu>(); espgui::popScreen();
} }

View File

@ -9,7 +9,7 @@
// local includes // local includes
#include "esp_log.h" #include "esp_log.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "bobbyerrorhandler.h" #include "bobbyerrorhandler.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "globals.h" #include "globals.h"
@ -92,7 +92,7 @@ ExtraButtonCalibrateMenu::ExtraButtonCalibrateMenu()
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA3, ButtonExtra3Accessor, Status::WaitingExtra3>>(); constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA3, ButtonExtra3Accessor, Status::WaitingExtra3>>();
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA4, ButtonExtra4Accessor, Status::WaitingExtra4>>(); constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA4, ButtonExtra4Accessor, Status::WaitingExtra4>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
void ExtraButtonCalibrateMenu::start() void ExtraButtonCalibrateMenu::start()
@ -249,7 +249,7 @@ std::string ExtraButtonCalibrateMenu::text() const
void ExtraButtonCalibrateMenu::back() void ExtraButtonCalibrateMenu::back()
{ {
switchScreen<BoardcomputerHardwareSettingsMenu>(); espgui::popScreen();
} }
bool ExtraButtonCalibrateMenu::validateNewButton(uint8_t button) bool ExtraButtonCalibrateMenu::validateNewButton(uint8_t button)

View File

@ -2,7 +2,8 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <TFT_eSPI.h> #include <TFT_eSPI.h>
#include <actions/switchscreenaction.h> #include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <fmt/core.h> #include <fmt/core.h>
#include <icons/back.h> #include <icons/back.h>
#include <strutils.h> #include <strutils.h>
@ -10,19 +11,38 @@
// local includes // local includes
#include "bobbycheckbox.h" #include "bobbycheckbox.h"
#include "displays/bobbypopupdisplay.h" #include "displays/bobbypopupdisplay.h"
#include "displays/menus/settingsmenu.h"
#include "newsettings.h" #include "newsettings.h"
#include "taskmanager.h" #include "taskmanager.h"
#include "bobbyerrorhandler.h"
using namespace espgui;
namespace { namespace {
constexpr const char * const TAG = "FEATUREFLAGSMENU"; constexpr const char * const TAG = "FEATUREFLAGSMENU";
constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags"; constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags";
constexpr char TEXT_BACK[] = "Back"; constexpr char TEXT_BACK[] = "Back";
constexpr char TEXT_POPUP[] = "Feature flags have been changed. Please restart the device to apply the changes.";
class FeatureFlagMenuItem : public MenuItem, public virtual BobbyErrorHandler { bool isDirty{false};
void exitFeatureFlagsMenu()
{
espgui::popScreen();
if (isDirty)
{
BobbyErrorHandler{}.errorOccured(TEXT_POPUP);
}
}
class ExitFeatureFlagsMenuAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
exitFeatureFlagsMenu();
}
};
class FeatureFlagMenuItem : public espgui::MenuItem, public virtual BobbyErrorHandler {
public: public:
explicit FeatureFlagMenuItem(ConfiguredFeatureFlag &flag, bool isInitialized) : m_flag{flag}, m_isInitialized{isInitialized} {} explicit FeatureFlagMenuItem(ConfiguredFeatureFlag &flag, bool isInitialized) : m_flag{flag}, m_isInitialized{isInitialized} {}
std::string text() const override std::string text() const override
@ -58,32 +78,24 @@ public:
{ {
if (auto result = m_flag.isEnabled.write(configs.nvs_handle_user, !m_flag.isEnabled.value()); !result) if (auto result = m_flag.isEnabled.write(configs.nvs_handle_user, !m_flag.isEnabled.value()); !result)
errorOccured(std::move(result).error()); errorOccured(std::move(result).error());
else
isDirty = true;
} }
const MenuItemIcon *icon() const override const espgui::MenuItemIcon *icon() const override
{ {
return m_flag.isEnabled.value() ? &icons::checked : &icons::unchecked; return m_flag.isEnabled.value() ? &espgui::icons::checked : &espgui::icons::unchecked;
} }
private: private:
ConfiguredFeatureFlag &m_flag; ConfiguredFeatureFlag &m_flag;
const bool m_isInitialized; const bool m_isInitialized;
}; };
// TODO: Replace SwitchScreenAction / switchScreen with this action. Needs: BobbyPopupDisplayWithCustomExitAction => pass SwitchScreenAction<SettingsMenu> into it
class ExitFeatureFlagsMenuAction : public virtual ActionInterface {
public:
void triggered() override {
auto newDisplay = std::make_unique<BobbyPopupDisplay>(std::move("Please reboot if you have changed something"), std::move(espgui::currentDisplay));
newDisplay->initOverlay();
espgui::currentDisplay = std::move(newDisplay);
}
};
} // namespace } // namespace
FeatureFlagsMenu::FeatureFlagsMenu() FeatureFlagsMenu::FeatureFlagsMenu()
{ {
using namespace espgui;
configs.callForEveryFeature([&](ConfiguredFeatureFlag &feature){ configs.callForEveryFeature([&](ConfiguredFeatureFlag &feature){
const std::string name = feature.getTaskName(); const std::string name = feature.getTaskName();
if (const auto err = checkInitializedByName(name); err) if (const auto err = checkInitializedByName(name); err)
@ -93,7 +105,13 @@ FeatureFlagsMenu::FeatureFlagsMenu()
else else
constructMenuItem<FeatureFlagMenuItem>(feature, true); constructMenuItem<FeatureFlagMenuItem>(feature, true);
}); });
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, ExitFeatureFlagsMenuAction>>();
}
void FeatureFlagsMenu::start()
{
Base::start();
isDirty = false;
} }
std::string FeatureFlagsMenu::text() const std::string FeatureFlagsMenu::text() const
@ -103,5 +121,6 @@ std::string FeatureFlagsMenu::text() const
void FeatureFlagsMenu::back() void FeatureFlagsMenu::back()
{ {
switchScreen<SettingsMenu>(); exitFeatureFlagsMenu();
} }

View File

@ -5,8 +5,10 @@
class FeatureFlagsMenu : public bobbygui::MenuDisplayWithTime class FeatureFlagsMenu : public bobbygui::MenuDisplayWithTime
{ {
using Base = bobbygui::MenuDisplayWithTime;
public: public:
FeatureFlagsMenu(); FeatureFlagsMenu();
void start() override;
std::string text() const override; std::string text() const override;

View File

@ -0,0 +1,70 @@
#include "gitmenu.h"
// 3rdparty lib includes
#include <actions/dummyaction.h>
#include <actions/popscreenaction.h>
#include <fmt/core.h>
#include <icons/back.h>
// local includes
#include "bobbyerrorhandler.h"
#include "displays/qrdisplay.h"
#include "icons/info.h"
#include "icons/modes.h"
namespace {
constexpr char TEXT_GIT[] = "Git";
constexpr char TEXT_GIT_BRANCH_TITLE[] = "Branch";
constexpr char TEXT_GIT_BRANCH[] = GIT_BRANCH;
constexpr char TEXT_GIT_COMMIT_TITLE[] = "Commit";
constexpr char TEXT_GIT_COMMIT[] = GIT_REV;
constexpr char TEXT_GIT_COMMIT_SHORT[] = GIT_SHORT_REV;
constexpr char TEXT_GIT_MESSAGE_TITLE[] = "Commit Message";
constexpr char TEXT_GIT_MESSAGE[] = GIT_MESSAGE;
constexpr char TEXT_GITHUB_URL[] = "Github URL";
constexpr char TEXT_BACK[] = "Back";
class OpenPopupAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
BobbyErrorHandler{}.errorOccured(TEXT_GIT_MESSAGE);
}
};
class GitQrAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
// ToDo: Fix qr library and remove spaces, also, why is "`" at the end of string in qr code but not when logging?
const std::string qr_text = fmt::format("https://github.com/bobbycar-graz/bobbycar-boardcomputer-firmware/commit/{} ", GIT_REV);
espgui::pushScreen<QrDisplay>(qr_text);
}
};
} // namespace
GitMenu::GitMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_BRANCH_TITLE>, StaticColor<TFT_GREY>, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_BRANCH>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT_TITLE>, StaticColor<TFT_GREY>, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT>, DummyAction, StaticFont<2>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT_SHORT>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_MESSAGE_TITLE>, OpenPopupAction, StaticMenuItemIcon<&bobbyicons::info>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GITHUB_URL>, GitQrAction, StaticMenuItemIcon<&bobbyicons::modes>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string GitMenu::text() const
{
return TEXT_GIT;
}
void GitMenu::back()
{
espgui::popScreen();
}

View File

@ -0,0 +1,14 @@
#pragma once
// local includes
#include "displays/menudisplaywithtime.h"
class GitMenu : public bobbygui::MenuDisplayWithTime
{
public:
GitMenu();
std::string text() const override;
void back() override;
};

View File

@ -1,22 +1,19 @@
#include "greenpassmenu.h" #include "greenpassmenu.h"
// 3rd party includes // 3rdparty lib includes
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <esp_err.h> #include <esp_err.h>
#include <esp_log.h> #include <esp_log.h>
// 3rdparty lib includes
#include <fmt/core.h> #include <fmt/core.h>
#include "actions/pushscreenaction.h" #include <icons/back.h>
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
// local includes // local includes
#include "actions/qraction.h" #include "actions/qraction.h"
#include "bobbycheckbox.h"
#include "displays/qrdisplay.h" #include "displays/qrdisplay.h"
#include "displays/qrimportdisplay.h" #include "displays/qrimportdisplay.h"
#include "qrimport.h" #include "qrimport.h"
#include "bobbycheckbox.h"
namespace { namespace {
constexpr char TEXT_GREENPASS[] = "Green Pass"; constexpr char TEXT_GREENPASS[] = "Green Pass";
@ -53,7 +50,7 @@ public:
} }
else else
{ {
espgui::pushScreen<QrDisplay<GreenPassMenu>>(m_qrmenu.message); espgui::pushScreen<QrDisplay>(m_qrmenu.message);
} }
} }
private: private:
@ -84,7 +81,7 @@ GreenPassMenu::GreenPassMenu()
} }
else else
{ {
constructMenuItem<makeComponentArgs<MenuItem, SwitchQrImportDisplayAction<GreenPassMenu>, StaticText<TEXT_ADDCERT>>>(std::move(nvs_key)); constructMenuItem<makeComponentArgs<MenuItem, PushQrImportDisplayAction<GreenPassMenu>, StaticText<TEXT_ADDCERT>>>(std::move(nvs_key));
} }
} }

View File

@ -1,19 +1,19 @@
#include "handbremssettingsmenu.h" #include "handbremssettingsmenu.h"
// 3rd party libs // 3rd party libs
#include <fmt/core.h> #include <actions/popscreenaction.h>
#include <actions/switchscreenaction.h> #include <actions/pushscreenaction.h>
#include <changevaluedisplay.h> #include <changevaluedisplay.h>
#include <fmt/core.h>
#include <icons/back.h> #include <icons/back.h>
#include <textwithvaluehelper.h> #include <textwithvaluehelper.h>
// local includes // local includes
#include "accessors/settingsaccessors.h"
#include "bobbycheckbox.h"
#include "changevaluedisplay_handbremsmode.h"
#include "displays/bobbychangevaluedisplay.h" #include "displays/bobbychangevaluedisplay.h"
#include "displays/menus/typesafeenumchangemenu.h" #include "displays/menus/typesafeenumchangemenu.h"
#include "accessors/settingsaccessors.h"
#include "changevaluedisplay_handbremsmode.h"
#include "displays/menus/defaultmodesettingsmenu.h"
#include "bobbycheckbox.h"
namespace { namespace {
constexpr char TEXT_HANDBREMSE_ENABLE[] = "Enable Handbremse"; constexpr char TEXT_HANDBREMSE_ENABLE[] = "Enable Handbremse";
@ -28,8 +28,8 @@ using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>, espgui::StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>,
HandbremsTimeoutAccessor, HandbremsTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} }
@ -40,8 +40,8 @@ HandbremsSettingsMenu::HandbremsSettingsMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_AUTOMATIC>, BobbyCheckbox, HandbremsAutomaticAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_AUTOMATIC>, BobbyCheckbox, HandbremsAutomaticAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_VISUALIZE>, BobbyCheckbox, HandbremsVisualizeAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_VISUALIZE>, BobbyCheckbox, HandbremsVisualizeAccessor>>();
constructMenuItem<PushScreenTypeSafeChangeMenuItem<HandbremseMode, TEXT_HANDBREMSE_MODE>>(&configs.handbremse.mode); constructMenuItem<PushScreenTypeSafeChangeMenuItem<HandbremseMode, TEXT_HANDBREMSE_MODE>>(&configs.handbremse.mode);
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_HANDBREMSE_TRIGGERTIMEOUT, HandbremsTimeoutAccessor>, SwitchScreenAction<HandBremsTriggerTimeoutChangeValueDisplay>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_HANDBREMSE_TRIGGERTIMEOUT, HandbremsTimeoutAccessor>, PushScreenAction<HandBremsTriggerTimeoutChangeValueDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DefaultModeSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string HandbremsSettingsMenu::text() const std::string HandbremsSettingsMenu::text() const
@ -51,5 +51,5 @@ std::string HandbremsSettingsMenu::text() const
void HandbremsSettingsMenu::back() void HandbremsSettingsMenu::back()
{ {
espgui::switchScreen<DefaultModeSettingsMenu>(); espgui::popScreen();
} }

View File

@ -1,13 +1,10 @@
#include "invertmenu.h" #include "invertmenu.h"
// 3rdparty lib includes
#include "actions/switchscreenaction.h"
#include "icons/back.h"
// local includes // local includes
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/menus/controllerhardwaresettingsmenu.h" #include "actions/popscreenaction.h"
#include "bobbycheckbox.h" #include "bobbycheckbox.h"
#include "icons/back.h"
namespace { namespace {
constexpr char TEXT_SETINVERTED[] = "Set inverted"; constexpr char TEXT_SETINVERTED[] = "Set inverted";
@ -25,7 +22,7 @@ InvertMenu::InvertMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, BobbyCheckbox, FrontRightInvertedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, BobbyCheckbox, FrontRightInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, BobbyCheckbox, BackLeftInvertedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, BobbyCheckbox, BackLeftInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKRIGHT>, BobbyCheckbox, BackRightInvertedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKRIGHT>, BobbyCheckbox, BackRightInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string InvertMenu::text() const std::string InvertMenu::text() const
@ -35,5 +32,5 @@ std::string InvertMenu::text() const
void InvertMenu::back() void InvertMenu::back()
{ {
espgui::switchScreen<ControllerHardwareSettingsMenu>(); espgui::popScreen();
} }

View File

@ -1,18 +1,18 @@
#include "lockscreensettingsmenu.h" #include "lockscreensettingsmenu.h"
// 3rdparty lib includes // 3rdparty lib includes
#include <menuitem.h> #include <actions/popscreenaction.h>
#include <actions/switchscreenaction.h> #include <actions/pushscreenaction.h>
#include <icons/back.h>
#include <changevaluedisplay.h> #include <changevaluedisplay.h>
#include <icons/back.h>
#include <menuitem.h>
#include <textwithvaluehelper.h> #include <textwithvaluehelper.h>
// local includes // local includes
#include "accessors/settingsaccessors.h"
#include "bobbycheckbox.h"
#include "displays/bobbychangevaluedisplay.h" #include "displays/bobbychangevaluedisplay.h"
#include "globals.h" #include "globals.h"
#include "accessors/settingsaccessors.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "bobbycheckbox.h"
namespace { namespace {
constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings"; constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings";
@ -28,32 +28,32 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT0>, espgui::StaticText<TEXT_PINDIGIT0>,
LockscreenPinDigitAccessor<0>, LockscreenPinDigitAccessor<0>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< using LockscreenPinDigit1ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT1>, espgui::StaticText<TEXT_PINDIGIT1>,
LockscreenPinDigitAccessor<1>, LockscreenPinDigitAccessor<1>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< using LockscreenPinDigit2ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT2>, espgui::StaticText<TEXT_PINDIGIT2>,
LockscreenPinDigitAccessor<2>, LockscreenPinDigitAccessor<2>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using LockscreenPinDigit3ChangeScreen = espgui::makeComponent< using LockscreenPinDigit3ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT3>, espgui::StaticText<TEXT_PINDIGIT3>,
LockscreenPinDigitAccessor<3>, LockscreenPinDigitAccessor<3>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} // namespace } // namespace
@ -62,11 +62,11 @@ LockscreenSettingsMenu::LockscreenSettingsMenu()
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ALLOWPRESETSWITCH>, BobbyCheckbox, LockscreenAllowPresetSwitchAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ALLOWPRESETSWITCH>, BobbyCheckbox, LockscreenAllowPresetSwitchAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_KEEPLOCKED>, BobbyCheckbox, LockscreenKeepLockedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_KEEPLOCKED>, BobbyCheckbox, LockscreenKeepLockedAccessor>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT0, LockscreenPinDigitAccessor<0>>, SwitchScreenAction<LockscreenPinDigit0ChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT0, LockscreenPinDigitAccessor<0>>, PushScreenAction<LockscreenPinDigit0ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT1, LockscreenPinDigitAccessor<1>>, SwitchScreenAction<LockscreenPinDigit1ChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT1, LockscreenPinDigitAccessor<1>>, PushScreenAction<LockscreenPinDigit1ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT2, LockscreenPinDigitAccessor<2>>, SwitchScreenAction<LockscreenPinDigit2ChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT2, LockscreenPinDigitAccessor<2>>, PushScreenAction<LockscreenPinDigit2ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT3, LockscreenPinDigitAccessor<3>>, SwitchScreenAction<LockscreenPinDigit3ChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT3, LockscreenPinDigitAccessor<3>>, PushScreenAction<LockscreenPinDigit3ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string LockscreenSettingsMenu::text() const std::string LockscreenSettingsMenu::text() const
@ -76,5 +76,5 @@ std::string LockscreenSettingsMenu::text() const
void LockscreenSettingsMenu::back() void LockscreenSettingsMenu::back()
{ {
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>(); espgui::popScreen();
} }

View File

@ -5,7 +5,8 @@
#include <TFT_eSPI.h> #include <TFT_eSPI.h>
// local includes // local includes
#include "actions/switchscreenaction.h" #include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "bobbyerrorhandler.h" #include "bobbyerrorhandler.h"
#include "globals.h" #include "globals.h"
#include "mainmenu.h" #include "mainmenu.h"
@ -220,7 +221,7 @@ ManageProfilesMenu::ManageProfilesMenu()
constructMenuItem<ManageProfileMenuItem>(*this, i); constructMenuItem<ManageProfileMenuItem>(*this, i);
} }
constructMenuItem<ManageProfileModeMenuItem>(*this); constructMenuItem<ManageProfileModeMenuItem>(*this);
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, espgui::PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
void ManageProfilesMenu::start() void ManageProfilesMenu::start()
@ -246,7 +247,7 @@ void ManageProfilesMenu::back()
{ {
if (!m_locked && m_firstIndex == -1) if (!m_locked && m_firstIndex == -1)
{ {
switchScreen<MainMenu>(); espgui::popScreen();
return; return;
} }

View File

@ -1,17 +1,16 @@
#include "mickmodesettingsmenu.h" #include "mickmodesettingsmenu.h"
// 3rdparty lib includes // 3rdparty lib includes
#include "changevaluedisplay.h" #include <actions/popscreenaction.h>
#include "menuitem.h" #include <actions/pushscreenaction.h>
#include "actions/switchscreenaction.h" #include <changevaluedisplay.h>
#include "icons/back.h" #include <icons/back.h>
#include <menuitem.h>
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h"
#include "changevaluedisplay_unifiedmodelmode.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/menus/modessettingsmenu.h" #include "changevaluedisplay_unifiedmodelmode.h"
#include "displays/bobbychangevaluedisplay.h"
namespace { namespace {
constexpr char TEXT_MICKMODESETTINGS[] = "Mick mode settings"; constexpr char TEXT_MICKMODESETTINGS[] = "Mick mode settings";
@ -23,25 +22,25 @@ using MickModeModelModeChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<UnifiedModelMode>, BobbyChangeValueDisplay<UnifiedModelMode>,
espgui::StaticText<TEXT_MODELMODE>, espgui::StaticText<TEXT_MODELMODE>,
MickModeModelModeAccessor, MickModeModelModeAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using MickModeSmoothingChangeDisplay = espgui::makeComponent< using MickModeSmoothingChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_MICKMODE_SMOOTHING>, espgui::StaticText<TEXT_MICKMODE_SMOOTHING>,
MickModeSmoothingAccessor, MickModeSmoothingAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} // namespace } // namespace
using namespace espgui;
MickModeSettingsMenu::MickModeSettingsMenu() MickModeSettingsMenu::MickModeSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<MickModeModelModeChangeDisplay>>>(); using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICKMODE_SMOOTHING>, SwitchScreenAction<MickModeSmoothingChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, PushScreenAction<MickModeModelModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICKMODE_SMOOTHING>, PushScreenAction<MickModeSmoothingChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string MickModeSettingsMenu::text() const std::string MickModeSettingsMenu::text() const
@ -51,5 +50,5 @@ std::string MickModeSettingsMenu::text() const
void MickModeSettingsMenu::back() void MickModeSettingsMenu::back()
{ {
switchScreen<ModesSettingsMenu>(); espgui::popScreen();
} }

View File

@ -1,16 +1,15 @@
#include "modessettingsmenu.h" #include "modessettingsmenu.h"
// 3rdparty lib includes // 3rdparty lib includes
#include "menuitem.h" #include <actions/pushscreenaction.h>
#include "actions/switchscreenaction.h" #include <icons/back.h>
#include "icons/back.h" #include <menuitem.h>
// local includes // local includes
#include "displays/menus/defaultmodesettingsmenu.h" #include "displays/menus/defaultmodesettingsmenu.h"
#include "displays/menus/tempomatmodesettingsmenu.h"
#include "displays/menus/larsmmodesettingsmenu.h"
#include "displays/menus/gametrakmodesettingsmenu.h" #include "displays/menus/gametrakmodesettingsmenu.h"
#include "displays/menus/settingsmenu.h" #include "displays/menus/larsmmodesettingsmenu.h"
#include "displays/menus/tempomatmodesettingsmenu.h"
namespace { namespace {
constexpr char TEXT_MODESSETTINGS[] = "Modes settings"; constexpr char TEXT_MODESSETTINGS[] = "Modes settings";
@ -24,13 +23,13 @@ constexpr char TEXT_BACK[] = "Back";
ModesSettingsMenu::ModesSettingsMenu() ModesSettingsMenu::ModesSettingsMenu()
{ {
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, SwitchScreenAction<DefaultModeSettingsMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, PushScreenAction<DefaultModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, SwitchScreenAction<TempomatModeSettingsMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, PushScreenAction<TempomatModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, SwitchScreenAction<LarsmModeSettingsMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, PushScreenAction<LarsmModeSettingsMenu>>>();
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>>();
#endif #endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string ModesSettingsMenu::text() const std::string ModesSettingsMenu::text() const
@ -40,5 +39,5 @@ std::string ModesSettingsMenu::text() const
void ModesSettingsMenu::back() void ModesSettingsMenu::back()
{ {
espgui::switchScreen<SettingsMenu>(); espgui::popScreen();
} }

View File

@ -2,10 +2,8 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <actions/pushscreenaction.h>
#include <actions/popscreenaction.h> #include <actions/popscreenaction.h>
#include <icons/back.h> #include <actions/pushscreenaction.h>
#include <screenmanager.h>
#include <fmt/format.h> #include <fmt/format.h>
#include <icons/back.h> #include <icons/back.h>
#include <menuitem.h> #include <menuitem.h>
@ -14,11 +12,8 @@
// local includes // local includes
#include "displays/qrdisplay.h" #include "displays/qrdisplay.h"
#include "globals.h" #include "globals.h"
#include "utils.h"
#include "settingsmenu.h"
#include "wifistasettingsmenu.h"
#include "wifiapsettingsmenu.h"
#include "texthelpers/networktexthelpers.h" #include "texthelpers/networktexthelpers.h"
#include "utils.h"
#include "wifiapsettingsmenu.h" #include "wifiapsettingsmenu.h"
#include "wifistasettingsmenu.h" #include "wifistasettingsmenu.h"
@ -58,5 +53,5 @@ void NetworkSettingsMenu::back()
void NetworkAccessPointQRAction::triggered() void NetworkAccessPointQRAction::triggered()
{ {
std::string qr = fmt::format("WIFI:T:{};S:{};P:{};H:;", get_wifi_security_string(configs.wifiApAuthmode.value()), configs.wifiApName.value(), configs.wifiApKey.value()); std::string qr = fmt::format("WIFI:T:{};S:{};P:{};H:;", get_wifi_security_string(configs.wifiApAuthmode.value()), configs.wifiApName.value(), configs.wifiApKey.value());
espgui::switchScreen<QrDisplay<NetworkSettingsMenu>>(qr); espgui::pushScreen<QrDisplay>(qr);
} }

View File

@ -61,19 +61,19 @@ using namespace espgui;
SelectModeMenu::SelectModeMenu() SelectModeMenu::SelectModeMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, PushScreenAction<MainMenu>>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, PopScreenAction>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_TEMPOMAT, AvgSpeedAccessor>, MultiAction<SetTempomatModeAction, PushScreenAction<MainMenu>>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_TEMPOMAT, AvgSpeedAccessor>, MultiAction<SetTempomatModeAction, PopScreenAction>>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, PushScreenAction<MainMenu>>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, PopScreenAction>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICK>, MultiAction<SetMickModeAction, PushScreenAction<MainMenu>>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICK>, MultiAction<SetMickModeAction, PopScreenAction>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_REMOTECONTROL>, MultiAction<SetRemoteControlModeAction, PushScreenAction<MainMenu>>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_REMOTECONTROL>, MultiAction<SetRemoteControlModeAction, PopScreenAction>>>(); }
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, PopScreenAction>>>(); if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, PopScreenAction>>>(); }
#endif #endif
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MOTORTEST>, MultiAction<SetMotorTestModeAction, PushScreenAction<MainMenu>>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MOTORTEST>, MultiAction<SetMotorTestModeAction, PopScreenAction>>>(); }
#ifdef FEATURE_JOYSTICK #ifdef FEATURE_JOYSTICK
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELCHAIR>, MultiAction<SetWheelchairModeAction, PushScreenAction<MainMenu>>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELCHAIR>, MultiAction<SetWheelchairModeAction, PopScreenAction>>>();
#endif #endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PushScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string SelectModeMenu::text() const std::string SelectModeMenu::text() const
@ -114,5 +114,5 @@ void SelectModeMenu::start()
void SelectModeMenu::back() void SelectModeMenu::back()
{ {
popScreen(); espgui::popScreen();
} }

View File

@ -1,24 +1,22 @@
#include "selectotabuildmenu.h" #include "selectotabuildmenu.h"
#include <espwifistack.h> // 3rdparty lib includes
#include <fmt/core.h>
#include <TFT_eSPI.h> #include <TFT_eSPI.h>
#include "esp_log.h" #include <espwifistack.h>
#include "fmt/core.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
// local includes // local includes
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "actions/pushscreenaction.h"
#include "bobbyerrorhandler.h" #include "bobbyerrorhandler.h"
#include "buildserver.h" #include "buildserver.h"
#include "displays/menus/otamenu.h"
#include "icons/back.h"
#include "buildserver.h" #include "buildserver.h"
#include "utils.h" #include "displays/menus/otamenu.h"
#include "globals.h" #include "globals.h"
#include "icons/back.h"
#include "newsettings.h" #include "newsettings.h"
#include "utils.h"
#define MESSAGE(text) constructMenuItem<makeComponent<MenuItem, StaticText<text>, DefaultFont, StaticColor<TFT_RED>, DummyAction>>() #define MESSAGE(text) constructMenuItem<makeComponent<MenuItem, StaticText<text>, DefaultFont, StaticColor<TFT_RED>, DummyAction>>()

View File

@ -22,6 +22,7 @@
#include "displays/menus/crashmenu.h" #include "displays/menus/crashmenu.h"
#include "displays/menus/espnowmenu.h" #include "displays/menus/espnowmenu.h"
#include "displays/menus/featureflagsmenu.h" #include "displays/menus/featureflagsmenu.h"
#include "displays/menus/gitmenu.h"
#include "displays/menus/limitssettingsmenu.h" #include "displays/menus/limitssettingsmenu.h"
#include "displays/menus/mainmenu.h" #include "displays/menus/mainmenu.h"
#include "displays/menus/modessettingsmenu.h" #include "displays/menus/modessettingsmenu.h"
@ -33,6 +34,7 @@
#include "icons/bluetooth.h" #include "icons/bluetooth.h"
#include "icons/buzzer.h" #include "icons/buzzer.h"
#include "icons/demos.h" #include "icons/demos.h"
#include "icons/git.h"
#include "icons/hardware.h" #include "icons/hardware.h"
#include "icons/info.h" #include "icons/info.h"
#include "icons/time.h" #include "icons/time.h"
@ -64,6 +66,7 @@ constexpr char TEXT_FRONTLED[] = "Front LED";
constexpr char TEXT_BACKLED[] = "Back LED"; constexpr char TEXT_BACKLED[] = "Back LED";
constexpr char TEXT_CRASHMENU[] = "Crash Menu"; constexpr char TEXT_CRASHMENU[] = "Crash Menu";
constexpr char TEXT_ABOUT[] = "About"; constexpr char TEXT_ABOUT[] = "About";
constexpr char TEXT_GIT[] = "Git";
constexpr char TEXT_BACK[] = "Back"; constexpr char TEXT_BACK[] = "Back";
#ifdef FEATURE_LEDBACKLIGHT #ifdef FEATURE_LEDBACKLIGHT
@ -126,6 +129,7 @@ SettingsMenu::SettingsMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLED>, BobbyCheckbox, BackLedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLED>, BobbyCheckbox, BackLedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CRASHMENU>, PushScreenAction<CrashMenu>, StaticMenuItemIcon<&bobbyicons::demos>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CRASHMENU>, PushScreenAction<CrashMenu>, StaticMenuItemIcon<&bobbyicons::demos>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ABOUT>, PushScreenAction<AboutMenu>, StaticMenuItemIcon<&bobbyicons::info>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ABOUT>, PushScreenAction<AboutMenu>, StaticMenuItemIcon<&bobbyicons::info>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT>, PushScreenAction<GitMenu>, StaticMenuItemIcon<&bobbyicons::git>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }

View File

@ -4,15 +4,13 @@
#include <textwithvaluehelper.h> #include <textwithvaluehelper.h>
// local includes // local includes
#include "actions/switchscreenaction.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/bobbychangevaluedisplay.h" #include "actions/popscreenaction.h"
#include "changevaluedisplay_bobbyquickactions.h" #include "actions/pushscreenaction.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "icons/back.h"
#include "bobbyquickactions.h" #include "bobbyquickactions.h"
#include "changevaluedisplay_bobbyquickactions.h"
using namespace espgui; #include "displays/bobbychangevaluedisplay.h"
#include "icons/back.h"
namespace { namespace {
constexpr char TEXT_SETUPQUICKACTIONS[] = "Setup QuickActions"; constexpr char TEXT_SETUPQUICKACTIONS[] = "Setup QuickActions";
@ -26,27 +24,29 @@ constexpr char TEXT_SETUPEXTRA3[] = "&sSetup Extra3";
constexpr char TEXT_SETUPEXTRA4[] = "&sSetup Extra4"; constexpr char TEXT_SETUPEXTRA4[] = "&sSetup Extra4";
constexpr char TEXT_BACK[] = "Back"; constexpr char TEXT_BACK[] = "Back";
template<typename Tvalue, const char* TEXT, typename Accessor, typename Screen> template<typename Tvalue, const char* TEXT, typename Accessor>
using QuickActionChangeValueDisplay = espgui::makeComponent< using QuickActionChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<Tvalue>, BobbyChangeValueDisplay<Tvalue>,
espgui::StaticText<TEXT>, espgui::StaticText<TEXT>,
Accessor, Accessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<Screen>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<Screen>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} // namespace } // namespace
SetupQuickActionsMenu::SetupQuickActionsMenu() SetupQuickActionsMenu::SetupQuickActionsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPLEFT2, QuickActionLeft2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPLEFT2, QuickActionLeft2Accessor, SetupQuickActionsMenu>>>>(); using namespace espgui;
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPRIGHT2, QuickActionRight2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPRIGHT2, QuickActionRight2Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPUP2, QuickActionUp2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPUP2, QuickActionUp2Accessor, SetupQuickActionsMenu>>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPLEFT2, QuickActionLeft2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPLEFT2, QuickActionLeft2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPDOWN2, QuickActionDown2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPDOWN2, QuickActionDown2Accessor, SetupQuickActionsMenu>>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPRIGHT2, QuickActionRight2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPRIGHT2, QuickActionRight2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA1, QuickActionExtra1Accessor, SetupQuickActionsMenu>>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPUP2, QuickActionUp2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPUP2, QuickActionUp2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA2, QuickActionExtra2Accessor, SetupQuickActionsMenu>>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPDOWN2, QuickActionDown2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPDOWN2, QuickActionDown2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA3, QuickActionExtra3Accessor, SetupQuickActionsMenu>>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA4, QuickActionExtra4Accessor, SetupQuickActionsMenu>>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string SetupQuickActionsMenu::text() const std::string SetupQuickActionsMenu::text() const
@ -56,5 +56,5 @@ std::string SetupQuickActionsMenu::text() const
void SetupQuickActionsMenu::back() void SetupQuickActionsMenu::back()
{ {
switchScreen<BoardcomputerHardwareSettingsMenu>(); espgui::popScreen();
} }

View File

@ -1,7 +1,8 @@
#include "timersmenu.h" #include "timersmenu.h"
// 3rdparty lib includes // 3rdparty lib includes
#include "actions/switchscreenaction.h" #include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "icons/back.h" #include "icons/back.h"
@ -19,16 +20,16 @@ using StatsUpdateRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_STATSUPDATERATE>, espgui::StaticText<TEXT_STATSUPDATERATE>,
StatsUpdateRateAccessor, StatsUpdateRateAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimersMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimersMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} // namespace } // namespace
TimersMenu::TimersMenu() TimersMenu::TimersMenu()
{ {
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, SwitchScreenAction<StatsUpdateRateChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, espgui::PushScreenAction<StatsUpdateRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, espgui::PushScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string TimersMenu::text() const std::string TimersMenu::text() const
@ -38,5 +39,5 @@ std::string TimersMenu::text() const
void TimersMenu::back() void TimersMenu::back()
{ {
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>(); espgui::popScreen();
} }

View File

@ -9,7 +9,8 @@
#include "changevaluedisplay_daylightsavingmode.h" #include "changevaluedisplay_daylightsavingmode.h"
#include "changevaluedisplay_sntp_sync_mode_t.h" #include "changevaluedisplay_sntp_sync_mode_t.h"
#include "changevaluedisplay_string.h" #include "changevaluedisplay_string.h"
#include "actions/switchscreenaction.h" #include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "espstrutils.h" #include "espstrutils.h"
@ -71,40 +72,40 @@ using TimezoneOffsetChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int32_t>, BobbyChangeValueDisplay<int32_t>,
espgui::StaticText<TEXT_OFFSET>, espgui::StaticText<TEXT_OFFSET>,
TimezoneOffsetAccessor, TimezoneOffsetAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using DaylightSavingModeChangeDisplay = espgui::makeComponent< using DaylightSavingModeChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<espchrono::DayLightSavingMode>, BobbyChangeValueDisplay<espchrono::DayLightSavingMode>,
espgui::StaticText<TEXT_DAYLIGHTSAVINGMODE>, espgui::StaticText<TEXT_DAYLIGHTSAVINGMODE>,
DaylightSavingModeAccessor, DaylightSavingModeAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using TimeServerChangeDisplay = espgui::makeComponent< using TimeServerChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<std::string>, BobbyChangeValueDisplay<std::string>,
espgui::StaticText<TEXT_NTPSERVER>, espgui::StaticText<TEXT_NTPSERVER>,
TimeServerAccessor, TimeServerAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using TimeSyncModeChangeDisplay = espgui::makeComponent< using TimeSyncModeChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<sntp_sync_mode_t>, BobbyChangeValueDisplay<sntp_sync_mode_t>,
espgui::StaticText<TEXT_NTPMODE>, espgui::StaticText<TEXT_NTPMODE>,
TimeSyncModeAccessor, TimeSyncModeAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
using TimeSyncIntervalChangeDisplay = espgui::makeComponent< using TimeSyncIntervalChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int32_t>, BobbyChangeValueDisplay<int32_t>,
espgui::StaticText<TEXT_NTPINTERVAL>, espgui::StaticText<TEXT_NTPINTERVAL>,
TimeSyncIntervalAccessor, TimeSyncIntervalAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
class NtpSyncStatusText : public virtual espgui::TextInterface class NtpSyncStatusText : public virtual espgui::TextInterface
@ -123,17 +124,17 @@ TimeSettingsMenu::TimeSettingsMenu()
constructMenuItem<makeComponent<MenuItem, CurrentUtcDateTimeText, StaticFont<2>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CurrentUtcDateTimeText, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CurrentLocalDateTimeText, StaticFont<2>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CurrentLocalDateTimeText, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, SuntimeText, StaticFont<2>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, SuntimeText, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_OFFSET>, SwitchScreenAction<TimezoneOffsetChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_OFFSET>, PushScreenAction<TimezoneOffsetChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DAYLIGHTSAVINGMODE>, SwitchScreenAction<DaylightSavingModeChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DAYLIGHTSAVINGMODE>, PushScreenAction<DaylightSavingModeChangeDisplay>>>();
if (configs.feature.ntp.isEnabled.value()) if (configs.feature.ntp.isEnabled.value())
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPENABLED>, BobbyCheckbox, TimeServerEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPENABLED>, BobbyCheckbox, TimeServerEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPSERVER>, SwitchScreenAction<TimeServerChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPSERVER>, PushScreenAction<TimeServerChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPMODE>, SwitchScreenAction<TimeSyncModeChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPMODE>, PushScreenAction<TimeSyncModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPINTERVAL>, SwitchScreenAction<TimeSyncIntervalChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPINTERVAL>, PushScreenAction<TimeSyncIntervalChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, NtpSyncStatusText, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, NtpSyncStatusText, DummyAction>>();
} }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string TimeSettingsMenu::text() const std::string TimeSettingsMenu::text() const
@ -143,5 +144,5 @@ std::string TimeSettingsMenu::text() const
void TimeSettingsMenu::back() void TimeSettingsMenu::back()
{ {
espgui::switchScreen<SettingsMenu>(); espgui::popScreen();
} }

View File

@ -5,7 +5,7 @@
#include <fmt/core.h> #include <fmt/core.h>
#include <icons/back.h> #include <icons/back.h>
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <actions/switchscreenaction.h> #include <actions/pushscreenaction.h>
#include <actions/popscreenaction.h> #include <actions/popscreenaction.h>
// local includes // local includes
@ -89,7 +89,7 @@ private:
}; };
} // namespace typesafeenumchangemenu } // namespace typesafeenumchangemenu
template<typename TEnum, typename TMenu, const char *Ttext> template<typename TEnum, const char *Ttext>
class SwitchScreenTypeSafeChangeMenuItem : public espgui::MenuItem class SwitchScreenTypeSafeChangeMenuItem : public espgui::MenuItem
{ {
public: public:
@ -103,7 +103,7 @@ public:
void triggered() override void triggered() override
{ {
espgui::switchScreen<typesafeenumchangemenu::TypeSafeChangeMenu<TEnum>>(m_config); espgui::pushScreen<typesafeenumchangemenu::TypeSafeChangeMenu<TEnum>>(m_config);
} }
private: private:
ConfigWrapper<TEnum>* m_config; ConfigWrapper<TEnum>* m_config;

View File

@ -1,18 +1,17 @@
#include "udpcloudsettingsmenu.h" #include "udpcloudsettingsmenu.h"
// 3rdparty lib includes // 3rdparty lib includes
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <changevaluedisplay.h>
#include <fmt/core.h> #include <fmt/core.h>
#include "menuitem.h" #include <icons/back.h>
#include "changevaluedisplay.h" #include <menuitem.h>
#include "actions/switchscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/menus/settingsmenu.h"
#include "bobbycheckbox.h" #include "bobbycheckbox.h"
#include "displays/bobbychangevaluedisplay.h"
namespace { namespace {
constexpr char TEXT_UDPCLOUDSETTINGS[] = "UDP Cloud settings"; constexpr char TEXT_UDPCLOUDSETTINGS[] = "UDP Cloud settings";
@ -25,8 +24,8 @@ using UdpCloudSendRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_UDPSENDRATE>, espgui::StaticText<TEXT_UDPSENDRATE>,
UdpCloudSendIntervalAccessor, UdpCloudSendIntervalAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
} // namespace } // namespace
@ -36,8 +35,8 @@ UdpCloudSettingsMenu::UdpCloudSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPCLOUDENABLED>, BobbyCheckbox, UdpCloudEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPCLOUDENABLED>, BobbyCheckbox, UdpCloudEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPUSESTRING>, BobbyCheckbox, UdpUseStdStringAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPUSESTRING>, BobbyCheckbox, UdpUseStdStringAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPSENDRATE>, SwitchScreenAction<UdpCloudSendRateChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPSENDRATE>, PushScreenAction<UdpCloudSendRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string UdpCloudSettingsMenu::text() const std::string UdpCloudSettingsMenu::text() const
@ -47,5 +46,5 @@ std::string UdpCloudSettingsMenu::text() const
void UdpCloudSettingsMenu::back() void UdpCloudSettingsMenu::back()
{ {
switchScreen<SettingsMenu>(); espgui::popScreen();
} }

View File

@ -2,15 +2,15 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <tftinstance.h> #include <tftinstance.h>
#include <screenmanager.h>
// local includes // local includes
#include "actions/switchscreenaction.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "displays/menus/mainmenu.h" #include "displays/menus/mainmenu.h"
#include "displays/statusdisplay.h" #include "displays/statusdisplay.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "globals.h"
#include "newsettings.h" #include "newsettings.h"
#include "utils.h" #include "utils.h"
#include "globals.h"
namespace { namespace {
constexpr char TEXT_CALIBRATE[] = "Potis Calibrate"; constexpr char TEXT_CALIBRATE[] = "Potis Calibrate";

View File

@ -3,11 +3,11 @@
// system includes // system includes
#include <array> #include <array>
#include <string> #include <string>
#include <optional>
// 3rdparty lib includes // 3rdparty lib includes
#include <fmt/core.h> #include <fmt/core.h>
#include <cpputils.h> #include <cpputils.h>
#include <actions/switchscreenaction.h>
#include <widgets/label.h> #include <widgets/label.h>
#include <widgets/progressbar.h> #include <widgets/progressbar.h>

View File

@ -1,16 +1,15 @@
#pragma once #pragma once
// 3rd party includes // 3rd party includes
#include <tftinstance.h>
#include <qrcode.h> #include <qrcode.h>
#include <screenmanager.h>
#include <tftinstance.h>
// local includes // local includes
#include "bobbydisplay.h" #include "bobbydisplay.h"
#include "screenmanager.h"
uint16_t get_qrver_from_strlen(std::string_view str); uint16_t get_qrver_from_strlen(std::string_view str);
template<typename TMenu>
class QrDisplay : public BobbyDisplay class QrDisplay : public BobbyDisplay
{ {
using Base = BobbyDisplay; using Base = BobbyDisplay;
@ -46,14 +45,13 @@ public:
void buttonPressed(espgui::Button button) override void buttonPressed(espgui::Button button) override
{ {
using namespace espgui;
Base::buttonPressed(button); Base::buttonPressed(button);
switch (button) switch (button)
{ {
case espgui::Button::Left: case espgui::Button::Left:
case espgui::Button::Right: case espgui::Button::Right:
switchScreen<TMenu>(); espgui::popScreen();
break; break;
default:; default:;
} }

30
main/icons/git.cpp Normal file
View File

@ -0,0 +1,30 @@
#include "git.h"
namespace bobbyicons {
const espgui::Icon<24, 24> git{{
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xEA66,0xE246,0xD225,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xEA66,0xE246,0xCA25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xCA25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xDA25,0xDA45,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE246,0xD225,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0xDA25,0xDA45,0xEA66,0xEA66,0xDA45,0xE245,0xEA86,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xDA45,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0xDA25,0xDA45,0xEA66,0xF286,0xEA86,0xEA66,0xDA45,0xE246,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xDA45,0xDA45,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0xD225,0xDA45,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xE266,0xC1E5,0xDA45,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xE245,0xD225,0x0000,0x0000,0x0000,
0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xD225,0x0000,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE246,0xCA25,0x0000,0x0000,
0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA66,0xDA45,0xD225,0xD225,0xE266,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xCA25,0x0000,
0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xE266,0xEA66,0xD225,0xE266,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE246,0xD225,
0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xEA66,0xEA66,0xD225,0xE246,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xE246,
0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xEA66,0xEA66,0x0000,0xD225,0xE266,0xF286,0xF286,0xF286,0xF286,0xEA66,
0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xEA86,0xEA66,0x2882,0xD225,0xE266,0xF286,0xF286,0xF286,0xF286,0xEA66,
0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xF286,0xEA66,0xE266,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xE266,
0xD225,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE266,
0x0000,0xCA25,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA66,0xDA45,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,
0x0000,0x0000,0xCA25,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xE266,0xEA66,0xEA86,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,
0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xCA05,0xCA05,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0xDA45,0xDA45,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xEA66,0xE266,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE266,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0xDA45,0xE245,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE266,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xCA25,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xCA05,0xE245,0xEA66,0xEA66,0xE266,0xE266,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
}, "git"};
} // namespace bobbyicons

7
main/icons/git.h Normal file
View File

@ -0,0 +1,7 @@
#pragma once
#include "icon.h"
namespace bobbyicons {
extern const espgui::Icon<24, 24> git;
} // namespace bobbyicons

View File

@ -14,6 +14,7 @@ constexpr const char * const TAG = "BOBBY";
using namespace std::chrono_literals; using namespace std::chrono_literals;
#include <espwifistack.h> #include <espwifistack.h>
#include <schedulertask.h> #include <schedulertask.h>
#include <screenmanager.h>
// local includes // local includes
#include "bobbycar-common.h" #include "bobbycar-common.h"