From c0f911ce0550118cf46463f09ffba9cee5367c20 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 5 Mar 2022 22:26:57 +0100 Subject: [PATCH] More push pop screens --- main/displays/confiscationdisplay.cpp | 8 +--- main/displays/gameoflifedisplay.cpp | 6 +-- main/displays/gameoflifedisplay.h | 2 +- main/displays/menus/batterydebugmenu.cpp | 7 ++-- main/displays/menus/candebugmenu.cpp | 7 ++-- main/displays/menus/commanddebugmenu.h | 7 ++-- main/displays/menus/debugmenu.cpp | 44 ++++++++++---------- main/displays/menus/demosmenu.cpp | 16 +++---- main/displays/menus/dynamicdebugmenu.cpp | 15 +++++-- main/displays/menus/dynamicdebugmenu.h | 7 ++-- main/displays/menus/feedbackdebugmenu.h | 7 ++-- main/displays/menus/motorfeedbackdebugmenu.h | 7 ++-- main/displays/menus/motorstatedebugmenu.h | 7 ++-- main/displays/menus/profilesmenu.cpp | 7 ++-- main/displays/menus/taskmanagermenu.cpp | 7 ++-- main/displays/pingpongdisplay.cpp | 6 +-- main/displays/poweroffdisplay.cpp | 3 +- main/displays/qrcodedebug.cpp | 7 ++-- main/displays/spirodisplay.cpp | 6 +-- main/displays/starfielddisplay.cpp | 3 +- 20 files changed, 79 insertions(+), 100 deletions(-) diff --git a/main/displays/confiscationdisplay.cpp b/main/displays/confiscationdisplay.cpp index 655a1aa..461ee54 100644 --- a/main/displays/confiscationdisplay.cpp +++ b/main/displays/confiscationdisplay.cpp @@ -3,13 +3,11 @@ // 3rdparty lib includes #include #include -#include #include #include // local includes #include "globals.h" -#include "displays/menus/mainmenu.h" #include "icons/shortcircuit.h" using namespace std::chrono_literals; @@ -106,10 +104,8 @@ void ConfiscationDisplay::buttonPressed(espgui::Button button) switch (button) { - using espgui::Button; - case Button::Left: - espgui::switchScreen(); - break; + using espgui::Button; + case Button::Left: espgui::popScreen(); break; default:; } } diff --git a/main/displays/gameoflifedisplay.cpp b/main/displays/gameoflifedisplay.cpp index d3ea5c5..e50c117 100644 --- a/main/displays/gameoflifedisplay.cpp +++ b/main/displays/gameoflifedisplay.cpp @@ -6,9 +6,6 @@ #include #include -// local includes -#include "displays/menus/demosmenu.h" - void GameOfLifeDisplay::start() { Base::start(); @@ -61,8 +58,7 @@ void GameOfLifeDisplay::buttonPressed(espgui::Button button) { using espgui::Button; case Button::Left: - case Button::Right: - espgui::switchScreen(); + espgui::popScreen(); break; default:; } diff --git a/main/displays/gameoflifedisplay.h b/main/displays/gameoflifedisplay.h index d2844f7..10b8d14 100644 --- a/main/displays/gameoflifedisplay.h +++ b/main/displays/gameoflifedisplay.h @@ -17,7 +17,7 @@ public: void redraw() override; void stop() override; - void buttonPressed(espgui::Button button); + void buttonPressed(espgui::Button button) override; private: diff --git a/main/displays/menus/batterydebugmenu.cpp b/main/displays/menus/batterydebugmenu.cpp index c7f885b..92caeb3 100644 --- a/main/displays/menus/batterydebugmenu.cpp +++ b/main/displays/menus/batterydebugmenu.cpp @@ -4,11 +4,10 @@ #include #include #include -#include +#include #include // local includes -#include "debugmenu.h" #include "accessors/settingsaccessors.h" #include "utils.h" #include "icons/settings.h" @@ -82,7 +81,7 @@ BatteryDebugMenu::BatteryDebugMenu() constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string BatteryDebugMenu::text() const @@ -92,5 +91,5 @@ std::string BatteryDebugMenu::text() const void BatteryDebugMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/candebugmenu.cpp b/main/displays/menus/candebugmenu.cpp index 88315d1..525f147 100644 --- a/main/displays/menus/candebugmenu.cpp +++ b/main/displays/menus/candebugmenu.cpp @@ -10,14 +10,13 @@ // 3rdparty lib includes #include -#include +#include #include #include #include #include // local includes -#include "displays/menus/debugmenu.h" #include "bobbyerrorhandler.h" namespace { @@ -256,7 +255,7 @@ CanDebugMenu::CanDebugMenu() constructMenuItem, CanStartAction>>(); constructMenuItem, CanUninstallAction>>(); constructMenuItem, CanInstallAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string CanDebugMenu::text() const @@ -285,7 +284,7 @@ void CanDebugMenu::update() void CanDebugMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } #endif diff --git a/main/displays/menus/commanddebugmenu.h b/main/displays/menus/commanddebugmenu.h index 9fc287d..4e45ae4 100644 --- a/main/displays/menus/commanddebugmenu.h +++ b/main/displays/menus/commanddebugmenu.h @@ -2,11 +2,10 @@ // local includes #include "displays/bobbymenudisplay.h" -#include "debugmenu.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" #include "icons/back.h" #include "debugtexthelpers.h" @@ -14,7 +13,7 @@ template class CommandDebugMenu : public BobbyMenuDisplay, public espgui::StaticText, - public espgui::BackActionInterface> + public espgui::BackActionInterface { public: CommandDebugMenu() @@ -24,7 +23,7 @@ public: constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } private: diff --git a/main/displays/menus/debugmenu.cpp b/main/displays/menus/debugmenu.cpp index 560c45b..992ddbd 100644 --- a/main/displays/menus/debugmenu.cpp +++ b/main/displays/menus/debugmenu.cpp @@ -2,7 +2,8 @@ // 3rdparty lib includes #include -#include +#include +#include #include #include #include @@ -27,7 +28,6 @@ #include "displays/menus/feedbackdebugmenu.h" #include "displays/menus/motorfeedbackdebugmenu.h" #include "displays/menus/dynamicdebugmenu.h" -#include "displays/menus/mainmenu.h" #include "displays/menus/batterydebugmenu.h" #include "bobbycheckbox.h" @@ -62,42 +62,42 @@ constexpr char TEXT_BACK[] = "Back"; DebugMenu::DebugMenu() { using namespace espgui; - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); #ifdef FEATURE_CAN - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); #endif - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::battery>>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::battery>>>(); if (configs.feature.udpcloud.isEnabled.value) { - constructMenuItem, BobbyCheckbox, CloudDebugEnableAccessor>>(); + constructMenuItem, BobbyCheckbox, CloudDebugEnableAccessor>>(); } constructMenuItem, DisabledColor, DummyAction>>(); #ifdef FEATURE_CAN constructMenuItem, DisabledColor, DummyAction>>(); #endif constructMenuItem>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, FrontFeedbackColor>>(); - constructMenuItem, SwitchScreenAction, BackFeedbackColor>>(); + constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); + constructMenuItem, PushScreenAction, BackFeedbackColor>>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, FrontFeedbackColor>>(); - constructMenuItem, SwitchScreenAction, FrontFeedbackColor>>(); - constructMenuItem, SwitchScreenAction, BackFeedbackColor>>(); - constructMenuItem, SwitchScreenAction, BackFeedbackColor>>(); + constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); + constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); + constructMenuItem, PushScreenAction, BackFeedbackColor>>(); + constructMenuItem, PushScreenAction, BackFeedbackColor>>(); constructMenuItem>(); constructMenuItem, LoadSettingsAction>>(); constructMenuItem, SaveSettingsAction>>(); constructMenuItem, EraseNvsAction>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PushScreenAction>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string DebugMenu::text() const @@ -107,5 +107,5 @@ std::string DebugMenu::text() const void DebugMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/demosmenu.cpp b/main/displays/menus/demosmenu.cpp index 7fc021c..b8e7d91 100644 --- a/main/displays/menus/demosmenu.cpp +++ b/main/displays/menus/demosmenu.cpp @@ -2,13 +2,13 @@ // 3rdparty lib includes #include "menuitem.h" -#include "actions/switchscreenaction.h" +#include "actions/pushscreenaction.h" +#include "actions/popscreenaction.h" #include "icons/back.h" #include "displays/starfielddisplay.h" #include "displays/pingpongdisplay.h" #include "displays/spirodisplay.h" #include "displays/gameoflifedisplay.h" -#include "displays/menus/mainmenu.h" // local includes #include "utils.h" @@ -25,11 +25,11 @@ constexpr char TEXT_BACK[] = "Back"; DemosMenu::DemosMenu() { using namespace espgui; - 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 DemosMenu::text() const @@ -39,5 +39,5 @@ std::string DemosMenu::text() const void DemosMenu::back() { - espgui::switchScreen(); + espgui::popScreen(); } diff --git a/main/displays/menus/dynamicdebugmenu.cpp b/main/displays/menus/dynamicdebugmenu.cpp index 7d7c110..0a708e1 100644 --- a/main/displays/menus/dynamicdebugmenu.cpp +++ b/main/displays/menus/dynamicdebugmenu.cpp @@ -14,6 +14,8 @@ #include #include #include +#include +#include // local includes #include "displays/bobbychangevaluedisplay.h" @@ -90,8 +92,8 @@ using ToggleChangeValueDisplay = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, ToggleAccessor, - espgui::ConfirmActionInterface>, - espgui::BackActionInterface> + espgui::ConfirmActionInterface, + espgui::BackActionInterface >; class OpenPopupAction : public virtual espgui::ActionInterface @@ -135,7 +137,7 @@ DynamicDebugMenu::DynamicDebugMenu() constructMenuItem, StaticMenuItemIcon<&bobbyicons::lock>, DummyAction>>(); constructMenuItem, BobbyCheckbox, ToggleLockedAccessor>>(); constructMenuItem, BobbyCheckbox, ToggleAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, PushScreenAction>>(); constructMenuItem>(); // more scrolling @@ -146,7 +148,12 @@ DynamicDebugMenu::DynamicDebugMenu() constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} + +void DynamicDebugMenu::back() +{ + espgui::popScreen(); } namespace { diff --git a/main/displays/menus/dynamicdebugmenu.h b/main/displays/menus/dynamicdebugmenu.h index ef543a2..1c9385b 100644 --- a/main/displays/menus/dynamicdebugmenu.h +++ b/main/displays/menus/dynamicdebugmenu.h @@ -3,11 +3,9 @@ // 3rdparty lib includes #include #include -#include // local includes #include "displays/bobbymenudisplay.h" -#include "debugmenu.h" class RandomText : public virtual espgui::TextInterface { @@ -21,9 +19,10 @@ private: class DynamicDebugMenu : public BobbyMenuDisplay, - public RandomText, - public espgui::BackActionInterface> + public RandomText { public: DynamicDebugMenu(); + + void back() override; }; diff --git a/main/displays/menus/feedbackdebugmenu.h b/main/displays/menus/feedbackdebugmenu.h index 2774aa7..0cd7a93 100644 --- a/main/displays/menus/feedbackdebugmenu.h +++ b/main/displays/menus/feedbackdebugmenu.h @@ -2,11 +2,10 @@ // local includes #include "displays/bobbymenudisplay.h" -#include "debugmenu.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" #include "icons/back.h" #include "debugtexthelpers.h" #include "debugcolorhelpers.h" @@ -16,7 +15,7 @@ template class ColorInterface> class FeedbackDebugMenu : public BobbyMenuDisplay, public espgui::StaticText, - public espgui::BackActionInterface> + public espgui::BackActionInterface { public: FeedbackDebugMenu() @@ -27,7 +26,7 @@ public: //constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, ColorInterface, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } private: diff --git a/main/displays/menus/motorfeedbackdebugmenu.h b/main/displays/menus/motorfeedbackdebugmenu.h index e879ec9..303ebdd 100644 --- a/main/displays/menus/motorfeedbackdebugmenu.h +++ b/main/displays/menus/motorfeedbackdebugmenu.h @@ -2,11 +2,10 @@ // local includes #include "displays/bobbymenudisplay.h" -#include "debugmenu.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" #include "icons/back.h" #include "debugtexthelpers.h" #include "debugcolorhelpers.h" @@ -15,7 +14,7 @@ template class ColorInterface> class MotorFeedbackDebugMenu : public BobbyMenuDisplay, public espgui::StaticText, - public espgui::BackActionInterface> + public espgui::BackActionInterface { public: MotorFeedbackDebugMenu() @@ -36,7 +35,7 @@ public: constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } private: diff --git a/main/displays/menus/motorstatedebugmenu.h b/main/displays/menus/motorstatedebugmenu.h index 3b8589c..8237bbf 100644 --- a/main/displays/menus/motorstatedebugmenu.h +++ b/main/displays/menus/motorstatedebugmenu.h @@ -3,12 +3,11 @@ // 3rdparty lib includes #include "menuitem.h" #include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" +#include "actions/popscreenaction.h" #include "icons/back.h" // local includes #include "displays/bobbymenudisplay.h" -#include "debugmenu.h" #include "utils.h" #include "debugtexthelpers.h" @@ -16,7 +15,7 @@ template class MotorStateDebugMenu : public BobbyMenuDisplay, public espgui::StaticText, - public espgui::BackActionInterface> + public espgui::BackActionInterface { public: MotorStateDebugMenu() @@ -33,7 +32,7 @@ public: constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } private: diff --git a/main/displays/menus/profilesmenu.cpp b/main/displays/menus/profilesmenu.cpp index 6b6d08b..08f58f5 100644 --- a/main/displays/menus/profilesmenu.cpp +++ b/main/displays/menus/profilesmenu.cpp @@ -2,8 +2,7 @@ // local includes #include "actions/switchprofileaction.h" -#include "actions/switchscreenaction.h" -#include "displays/menus/mainmenu.h" +#include "actions/popscreenaction.h" #include "icons/back.h" #include "menudisplay.h" @@ -22,7 +21,7 @@ ProfilesMenu::ProfilesMenu() constructMenuItem, SwitchProfileAction<1>>>(); constructMenuItem, SwitchProfileAction<2>>>(); constructMenuItem, SwitchProfileAction<3>>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string ProfilesMenu::text() const @@ -32,5 +31,5 @@ std::string ProfilesMenu::text() const void ProfilesMenu::back() { - switchScreen(); + popScreen(); } diff --git a/main/displays/menus/taskmanagermenu.cpp b/main/displays/menus/taskmanagermenu.cpp index 9da00a5..9680365 100644 --- a/main/displays/menus/taskmanagermenu.cpp +++ b/main/displays/menus/taskmanagermenu.cpp @@ -2,13 +2,12 @@ // 3rdparty lib includes #include -#include +#include #include #include #include // local includes -#include "displays/menus/debugmenu.h" #include "taskmanager.h" using namespace espgui; @@ -38,7 +37,7 @@ TaskmanagerMenu::TaskmanagerMenu() { for (const auto &task : schedulerTasks) constructMenuItem>(task); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string TaskmanagerMenu::text() const @@ -48,5 +47,5 @@ std::string TaskmanagerMenu::text() const void TaskmanagerMenu::back() { - switchScreen(); + popScreen(); } diff --git a/main/displays/pingpongdisplay.cpp b/main/displays/pingpongdisplay.cpp index 7558b10..0c036e6 100644 --- a/main/displays/pingpongdisplay.cpp +++ b/main/displays/pingpongdisplay.cpp @@ -6,9 +6,6 @@ #include #include -// local includes -#include "displays/menus/demosmenu.h" - PingPongDisplay::PingPongDisplay() : lpaddle_y(cpputils::randomNumber(0, h - paddle_h, espcpputils::esp_random_device{})), rpaddle_y(cpputils::randomNumber(0, h - paddle_h, espcpputils::esp_random_device{})), @@ -55,8 +52,7 @@ void PingPongDisplay::buttonPressed(espgui::Button button) { using espgui::Button; case Button::Left: - case Button::Right: - espgui::switchScreen(); + espgui::popScreen(); break; default:; } diff --git a/main/displays/poweroffdisplay.cpp b/main/displays/poweroffdisplay.cpp index 80266c6..f3bc49f 100644 --- a/main/displays/poweroffdisplay.cpp +++ b/main/displays/poweroffdisplay.cpp @@ -7,7 +7,6 @@ // local includes #include "utils.h" #include "globals.h" -#include "displays/menus/mainmenu.h" using namespace std::chrono_literals; @@ -43,7 +42,7 @@ void PoweroffDisplay::update() Base::update(); if (espchrono::millis_clock::now() - m_startTime >= 1000ms) - espgui::switchScreen(); + espgui::popScreen(); } void PoweroffDisplay::stop() diff --git a/main/displays/qrcodedebug.cpp b/main/displays/qrcodedebug.cpp index 1bb80ab..8450c86 100644 --- a/main/displays/qrcodedebug.cpp +++ b/main/displays/qrcodedebug.cpp @@ -1,9 +1,10 @@ #include "qrcodedebug.h" +// 3rdparty lib includes #include #include -#include "displays/menus/debugmenu.h" +// local includes #include "globals.h" #include "screenmanager.h" #include "newsettings.h" @@ -26,9 +27,7 @@ void QrCodeDebugDisplay::buttonPressed(espgui::Button button) switch (button) { using espgui::Button; - case Button::Left: - switchScreen(); - break; + case Button::Left: popScreen(); break; case Button::Right: { uint8_t qrcodeBytes[qrcode_getBufferSize(7)]; diff --git a/main/displays/spirodisplay.cpp b/main/displays/spirodisplay.cpp index 164a6d9..a627689 100644 --- a/main/displays/spirodisplay.cpp +++ b/main/displays/spirodisplay.cpp @@ -6,9 +6,6 @@ #include #include -// local includes -#include "displays/menus/demosmenu.h" - void SpiroDisplay::initScreen() { Base::initScreen(); @@ -88,8 +85,7 @@ void SpiroDisplay::buttonPressed(espgui::Button button) { using espgui::Button; case Button::Left: - case Button::Right: - espgui::switchScreen(); + espgui::popScreen(); break; default:; } diff --git a/main/displays/starfielddisplay.cpp b/main/displays/starfielddisplay.cpp index 377f358..2615498 100644 --- a/main/displays/starfielddisplay.cpp +++ b/main/displays/starfielddisplay.cpp @@ -87,8 +87,7 @@ void StarfieldDisplay::buttonPressed(espgui::Button button) { using espgui::Button; case Button::Left: - case Button::Right: - espgui::switchScreen(); + espgui::popScreen(); break; default:; }