diff --git a/components/esp-gui-lib b/components/esp-gui-lib index 0f4b903..04d61ef 160000 --- a/components/esp-gui-lib +++ b/components/esp-gui-lib @@ -1 +1 @@ -Subproject commit 0f4b9033dcc5f1bd4f787decf713fe214b5b4d26 +Subproject commit 04d61efa6031bc4ec7156dbab29af6bb8c26a44e diff --git a/icons/git.png b/icons/git.png new file mode 100644 index 0000000..dc7d7ba Binary files /dev/null and b/icons/git.png differ diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index a6a6f90..3da088e 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -105,6 +105,7 @@ set(headers displays/menus/feedbackdebugmenu.h displays/menus/gametrakmodesettingsmenu.h displays/menus/garagemenu.h + displays/menus/gitmenu.h displays/menus/graphsmenu.h displays/menus/greenpassmenu.h displays/menus/handbremssettingsmenu.h @@ -179,6 +180,7 @@ set(headers icons/buzzer.h icons/close.h icons/demos.h + icons/git.h icons/graph.h icons/greenpass.h icons/hardware.h @@ -344,6 +346,7 @@ set(sources displays/menus/feedbackdebugmenu.cpp displays/menus/gametrakmodesettingsmenu.cpp displays/menus/garagemenu.cpp + displays/menus/gitmenu.cpp displays/menus/graphsmenu.cpp displays/menus/greenpassmenu.cpp displays/menus/handbremssettingsmenu.cpp @@ -418,6 +421,7 @@ set(sources icons/buzzer.cpp icons/close.cpp icons/demos.cpp + icons/git.cpp icons/graph.cpp icons/greenpass.cpp icons/hardware.cpp @@ -504,6 +508,24 @@ idf_component_register( ${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} PRIVATE -fstack-reuse=all @@ -513,5 +535,9 @@ target_compile_options(${COMPONENT_TARGET} -Wno-deprecated-declarations -Wno-missing-field-initializers -Wno-parentheses + -DGIT_REV="${GIT_REV}" + -DGIT_SHORT_REV="${GIT_SHORT_REV}" + -DGIT_MESSAGE="${GIT_MESSAGE}" + -DGIT_BRANCH="${GIT_BRANCH}" ${BOBBYCAR_BUILDFLAGS} ) diff --git a/main/actions/qraction.h b/main/actions/qraction.h index 0551fcf..1cb0702 100644 --- a/main/actions/qraction.h +++ b/main/actions/qraction.h @@ -18,27 +18,26 @@ struct QrMenu { }; } // namespace -template -class SwitchQrDisplayAction : public virtual espgui::ActionInterface +class PushQrDisplayAction : public virtual espgui::ActionInterface { public: - explicit SwitchQrDisplayAction(const qraction::QrMenu &qrmenu) : m_msg{qrmenu.message} {} - explicit SwitchQrDisplayAction(qraction::QrMenu &&qrmenu) : m_msg{std::move(qrmenu.message)} {} + explicit PushQrDisplayAction(const qraction::QrMenu &qrmenu) : m_msg{qrmenu.message} {} + explicit PushQrDisplayAction(qraction::QrMenu &&qrmenu) : m_msg{std::move(qrmenu.message)} {} void triggered() override { - espgui::pushScreen>(m_msg); + espgui::pushScreen(m_msg); } private: std::string m_msg; }; template -class SwitchQrImportDisplayAction : public virtual espgui::ActionInterface +class PushQrImportDisplayAction : public virtual espgui::ActionInterface { public: - explicit SwitchQrImportDisplayAction(const std::string &nvskey) : m_nvskey{nvskey} {} - explicit SwitchQrImportDisplayAction(std::string &&nvskey) : m_nvskey{std::move(nvskey)} {} + explicit PushQrImportDisplayAction(const std::string &nvskey) : m_nvskey{nvskey} {} + explicit PushQrImportDisplayAction(std::string &&nvskey) : m_nvskey{std::move(nvskey)} {} void triggered() override { diff --git a/main/displays/menus/aboutmenu.cpp b/main/displays/menus/aboutmenu.cpp index cb2bc57..04cf742 100644 --- a/main/displays/menus/aboutmenu.cpp +++ b/main/displays/menus/aboutmenu.cpp @@ -6,9 +6,7 @@ #include "actions/popscreenaction.h" #include "icons/back.h" #include "esptexthelpers.h" -#include "displays/menus/settingsmenu.h" -#include #include #include "fmt/core.h" diff --git a/main/displays/menus/cloudsettingsmenu.cpp b/main/displays/menus/cloudsettingsmenu.cpp index e937788..799464e 100644 --- a/main/displays/menus/cloudsettingsmenu.cpp +++ b/main/displays/menus/cloudsettingsmenu.cpp @@ -4,7 +4,8 @@ #include #include "menuitem.h" #include "changevaluedisplay.h" -#include "actions/switchscreenaction.h" +#include "actions/pushscreenaction.h" +#include "actions/popscreenaction.h" #include "actions/dummyaction.h" #include "icons/back.h" @@ -28,8 +29,8 @@ using CloudTransmitTimeoutChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CloudTransmitTimeoutAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; struct CloudBufferLengthText : public virtual espgui::TextInterface @@ -45,16 +46,16 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CloudCollectRateAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using CloudSendRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CloudSendRateAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } // namespace @@ -63,14 +64,14 @@ using namespace espgui; CloudSettingsMenu::CloudSettingsMenu() { constructMenuItem, BobbyCheckbox, CloudEnabledAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string CloudSettingsMenu::text() const @@ -80,5 +81,5 @@ std::string CloudSettingsMenu::text() const void CloudSettingsMenu::back() { - switchScreen(); + popScreen(); } diff --git a/main/displays/menus/controllerhardwaresettingsmenu.cpp b/main/displays/menus/controllerhardwaresettingsmenu.cpp index 52f53f8..e44b4d5 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.cpp +++ b/main/displays/menus/controllerhardwaresettingsmenu.cpp @@ -4,8 +4,9 @@ #include // 3rdparty lib includes +#include "actions/popscreenaction.h" +#include "actions/pushscreenaction.h" #include "changevaluedisplay.h" -#include "actions/switchscreenaction.h" #include "icons/back.h" // local includes @@ -40,38 +41,38 @@ using WheelDiameterMmChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, WheelDiameterMmAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using WheelDiameterInchChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, WheelDiameterInchAccessor, espgui::RatioNumberStep>, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using NumMagnetPolesChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, NumMagnetPolesAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; #ifdef FEATURE_CAN using CanTransmitTimeoutChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CanTransmitTimeoutAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using CanReceiveTimeoutChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, CanReceiveTimeoutAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; #endif } // namespace @@ -79,21 +80,21 @@ using CanReceiveTimeoutChangeScreen = espgui::makeComponent< ControllerHardwareSettingsMenu::ControllerHardwareSettingsMenu() { using namespace espgui; - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem, BobbyCheckbox, SwapFrontBackAccessor>>(); #ifdef FEATURE_CAN constructMenuItem, BobbyCheckbox, SendFrontCanCmdAccessor>>(); constructMenuItem, BobbyCheckbox, SendBackCanCmdAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem, BobbyCheckbox, CanResetOnErrorAccessor>>(); constructMenuItem, BobbyCheckbox, CanReinstallDriverAccessor>>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string ControllerHardwareSettingsMenu::text() const @@ -103,5 +104,5 @@ std::string ControllerHardwareSettingsMenu::text() const void ControllerHardwareSettingsMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/enablemenu.cpp b/main/displays/menus/enablemenu.cpp index 3df14eb..8275530 100644 --- a/main/displays/menus/enablemenu.cpp +++ b/main/displays/menus/enablemenu.cpp @@ -1,13 +1,10 @@ #include "enablemenu.h" -// 3rdparty lib includes -#include "actions/switchscreenaction.h" -#include "icons/back.h" - // local includes -#include "displays/menus/controllerhardwaresettingsmenu.h" #include "accessors/settingsaccessors.h" +#include "actions/popscreenaction.h" #include "bobbycheckbox.h" +#include "icons/back.h" namespace { constexpr char TEXT_SETENABLED[] = "Set enabled"; @@ -25,7 +22,7 @@ EnableMenu::EnableMenu() constructMenuItem, BobbyCheckbox, FrontRightEnabledAccessor>>(); constructMenuItem, BobbyCheckbox, BackLeftEnabledAccessor>>(); constructMenuItem, BobbyCheckbox, BackRightEnabledAccessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string EnableMenu::text() const @@ -35,5 +32,5 @@ std::string EnableMenu::text() const void EnableMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/espnowmenu.cpp b/main/displays/menus/espnowmenu.cpp index b886c08..5a26c07 100644 --- a/main/displays/menus/espnowmenu.cpp +++ b/main/displays/menus/espnowmenu.cpp @@ -2,7 +2,7 @@ // 3rdparty lib includes #include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/pushscreenaction.h" #include "icons/back.h" #include #include @@ -61,8 +61,8 @@ EspNowMenu::EspNowMenu() constructMenuItem, SendBobbycarTimesyncMessageAction, StaticMenuItemIcon<&bobbyicons::time>>>(); constructMenuItem, BobbyCheckbox, ReceiveTimeStampAccessor>>(); constructMenuItem, BobbyCheckbox, ReceiveTsFromOtherBobbycarsAccessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::settings>>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::settings>>>(); + constructMenuItem, PushScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string EspNowMenu::text() const @@ -72,5 +72,5 @@ std::string EspNowMenu::text() const void EspNowMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/espnowsettingsmenu.cpp b/main/displays/menus/espnowsettingsmenu.cpp index ea286f9..1ca4c92 100644 --- a/main/displays/menus/espnowsettingsmenu.cpp +++ b/main/displays/menus/espnowsettingsmenu.cpp @@ -1,22 +1,13 @@ #include "espnowsettingsmenu.h" // 3rdparty lib includes -#include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" #include "icons/back.h" -#include -#include -#include -#include -#include #include // local includes #include "accessors/settingsaccessors.h" -#include "icons/time.h" -#include "espnowmenu.h" #include "bobbycheckbox.h" -#include "espnowfunctions.h" namespace { constexpr char TEXT_ESPNOW_SETTINGS[] = "ESP-Now settings"; @@ -29,10 +20,11 @@ constexpr char TEXT_BACK[] = "Back"; EspNowSettingsMenu::EspNowSettingsMenu() { using namespace espgui; + constructMenuItem, BobbyCheckbox, ESPNowSyncTimeEnabledAccessor>>(); constructMenuItem, BobbyCheckbox, ESPNowSyncTimeWithOthersEnabledAccessor>>(); constructMenuItem, BobbyCheckbox, ESPNowSyncBlinkEnabledAccessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string EspNowSettingsMenu::text() const @@ -42,5 +34,5 @@ std::string EspNowSettingsMenu::text() const void EspNowSettingsMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/extrabuttoncalibratemenu.cpp b/main/displays/menus/extrabuttoncalibratemenu.cpp index 29daf94..2fa4e11 100644 --- a/main/displays/menus/extrabuttoncalibratemenu.cpp +++ b/main/displays/menus/extrabuttoncalibratemenu.cpp @@ -9,7 +9,7 @@ // local includes #include "esp_log.h" #include "accessors/settingsaccessors.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" #include "bobbyerrorhandler.h" #include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "globals.h" @@ -92,7 +92,7 @@ ExtraButtonCalibrateMenu::ExtraButtonCalibrateMenu() constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } void ExtraButtonCalibrateMenu::start() @@ -249,7 +249,7 @@ std::string ExtraButtonCalibrateMenu::text() const void ExtraButtonCalibrateMenu::back() { - switchScreen(); + espgui::popScreen(); } bool ExtraButtonCalibrateMenu::validateNewButton(uint8_t button) diff --git a/main/displays/menus/featureflagsmenu.cpp b/main/displays/menus/featureflagsmenu.cpp index 97dcc6a..989ea63 100644 --- a/main/displays/menus/featureflagsmenu.cpp +++ b/main/displays/menus/featureflagsmenu.cpp @@ -2,7 +2,8 @@ // 3rdparty lib includes #include -#include +#include +#include #include #include #include @@ -10,19 +11,38 @@ // local includes #include "bobbycheckbox.h" #include "displays/bobbypopupdisplay.h" -#include "displays/menus/settingsmenu.h" #include "newsettings.h" #include "taskmanager.h" - -using namespace espgui; +#include "bobbyerrorhandler.h" namespace { constexpr const char * const TAG = "FEATUREFLAGSMENU"; constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags"; 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: explicit FeatureFlagMenuItem(ConfiguredFeatureFlag &flag, bool isInitialized) : m_flag{flag}, m_isInitialized{isInitialized} {} 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) 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: ConfiguredFeatureFlag &m_flag; const bool m_isInitialized; }; - -// TODO: Replace SwitchScreenAction / switchScreen with this action. Needs: BobbyPopupDisplayWithCustomExitAction => pass SwitchScreenAction into it - -class ExitFeatureFlagsMenuAction : public virtual ActionInterface { -public: - void triggered() override { - auto newDisplay = std::make_unique(std::move("Please reboot if you have changed something"), std::move(espgui::currentDisplay)); - newDisplay->initOverlay(); - espgui::currentDisplay = std::move(newDisplay); - } -}; - } // namespace FeatureFlagsMenu::FeatureFlagsMenu() { + using namespace espgui; + configs.callForEveryFeature([&](ConfiguredFeatureFlag &feature){ const std::string name = feature.getTaskName(); if (const auto err = checkInitializedByName(name); err) @@ -93,7 +105,13 @@ FeatureFlagsMenu::FeatureFlagsMenu() else constructMenuItem(feature, true); }); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, ExitFeatureFlagsMenuAction>>(); +} + +void FeatureFlagsMenu::start() +{ + Base::start(); + isDirty = false; } std::string FeatureFlagsMenu::text() const @@ -103,5 +121,6 @@ std::string FeatureFlagsMenu::text() const void FeatureFlagsMenu::back() { - switchScreen(); + exitFeatureFlagsMenu(); } + diff --git a/main/displays/menus/featureflagsmenu.h b/main/displays/menus/featureflagsmenu.h index b2e72ba..89497d0 100644 --- a/main/displays/menus/featureflagsmenu.h +++ b/main/displays/menus/featureflagsmenu.h @@ -5,8 +5,10 @@ class FeatureFlagsMenu : public bobbygui::MenuDisplayWithTime { + using Base = bobbygui::MenuDisplayWithTime; public: FeatureFlagsMenu(); + void start() override; std::string text() const override; diff --git a/main/displays/menus/gitmenu.cpp b/main/displays/menus/gitmenu.cpp new file mode 100644 index 0000000..d4681a2 --- /dev/null +++ b/main/displays/menus/gitmenu.cpp @@ -0,0 +1,70 @@ +#include "gitmenu.h" + +// 3rdparty lib includes +#include +#include +#include +#include + +// 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(qr_text); + } + }; +} // namespace + +GitMenu::GitMenu() +{ + using namespace espgui; + + constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); + constructMenuItem, DummyAction, StaticFont<2>>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, OpenPopupAction, StaticMenuItemIcon<&bobbyicons::info>>>(); + constructMenuItem, GitQrAction, StaticMenuItemIcon<&bobbyicons::modes>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} + +std::string GitMenu::text() const +{ + return TEXT_GIT; +} + +void GitMenu::back() +{ + espgui::popScreen(); +} diff --git a/main/displays/menus/gitmenu.h b/main/displays/menus/gitmenu.h new file mode 100644 index 0000000..f733520 --- /dev/null +++ b/main/displays/menus/gitmenu.h @@ -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; +}; diff --git a/main/displays/menus/greenpassmenu.cpp b/main/displays/menus/greenpassmenu.cpp index db99cc3..68a13cd 100644 --- a/main/displays/menus/greenpassmenu.cpp +++ b/main/displays/menus/greenpassmenu.cpp @@ -1,22 +1,19 @@ #include "greenpassmenu.h" -// 3rd party includes +// 3rdparty lib includes +#include +#include #include #include - -// 3rdparty lib includes #include -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "actions/dummyaction.h" -#include "icons/back.h" +#include // local includes #include "actions/qraction.h" +#include "bobbycheckbox.h" #include "displays/qrdisplay.h" #include "displays/qrimportdisplay.h" #include "qrimport.h" -#include "bobbycheckbox.h" namespace { constexpr char TEXT_GREENPASS[] = "Green Pass"; @@ -53,7 +50,7 @@ public: } else { - espgui::pushScreen>(m_qrmenu.message); + espgui::pushScreen(m_qrmenu.message); } } private: @@ -84,7 +81,7 @@ GreenPassMenu::GreenPassMenu() } else { - constructMenuItem, StaticText>>(std::move(nvs_key)); + constructMenuItem, StaticText>>(std::move(nvs_key)); } } diff --git a/main/displays/menus/handbremssettingsmenu.cpp b/main/displays/menus/handbremssettingsmenu.cpp index b7bd1a5..6bb62e9 100644 --- a/main/displays/menus/handbremssettingsmenu.cpp +++ b/main/displays/menus/handbremssettingsmenu.cpp @@ -1,19 +1,19 @@ #include "handbremssettingsmenu.h" // 3rd party libs -#include -#include +#include +#include #include +#include #include #include // local includes +#include "accessors/settingsaccessors.h" +#include "bobbycheckbox.h" +#include "changevaluedisplay_handbremsmode.h" #include "displays/bobbychangevaluedisplay.h" #include "displays/menus/typesafeenumchangemenu.h" -#include "accessors/settingsaccessors.h" -#include "changevaluedisplay_handbremsmode.h" -#include "displays/menus/defaultmodesettingsmenu.h" -#include "bobbycheckbox.h" namespace { constexpr char TEXT_HANDBREMSE_ENABLE[] = "Enable Handbremse"; @@ -28,8 +28,8 @@ using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, HandbremsTimeoutAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } @@ -40,8 +40,8 @@ HandbremsSettingsMenu::HandbremsSettingsMenu() constructMenuItem, BobbyCheckbox, HandbremsAutomaticAccessor>>(); constructMenuItem, BobbyCheckbox, HandbremsVisualizeAccessor>>(); constructMenuItem>(&configs.handbremse.mode); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string HandbremsSettingsMenu::text() const @@ -51,5 +51,5 @@ std::string HandbremsSettingsMenu::text() const void HandbremsSettingsMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/invertmenu.cpp b/main/displays/menus/invertmenu.cpp index 6055768..4348757 100644 --- a/main/displays/menus/invertmenu.cpp +++ b/main/displays/menus/invertmenu.cpp @@ -1,13 +1,10 @@ #include "invertmenu.h" -// 3rdparty lib includes -#include "actions/switchscreenaction.h" -#include "icons/back.h" - // local includes #include "accessors/settingsaccessors.h" -#include "displays/menus/controllerhardwaresettingsmenu.h" +#include "actions/popscreenaction.h" #include "bobbycheckbox.h" +#include "icons/back.h" namespace { constexpr char TEXT_SETINVERTED[] = "Set inverted"; @@ -25,7 +22,7 @@ InvertMenu::InvertMenu() constructMenuItem, BobbyCheckbox, FrontRightInvertedAccessor>>(); constructMenuItem, BobbyCheckbox, BackLeftInvertedAccessor>>(); constructMenuItem, BobbyCheckbox, BackRightInvertedAccessor>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string InvertMenu::text() const @@ -35,5 +32,5 @@ std::string InvertMenu::text() const void InvertMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/lockscreensettingsmenu.cpp b/main/displays/menus/lockscreensettingsmenu.cpp index ecf97c8..0c3ef9d 100644 --- a/main/displays/menus/lockscreensettingsmenu.cpp +++ b/main/displays/menus/lockscreensettingsmenu.cpp @@ -1,18 +1,18 @@ #include "lockscreensettingsmenu.h" // 3rdparty lib includes -#include -#include -#include +#include +#include #include +#include +#include #include // local includes +#include "accessors/settingsaccessors.h" +#include "bobbycheckbox.h" #include "displays/bobbychangevaluedisplay.h" #include "globals.h" -#include "accessors/settingsaccessors.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" -#include "bobbycheckbox.h" namespace { constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings"; @@ -28,32 +28,32 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<0>, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<1>, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<2>, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using LockscreenPinDigit3ChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<3>, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } // namespace @@ -62,11 +62,11 @@ LockscreenSettingsMenu::LockscreenSettingsMenu() using namespace espgui; constructMenuItem, BobbyCheckbox, LockscreenAllowPresetSwitchAccessor>>(); constructMenuItem, BobbyCheckbox, LockscreenKeepLockedAccessor>>(); - constructMenuItem>, SwitchScreenAction>>(); - constructMenuItem>, SwitchScreenAction>>(); - constructMenuItem>, SwitchScreenAction>>(); - constructMenuItem>, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem>, PushScreenAction>>(); + constructMenuItem>, PushScreenAction>>(); + constructMenuItem>, PushScreenAction>>(); + constructMenuItem>, PushScreenAction>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string LockscreenSettingsMenu::text() const @@ -76,5 +76,5 @@ std::string LockscreenSettingsMenu::text() const void LockscreenSettingsMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/manageprofilesmenu.cpp b/main/displays/menus/manageprofilesmenu.cpp index 7fa56ef..5bf2e8b 100644 --- a/main/displays/menus/manageprofilesmenu.cpp +++ b/main/displays/menus/manageprofilesmenu.cpp @@ -5,7 +5,8 @@ #include // local includes -#include "actions/switchscreenaction.h" +#include "actions/pushscreenaction.h" +#include "actions/popscreenaction.h" #include "bobbyerrorhandler.h" #include "globals.h" #include "mainmenu.h" @@ -220,7 +221,7 @@ ManageProfilesMenu::ManageProfilesMenu() constructMenuItem(*this, i); } constructMenuItem(*this); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, espgui::PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } void ManageProfilesMenu::start() @@ -246,7 +247,7 @@ void ManageProfilesMenu::back() { if (!m_locked && m_firstIndex == -1) { - switchScreen(); + espgui::popScreen(); return; } diff --git a/main/displays/menus/mickmodesettingsmenu.cpp b/main/displays/menus/mickmodesettingsmenu.cpp index cf24ca2..92f363b 100644 --- a/main/displays/menus/mickmodesettingsmenu.cpp +++ b/main/displays/menus/mickmodesettingsmenu.cpp @@ -1,17 +1,16 @@ #include "mickmodesettingsmenu.h" // 3rdparty lib includes -#include "changevaluedisplay.h" -#include "menuitem.h" -#include "actions/switchscreenaction.h" -#include "icons/back.h" +#include +#include +#include +#include +#include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" -#include "changevaluedisplay_unifiedmodelmode.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/modessettingsmenu.h" +#include "changevaluedisplay_unifiedmodelmode.h" +#include "displays/bobbychangevaluedisplay.h" namespace { constexpr char TEXT_MICKMODESETTINGS[] = "Mick mode settings"; @@ -23,25 +22,25 @@ using MickModeModelModeChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, MickModeModelModeAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using MickModeSmoothingChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, MickModeSmoothingAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } // namespace -using namespace espgui; - MickModeSettingsMenu::MickModeSettingsMenu() { - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + using namespace espgui; + + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string MickModeSettingsMenu::text() const @@ -51,5 +50,5 @@ std::string MickModeSettingsMenu::text() const void MickModeSettingsMenu::back() { - switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/modessettingsmenu.cpp b/main/displays/menus/modessettingsmenu.cpp index 239ef21..1194643 100644 --- a/main/displays/menus/modessettingsmenu.cpp +++ b/main/displays/menus/modessettingsmenu.cpp @@ -1,16 +1,15 @@ #include "modessettingsmenu.h" // 3rdparty lib includes -#include "menuitem.h" -#include "actions/switchscreenaction.h" -#include "icons/back.h" +#include +#include +#include // local includes #include "displays/menus/defaultmodesettingsmenu.h" -#include "displays/menus/tempomatmodesettingsmenu.h" -#include "displays/menus/larsmmodesettingsmenu.h" #include "displays/menus/gametrakmodesettingsmenu.h" -#include "displays/menus/settingsmenu.h" +#include "displays/menus/larsmmodesettingsmenu.h" +#include "displays/menus/tempomatmodesettingsmenu.h" namespace { constexpr char TEXT_MODESSETTINGS[] = "Modes settings"; @@ -24,13 +23,13 @@ constexpr char TEXT_BACK[] = "Back"; ModesSettingsMenu::ModesSettingsMenu() { using namespace espgui; - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); #ifdef FEATURE_GAMETRAK constructMenuItem, SwitchScreenAction>>(); #endif - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string ModesSettingsMenu::text() const @@ -40,5 +39,5 @@ std::string ModesSettingsMenu::text() const void ModesSettingsMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/networksettingsmenu.cpp b/main/displays/menus/networksettingsmenu.cpp index 0c610d1..84124b2 100644 --- a/main/displays/menus/networksettingsmenu.cpp +++ b/main/displays/menus/networksettingsmenu.cpp @@ -2,10 +2,8 @@ // 3rdparty lib includes #include -#include #include -#include -#include +#include #include #include #include @@ -14,11 +12,8 @@ // local includes #include "displays/qrdisplay.h" #include "globals.h" -#include "utils.h" -#include "settingsmenu.h" -#include "wifistasettingsmenu.h" -#include "wifiapsettingsmenu.h" #include "texthelpers/networktexthelpers.h" +#include "utils.h" #include "wifiapsettingsmenu.h" #include "wifistasettingsmenu.h" @@ -58,5 +53,5 @@ void NetworkSettingsMenu::back() 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()); - espgui::switchScreen>(qr); + espgui::pushScreen(qr); } diff --git a/main/displays/menus/selectmodemenu.cpp b/main/displays/menus/selectmodemenu.cpp index 66c86a6..8c90ca4 100644 --- a/main/displays/menus/selectmodemenu.cpp +++ b/main/displays/menus/selectmodemenu.cpp @@ -61,19 +61,19 @@ using namespace espgui; SelectModeMenu::SelectModeMenu() { - constructMenuItem, MultiAction>>>(); - if (!simplified) { constructMenuItem, MultiAction>>>(); } - constructMenuItem, MultiAction>>>(); - constructMenuItem, MultiAction>>>(); - if (!simplified) { constructMenuItem, MultiAction>>>(); } + constructMenuItem, MultiAction>>(); + if (!simplified) { constructMenuItem, MultiAction>>(); } + constructMenuItem, MultiAction>>(); + constructMenuItem, MultiAction>>(); + if (!simplified) { constructMenuItem, MultiAction>>(); } #ifdef FEATURE_GAMETRAK - constructMenuItem, MultiAction>>(); + if (!simplified) { constructMenuItem, MultiAction>>(); } #endif - if (!simplified) { constructMenuItem, MultiAction>>>(); } + if (!simplified) { constructMenuItem, MultiAction>>(); } #ifdef FEATURE_JOYSTICK - constructMenuItem, MultiAction>>>(); + constructMenuItem, MultiAction>>(); #endif - constructMenuItem, PushScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string SelectModeMenu::text() const @@ -114,5 +114,5 @@ void SelectModeMenu::start() void SelectModeMenu::back() { - popScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/selectotabuildmenu.cpp b/main/displays/menus/selectotabuildmenu.cpp index f4459e4..8827a70 100644 --- a/main/displays/menus/selectotabuildmenu.cpp +++ b/main/displays/menus/selectotabuildmenu.cpp @@ -1,24 +1,22 @@ #include "selectotabuildmenu.h" -#include +// 3rdparty lib includes +#include #include -#include "esp_log.h" -#include "fmt/core.h" -#include "actions/popscreenaction.h" -#include "actions/dummyaction.h" -#include "icons/back.h" +#include // local includes #include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" +#include "actions/pushscreenaction.h" #include "bobbyerrorhandler.h" #include "buildserver.h" -#include "displays/menus/otamenu.h" -#include "icons/back.h" #include "buildserver.h" -#include "utils.h" +#include "displays/menus/otamenu.h" #include "globals.h" +#include "icons/back.h" #include "newsettings.h" +#include "utils.h" #define MESSAGE(text) constructMenuItem, DefaultFont, StaticColor, DummyAction>>() diff --git a/main/displays/menus/settingsmenu.cpp b/main/displays/menus/settingsmenu.cpp index d559fc4..a1c2e37 100644 --- a/main/displays/menus/settingsmenu.cpp +++ b/main/displays/menus/settingsmenu.cpp @@ -22,6 +22,7 @@ #include "displays/menus/crashmenu.h" #include "displays/menus/espnowmenu.h" #include "displays/menus/featureflagsmenu.h" +#include "displays/menus/gitmenu.h" #include "displays/menus/limitssettingsmenu.h" #include "displays/menus/mainmenu.h" #include "displays/menus/modessettingsmenu.h" @@ -33,6 +34,7 @@ #include "icons/bluetooth.h" #include "icons/buzzer.h" #include "icons/demos.h" +#include "icons/git.h" #include "icons/hardware.h" #include "icons/info.h" #include "icons/time.h" @@ -64,6 +66,7 @@ constexpr char TEXT_FRONTLED[] = "Front LED"; constexpr char TEXT_BACKLED[] = "Back LED"; constexpr char TEXT_CRASHMENU[] = "Crash Menu"; constexpr char TEXT_ABOUT[] = "About"; +constexpr char TEXT_GIT[] = "Git"; constexpr char TEXT_BACK[] = "Back"; #ifdef FEATURE_LEDBACKLIGHT @@ -126,6 +129,7 @@ SettingsMenu::SettingsMenu() constructMenuItem, BobbyCheckbox, BackLedAccessor>>(); constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::demos>>>(); constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::info>>>(); + constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::git>>>(); constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } diff --git a/main/displays/menus/setupquickactionsmenu.cpp b/main/displays/menus/setupquickactionsmenu.cpp index 097cc5a..ebf0e2f 100644 --- a/main/displays/menus/setupquickactionsmenu.cpp +++ b/main/displays/menus/setupquickactionsmenu.cpp @@ -4,15 +4,13 @@ #include // local includes -#include "actions/switchscreenaction.h" #include "accessors/settingsaccessors.h" -#include "displays/bobbychangevaluedisplay.h" -#include "changevaluedisplay_bobbyquickactions.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" -#include "icons/back.h" +#include "actions/popscreenaction.h" +#include "actions/pushscreenaction.h" #include "bobbyquickactions.h" - -using namespace espgui; +#include "changevaluedisplay_bobbyquickactions.h" +#include "displays/bobbychangevaluedisplay.h" +#include "icons/back.h" namespace { 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_BACK[] = "Back"; -template +template using QuickActionChangeValueDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, Accessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } // namespace SetupQuickActionsMenu::SetupQuickActionsMenu() { - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction>>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + using namespace espgui; + + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PushScreenAction>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string SetupQuickActionsMenu::text() const @@ -56,5 +56,5 @@ std::string SetupQuickActionsMenu::text() const void SetupQuickActionsMenu::back() { - switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/timersmenu.cpp b/main/displays/menus/timersmenu.cpp index 86c7c9d..fa67fa0 100644 --- a/main/displays/menus/timersmenu.cpp +++ b/main/displays/menus/timersmenu.cpp @@ -1,7 +1,8 @@ #include "timersmenu.h" // 3rdparty lib includes -#include "actions/switchscreenaction.h" +#include "actions/pushscreenaction.h" +#include "actions/popscreenaction.h" #include "changevaluedisplay.h" #include "icons/back.h" @@ -19,16 +20,16 @@ using StatsUpdateRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, StatsUpdateRateAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } // namespace TimersMenu::TimersMenu() { using namespace espgui; - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, espgui::PushScreenAction>>(); + constructMenuItem, espgui::PushScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string TimersMenu::text() const @@ -38,5 +39,5 @@ std::string TimersMenu::text() const void TimersMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/timesettingsmenu.cpp b/main/displays/menus/timesettingsmenu.cpp index 7ce73f9..521b865 100644 --- a/main/displays/menus/timesettingsmenu.cpp +++ b/main/displays/menus/timesettingsmenu.cpp @@ -9,7 +9,8 @@ #include "changevaluedisplay_daylightsavingmode.h" #include "changevaluedisplay_sntp_sync_mode_t.h" #include "changevaluedisplay_string.h" -#include "actions/switchscreenaction.h" +#include "actions/pushscreenaction.h" +#include "actions/popscreenaction.h" #include "actions/dummyaction.h" #include "icons/back.h" #include "espstrutils.h" @@ -71,40 +72,40 @@ using TimezoneOffsetChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TimezoneOffsetAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using DaylightSavingModeChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DaylightSavingModeAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using TimeServerChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TimeServerAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using TimeSyncModeChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TimeSyncModeAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; using TimeSyncIntervalChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, TimeSyncIntervalAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; class NtpSyncStatusText : public virtual espgui::TextInterface @@ -123,17 +124,17 @@ TimeSettingsMenu::TimeSettingsMenu() constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); if (configs.feature.ntp.isEnabled.value()) { constructMenuItem, BobbyCheckbox, TimeServerEnabledAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem>(); } - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string TimeSettingsMenu::text() const @@ -143,5 +144,5 @@ std::string TimeSettingsMenu::text() const void TimeSettingsMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/typesafeenumchangemenu.h b/main/displays/menus/typesafeenumchangemenu.h index 193d43b..9b70b83 100644 --- a/main/displays/menus/typesafeenumchangemenu.h +++ b/main/displays/menus/typesafeenumchangemenu.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include // local includes @@ -89,7 +89,7 @@ private: }; } // namespace typesafeenumchangemenu -template +template class SwitchScreenTypeSafeChangeMenuItem : public espgui::MenuItem { public: @@ -103,7 +103,7 @@ public: void triggered() override { - espgui::switchScreen>(m_config); + espgui::pushScreen>(m_config); } private: ConfigWrapper* m_config; diff --git a/main/displays/menus/udpcloudsettingsmenu.cpp b/main/displays/menus/udpcloudsettingsmenu.cpp index ed5f801..2e4b346 100644 --- a/main/displays/menus/udpcloudsettingsmenu.cpp +++ b/main/displays/menus/udpcloudsettingsmenu.cpp @@ -1,18 +1,17 @@ #include "udpcloudsettingsmenu.h" // 3rdparty lib includes +#include +#include +#include #include -#include "menuitem.h" -#include "changevaluedisplay.h" -#include "actions/switchscreenaction.h" -#include "actions/dummyaction.h" -#include "icons/back.h" +#include +#include // local includes -#include "displays/bobbychangevaluedisplay.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/settingsmenu.h" #include "bobbycheckbox.h" +#include "displays/bobbychangevaluedisplay.h" namespace { constexpr char TEXT_UDPCLOUDSETTINGS[] = "UDP Cloud settings"; @@ -25,8 +24,8 @@ using UdpCloudSendRateChangeDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, UdpCloudSendIntervalAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; } // namespace @@ -36,8 +35,8 @@ UdpCloudSettingsMenu::UdpCloudSettingsMenu() { constructMenuItem, BobbyCheckbox, UdpCloudEnabledAccessor>>(); constructMenuItem, BobbyCheckbox, UdpUseStdStringAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string UdpCloudSettingsMenu::text() const @@ -47,5 +46,5 @@ std::string UdpCloudSettingsMenu::text() const void UdpCloudSettingsMenu::back() { - switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/potiscalibratedisplay.cpp b/main/displays/potiscalibratedisplay.cpp index 679f91d..e5a4fd7 100644 --- a/main/displays/potiscalibratedisplay.cpp +++ b/main/displays/potiscalibratedisplay.cpp @@ -2,15 +2,15 @@ // 3rdparty lib includes #include -#include // local includes +#include "actions/switchscreenaction.h" +#include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "displays/menus/mainmenu.h" #include "displays/statusdisplay.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" +#include "globals.h" #include "newsettings.h" #include "utils.h" -#include "globals.h" namespace { constexpr char TEXT_CALIBRATE[] = "Potis Calibrate"; diff --git a/main/displays/potiscalibratedisplay.h b/main/displays/potiscalibratedisplay.h index b05aa79..5b4044f 100644 --- a/main/displays/potiscalibratedisplay.h +++ b/main/displays/potiscalibratedisplay.h @@ -3,11 +3,11 @@ // system includes #include #include +#include // 3rdparty lib includes #include #include -#include #include #include diff --git a/main/displays/qrdisplay.h b/main/displays/qrdisplay.h index 2d2969e..b93dcf5 100644 --- a/main/displays/qrdisplay.h +++ b/main/displays/qrdisplay.h @@ -1,16 +1,15 @@ #pragma once // 3rd party includes -#include #include +#include +#include // local includes #include "bobbydisplay.h" -#include "screenmanager.h" uint16_t get_qrver_from_strlen(std::string_view str); -template class QrDisplay : public BobbyDisplay { using Base = BobbyDisplay; @@ -46,14 +45,13 @@ public: void buttonPressed(espgui::Button button) override { - using namespace espgui; Base::buttonPressed(button); switch (button) { case espgui::Button::Left: case espgui::Button::Right: - switchScreen(); + espgui::popScreen(); break; default:; } diff --git a/main/icons/git.cpp b/main/icons/git.cpp new file mode 100644 index 0000000..fdae1f9 --- /dev/null +++ b/main/icons/git.cpp @@ -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 diff --git a/main/icons/git.h b/main/icons/git.h new file mode 100644 index 0000000..7e6783a --- /dev/null +++ b/main/icons/git.h @@ -0,0 +1,7 @@ +#pragma once + +#include "icon.h" + +namespace bobbyicons { +extern const espgui::Icon<24, 24> git; +} // namespace bobbyicons diff --git a/main/main.cpp b/main/main.cpp index 3fb99ff..42bc4c1 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -14,6 +14,7 @@ constexpr const char * const TAG = "BOBBY"; using namespace std::chrono_literals; #include #include +#include // local includes #include "bobbycar-common.h"