More push pop screens

This commit is contained in:
2022-03-05 22:26:57 +01:00
parent c18403a30f
commit c0f911ce05
20 changed files with 79 additions and 100 deletions

View File

@ -3,13 +3,11 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <tftinstance.h> #include <tftinstance.h>
#include <screenmanager.h> #include <screenmanager.h>
#include <actions/switchscreenaction.h>
#include <esprandom.h> #include <esprandom.h>
#include <randomutils.h> #include <randomutils.h>
// local includes // local includes
#include "globals.h" #include "globals.h"
#include "displays/menus/mainmenu.h"
#include "icons/shortcircuit.h" #include "icons/shortcircuit.h"
using namespace std::chrono_literals; using namespace std::chrono_literals;
@ -106,10 +104,8 @@ void ConfiscationDisplay::buttonPressed(espgui::Button button)
switch (button) switch (button)
{ {
using espgui::Button; using espgui::Button;
case Button::Left: case Button::Left: espgui::popScreen(); break;
espgui::switchScreen<MainMenu>();
break;
default:; default:;
} }
} }

View File

@ -6,9 +6,6 @@
#include <tftinstance.h> #include <tftinstance.h>
#include <screenmanager.h> #include <screenmanager.h>
// local includes
#include "displays/menus/demosmenu.h"
void GameOfLifeDisplay::start() void GameOfLifeDisplay::start()
{ {
Base::start(); Base::start();
@ -61,8 +58,7 @@ void GameOfLifeDisplay::buttonPressed(espgui::Button button)
{ {
using espgui::Button; using espgui::Button;
case Button::Left: case Button::Left:
case Button::Right: espgui::popScreen();
espgui::switchScreen<DemosMenu>();
break; break;
default:; default:;
} }

View File

@ -17,7 +17,7 @@ public:
void redraw() override; void redraw() override;
void stop() override; void stop() override;
void buttonPressed(espgui::Button button); void buttonPressed(espgui::Button button) override;
private: private:

View File

@ -4,11 +4,10 @@
#include <menuitem.h> #include <menuitem.h>
#include <icons/back.h> #include <icons/back.h>
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <actions/switchscreenaction.h> #include <actions/popscreenaction.h>
#include <fmt/core.h> #include <fmt/core.h>
// local includes // local includes
#include "debugmenu.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "utils.h" #include "utils.h"
#include "icons/settings.h" #include "icons/settings.h"
@ -82,7 +81,7 @@ BatteryDebugMenu::BatteryDebugMenu()
constructMenuItem<makeComponent<MenuItem, BatteryDebug2Text, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, BatteryDebug2Text, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, BatteryDebug3Text, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, BatteryDebug3Text, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CurrentAdvancedBatteryPercentageText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CurrentAdvancedBatteryPercentageText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string BatteryDebugMenu::text() const std::string BatteryDebugMenu::text() const
@ -92,5 +91,5 @@ std::string BatteryDebugMenu::text() const
void BatteryDebugMenu::back() void BatteryDebugMenu::back()
{ {
espgui::switchScreen<DebugMenu>(); espgui::popScreen();
} }

View File

@ -10,14 +10,13 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <menuitem.h> #include <menuitem.h>
#include <actions/switchscreenaction.h> #include <actions/popscreenaction.h>
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <icons/back.h> #include <icons/back.h>
#include <screenmanager.h> #include <screenmanager.h>
#include <futurecpp.h> #include <futurecpp.h>
// local includes // local includes
#include "displays/menus/debugmenu.h"
#include "bobbyerrorhandler.h" #include "bobbyerrorhandler.h"
namespace { namespace {
@ -256,7 +255,7 @@ CanDebugMenu::CanDebugMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TWAI_START>, CanStartAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TWAI_START>, CanStartAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TWAI_UNINSTALL>, CanUninstallAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TWAI_UNINSTALL>, CanUninstallAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TWAI_INSTALL>, CanInstallAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TWAI_INSTALL>, CanInstallAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string CanDebugMenu::text() const std::string CanDebugMenu::text() const
@ -285,7 +284,7 @@ void CanDebugMenu::update()
void CanDebugMenu::back() void CanDebugMenu::back()
{ {
espgui::switchScreen<DebugMenu>(); espgui::popScreen();
} }
#endif #endif

View File

@ -2,11 +2,10 @@
// local includes // local includes
#include "displays/bobbymenudisplay.h" #include "displays/bobbymenudisplay.h"
#include "debugmenu.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
@ -14,7 +13,7 @@ template<const char *Ttext, typename Ttexts>
class CommandDebugMenu : class CommandDebugMenu :
public BobbyMenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<Ttext>, public espgui::StaticText<Ttext>,
public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>> public espgui::BackActionInterface<espgui::PopScreenAction>
{ {
public: public:
CommandDebugMenu() CommandDebugMenu()
@ -24,7 +23,7 @@ public:
constructMenuItem<makeComponent<MenuItem, typename Ttexts::BuzzerPatternText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::BuzzerPatternText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::PoweroffText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::PoweroffText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::LedText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::LedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
private: private:

View File

@ -2,7 +2,8 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <menuitem.h> #include <menuitem.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 <screenmanager.h> #include <screenmanager.h>
@ -27,7 +28,6 @@
#include "displays/menus/feedbackdebugmenu.h" #include "displays/menus/feedbackdebugmenu.h"
#include "displays/menus/motorfeedbackdebugmenu.h" #include "displays/menus/motorfeedbackdebugmenu.h"
#include "displays/menus/dynamicdebugmenu.h" #include "displays/menus/dynamicdebugmenu.h"
#include "displays/menus/mainmenu.h"
#include "displays/menus/batterydebugmenu.h" #include "displays/menus/batterydebugmenu.h"
#include "bobbycheckbox.h" #include "bobbycheckbox.h"
@ -62,42 +62,42 @@ constexpr char TEXT_BACK[] = "Back";
DebugMenu::DebugMenu() DebugMenu::DebugMenu()
{ {
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TASKMANAGER>, SwitchScreenAction<TaskmanagerMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TASKMANAGER>, PushScreenAction<TaskmanagerMenu>>>();
#ifdef FEATURE_CAN #ifdef FEATURE_CAN
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANDEBUG>, SwitchScreenAction<CanDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANDEBUG>, PushScreenAction<CanDebugMenu>>>();
#endif #endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_QRCODE_DEBUG>, SwitchScreenAction<QrCodeDebugDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_QRCODE_DEBUG>, PushScreenAction<QrCodeDebugDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BATTERYDEBUG>, SwitchScreenAction<BatteryDebugMenu>, StaticMenuItemIcon<&bobbyicons::battery>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BATTERYDEBUG>, PushScreenAction<BatteryDebugMenu>, StaticMenuItemIcon<&bobbyicons::battery>>>();
if (configs.feature.udpcloud.isEnabled.value) if (configs.feature.udpcloud.isEnabled.value)
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TOGGLECLOUDDEBUG>, BobbyCheckbox, CloudDebugEnableAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TOGGLECLOUDDEBUG>, BobbyCheckbox, CloudDebugEnableAccessor>>();
} }
constructMenuItem<makeComponent<MenuItem, LastRebootReasonText, StaticFont<2>, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, LastRebootReasonText, StaticFont<2>, DisabledColor, DummyAction>>();
#ifdef FEATURE_CAN #ifdef FEATURE_CAN
constructMenuItem<makeComponent<MenuItem, CanIcCrashText, StaticFont<2>, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, CanIcCrashText, StaticFont<2>, DisabledColor, DummyAction>>();
#endif #endif
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTCOMMAND>, SwitchScreenAction<FrontCommandDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTCOMMAND>, PushScreenAction<FrontCommandDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKCOMMAND>, SwitchScreenAction<BackCommandDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKCOMMAND>, PushScreenAction<BackCommandDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTCOMMAND>, SwitchScreenAction<FrontLeftMotorStateDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTCOMMAND>, PushScreenAction<FrontLeftMotorStateDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTCOMMAND>, SwitchScreenAction<FrontRightMotorStateDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTCOMMAND>, PushScreenAction<FrontRightMotorStateDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLEFTCOMMAND>, SwitchScreenAction<BackLeftMotorStateDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLEFTCOMMAND>, PushScreenAction<BackLeftMotorStateDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTCOMMAND>, SwitchScreenAction<BackRightMotorStateDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTCOMMAND>, PushScreenAction<BackRightMotorStateDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTFEEDBACK>, SwitchScreenAction<FrontFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTFEEDBACK>, PushScreenAction<FrontFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKFEEDBACK>, SwitchScreenAction<BackFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKFEEDBACK>, PushScreenAction<BackFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTFEEDBACK>, SwitchScreenAction<FrontLeftMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTFEEDBACK>, PushScreenAction<FrontLeftMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTFEEDBACK>, SwitchScreenAction<FrontRightMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTFEEDBACK>, PushScreenAction<FrontRightMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLEFTFEEDBACK>, SwitchScreenAction<BackLeftMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLEFTFEEDBACK>, PushScreenAction<BackLeftMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTFEEDBACK>, SwitchScreenAction<BackRightMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTFEEDBACK>, PushScreenAction<BackRightMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ERASENVS>, EraseNvsAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ERASENVS>, EraseNvsAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICMENU>, SwitchScreenAction<DynamicDebugMenu>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICMENU>, PushScreenAction<DynamicDebugMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string DebugMenu::text() const std::string DebugMenu::text() const
@ -107,5 +107,5 @@ std::string DebugMenu::text() const
void DebugMenu::back() void DebugMenu::back()
{ {
espgui::switchScreen<MainMenu>(); espgui::popScreen();
} }

View File

@ -2,13 +2,13 @@
// 3rdparty lib includes // 3rdparty lib includes
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "displays/starfielddisplay.h" #include "displays/starfielddisplay.h"
#include "displays/pingpongdisplay.h" #include "displays/pingpongdisplay.h"
#include "displays/spirodisplay.h" #include "displays/spirodisplay.h"
#include "displays/gameoflifedisplay.h" #include "displays/gameoflifedisplay.h"
#include "displays/menus/mainmenu.h"
// local includes // local includes
#include "utils.h" #include "utils.h"
@ -25,11 +25,11 @@ constexpr char TEXT_BACK[] = "Back";
DemosMenu::DemosMenu() DemosMenu::DemosMenu()
{ {
using namespace espgui; using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STARFIELD>, SwitchScreenAction<StarfieldDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STARFIELD>, PushScreenAction<StarfieldDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PINGPONG>, SwitchScreenAction<PingPongDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PINGPONG>, PushScreenAction<PingPongDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SPIRO>, SwitchScreenAction<SpiroDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SPIRO>, PushScreenAction<SpiroDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMEOFLIFE>, SwitchScreenAction<GameOfLifeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMEOFLIFE>, PushScreenAction<GameOfLifeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string DemosMenu::text() const std::string DemosMenu::text() const
@ -39,5 +39,5 @@ std::string DemosMenu::text() const
void DemosMenu::back() void DemosMenu::back()
{ {
espgui::switchScreen<MainMenu>(); espgui::popScreen();
} }

View File

@ -14,6 +14,8 @@
#include <icons/back.h> #include <icons/back.h>
#include <changevaluedisplay.h> #include <changevaluedisplay.h>
#include <changevaluedisplay_bool.h> #include <changevaluedisplay_bool.h>
#include <actions/pushscreenaction.h>
#include <actions/popscreenaction.h>
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h" #include "displays/bobbychangevaluedisplay.h"
@ -90,8 +92,8 @@ using ToggleChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<bool>, BobbyChangeValueDisplay<bool>,
espgui::StaticText<TEXT_DEBUGTOGGLEMENU>, espgui::StaticText<TEXT_DEBUGTOGGLEMENU>,
ToggleAccessor, ToggleAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<DynamicDebugMenu>>, espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::SwitchScreenAction<DynamicDebugMenu>> espgui::BackActionInterface<espgui::PopScreenAction>
>; >;
class OpenPopupAction : public virtual espgui::ActionInterface class OpenPopupAction : public virtual espgui::ActionInterface
@ -135,7 +137,7 @@ DynamicDebugMenu::DynamicDebugMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATICICON>, StaticMenuItemIcon<&bobbyicons::lock>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATICICON>, StaticMenuItemIcon<&bobbyicons::lock>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOCKTOGGLE>, BobbyCheckbox, ToggleLockedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOCKTOGGLE>, BobbyCheckbox, ToggleLockedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEBUGTOGGLE>, BobbyCheckbox, ToggleAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEBUGTOGGLE>, BobbyCheckbox, ToggleAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEBUGTOGGLEMENU>, SwitchScreenAction<ToggleChangeValueDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEBUGTOGGLEMENU>, PushScreenAction<ToggleChangeValueDisplay>>>();
constructMenuItem<makeComponent<MenuItem, RandomText, RandomColor, RandomFont, RandomIcon, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, RandomText, RandomColor, RandomFont, RandomIcon, DummyAction>>();
// more scrolling // more scrolling
@ -146,7 +148,12 @@ DynamicDebugMenu::DynamicDebugMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void DynamicDebugMenu::back()
{
espgui::popScreen();
} }
namespace { namespace {

View File

@ -3,11 +3,9 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <textinterface.h> #include <textinterface.h>
#include <espchrono.h> #include <espchrono.h>
#include <actions/switchscreenaction.h>
// local includes // local includes
#include "displays/bobbymenudisplay.h" #include "displays/bobbymenudisplay.h"
#include "debugmenu.h"
class RandomText : public virtual espgui::TextInterface class RandomText : public virtual espgui::TextInterface
{ {
@ -21,9 +19,10 @@ private:
class DynamicDebugMenu : class DynamicDebugMenu :
public BobbyMenuDisplay, public BobbyMenuDisplay,
public RandomText, public RandomText
public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>>
{ {
public: public:
DynamicDebugMenu(); DynamicDebugMenu();
void back() override;
}; };

View File

@ -2,11 +2,10 @@
// local includes // local includes
#include "displays/bobbymenudisplay.h" #include "displays/bobbymenudisplay.h"
#include "debugmenu.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
#include "debugcolorhelpers.h" #include "debugcolorhelpers.h"
@ -16,7 +15,7 @@ template<const char *Ttext, typename Ttexts, template<int> class ColorInterface>
class FeedbackDebugMenu : class FeedbackDebugMenu :
public BobbyMenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<Ttext>, public espgui::StaticText<Ttext>,
public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>> public espgui::BackActionInterface<espgui::PopScreenAction>
{ {
public: public:
FeedbackDebugMenu() FeedbackDebugMenu()
@ -27,7 +26,7 @@ public:
//constructMenuItem<makeComponent<MenuItem, typename Ttexts::BoardTempText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); //constructMenuItem<makeComponent<MenuItem, typename Ttexts::BoardTempText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::BoardTempFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::BoardTempFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::TimeoutCntSerialText, StaticFont<2>, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::TimeoutCntSerialText, StaticFont<2>, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
private: private:

View File

@ -2,11 +2,10 @@
// local includes // local includes
#include "displays/bobbymenudisplay.h" #include "displays/bobbymenudisplay.h"
#include "debugmenu.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
#include "debugcolorhelpers.h" #include "debugcolorhelpers.h"
@ -15,7 +14,7 @@ template<const char *Ttext, typename Ttexts, template<int> class ColorInterface>
class MotorFeedbackDebugMenu : class MotorFeedbackDebugMenu :
public BobbyMenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<Ttext>, public espgui::StaticText<Ttext>,
public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>> public espgui::BackActionInterface<espgui::PopScreenAction>
{ {
public: public:
MotorFeedbackDebugMenu() MotorFeedbackDebugMenu()
@ -36,7 +35,7 @@ public:
constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaCFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::DcPhaCFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::ChopsText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::ChopsText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::HallText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::HallText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
private: private:

View File

@ -3,12 +3,11 @@
// 3rdparty lib includes // 3rdparty lib includes
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h" #include "displays/bobbymenudisplay.h"
#include "debugmenu.h"
#include "utils.h" #include "utils.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
@ -16,7 +15,7 @@ template<const char *Ttext, typename Ttexts>
class MotorStateDebugMenu : class MotorStateDebugMenu :
public BobbyMenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<Ttext>, public espgui::StaticText<Ttext>,
public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>> public espgui::BackActionInterface<espgui::PopScreenAction>
{ {
public: public:
MotorStateDebugMenu() MotorStateDebugMenu()
@ -33,7 +32,7 @@ public:
constructMenuItem<makeComponent<MenuItem, typename Ttexts::PhaseAdvMaxText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::PhaseAdvMaxText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::CruiseCtrlEnaText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::CruiseCtrlEnaText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::NCruiseMotTgtText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::NCruiseMotTgtText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
private: private:

View File

@ -2,8 +2,7 @@
// local includes // local includes
#include "actions/switchprofileaction.h" #include "actions/switchprofileaction.h"
#include "actions/switchscreenaction.h" #include "actions/popscreenaction.h"
#include "displays/menus/mainmenu.h"
#include "icons/back.h" #include "icons/back.h"
#include "menudisplay.h" #include "menudisplay.h"
@ -22,7 +21,7 @@ ProfilesMenu::ProfilesMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string ProfilesMenu::text() const std::string ProfilesMenu::text() const
@ -32,5 +31,5 @@ std::string ProfilesMenu::text() const
void ProfilesMenu::back() void ProfilesMenu::back()
{ {
switchScreen<MainMenu>(); popScreen();
} }

View File

@ -2,13 +2,12 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <icons/back.h> #include <icons/back.h>
#include <actions/switchscreenaction.h> #include <actions/popscreenaction.h>
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <schedulertask.h> #include <schedulertask.h>
#include <fmt/core.h> #include <fmt/core.h>
// local includes // local includes
#include "displays/menus/debugmenu.h"
#include "taskmanager.h" #include "taskmanager.h"
using namespace espgui; using namespace espgui;
@ -38,7 +37,7 @@ TaskmanagerMenu::TaskmanagerMenu()
{ {
for (const auto &task : schedulerTasks) for (const auto &task : schedulerTasks)
constructMenuItem<makeComponentArgs<MenuItem, TaskText, DummyAction>>(task); constructMenuItem<makeComponentArgs<MenuItem, TaskText, DummyAction>>(task);
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
std::string TaskmanagerMenu::text() const std::string TaskmanagerMenu::text() const
@ -48,5 +47,5 @@ std::string TaskmanagerMenu::text() const
void TaskmanagerMenu::back() void TaskmanagerMenu::back()
{ {
switchScreen<DebugMenu>(); popScreen();
} }

View File

@ -6,9 +6,6 @@
#include <tftinstance.h> #include <tftinstance.h>
#include <screenmanager.h> #include <screenmanager.h>
// local includes
#include "displays/menus/demosmenu.h"
PingPongDisplay::PingPongDisplay() : PingPongDisplay::PingPongDisplay() :
lpaddle_y(cpputils::randomNumber<uint8_t>(0, h - paddle_h, espcpputils::esp_random_device{})), lpaddle_y(cpputils::randomNumber<uint8_t>(0, h - paddle_h, espcpputils::esp_random_device{})),
rpaddle_y(cpputils::randomNumber<uint8_t>(0, h - paddle_h, espcpputils::esp_random_device{})), rpaddle_y(cpputils::randomNumber<uint8_t>(0, h - paddle_h, espcpputils::esp_random_device{})),
@ -55,8 +52,7 @@ void PingPongDisplay::buttonPressed(espgui::Button button)
{ {
using espgui::Button; using espgui::Button;
case Button::Left: case Button::Left:
case Button::Right: espgui::popScreen();
espgui::switchScreen<DemosMenu>();
break; break;
default:; default:;
} }

View File

@ -7,7 +7,6 @@
// local includes // local includes
#include "utils.h" #include "utils.h"
#include "globals.h" #include "globals.h"
#include "displays/menus/mainmenu.h"
using namespace std::chrono_literals; using namespace std::chrono_literals;
@ -43,7 +42,7 @@ void PoweroffDisplay::update()
Base::update(); Base::update();
if (espchrono::millis_clock::now() - m_startTime >= 1000ms) if (espchrono::millis_clock::now() - m_startTime >= 1000ms)
espgui::switchScreen<MainMenu>(); espgui::popScreen();
} }
void PoweroffDisplay::stop() void PoweroffDisplay::stop()

View File

@ -1,9 +1,10 @@
#include "qrcodedebug.h" #include "qrcodedebug.h"
// 3rdparty lib includes
#include <fmt/core.h> #include <fmt/core.h>
#include <tftinstance.h> #include <tftinstance.h>
#include "displays/menus/debugmenu.h" // local includes
#include "globals.h" #include "globals.h"
#include "screenmanager.h" #include "screenmanager.h"
#include "newsettings.h" #include "newsettings.h"
@ -26,9 +27,7 @@ void QrCodeDebugDisplay::buttonPressed(espgui::Button button)
switch (button) switch (button)
{ {
using espgui::Button; using espgui::Button;
case Button::Left: case Button::Left: popScreen(); break;
switchScreen<DebugMenu>();
break;
case Button::Right: case Button::Right:
{ {
uint8_t qrcodeBytes[qrcode_getBufferSize(7)]; uint8_t qrcodeBytes[qrcode_getBufferSize(7)];

View File

@ -6,9 +6,6 @@
#include <tftinstance.h> #include <tftinstance.h>
#include <screenmanager.h> #include <screenmanager.h>
// local includes
#include "displays/menus/demosmenu.h"
void SpiroDisplay::initScreen() void SpiroDisplay::initScreen()
{ {
Base::initScreen(); Base::initScreen();
@ -88,8 +85,7 @@ void SpiroDisplay::buttonPressed(espgui::Button button)
{ {
using espgui::Button; using espgui::Button;
case Button::Left: case Button::Left:
case Button::Right: espgui::popScreen();
espgui::switchScreen<DemosMenu>();
break; break;
default:; default:;
} }

View File

@ -87,8 +87,7 @@ void StarfieldDisplay::buttonPressed(espgui::Button button)
{ {
using espgui::Button; using espgui::Button;
case Button::Left: case Button::Left:
case Button::Right: espgui::popScreen();
espgui::switchScreen<DemosMenu>();
break; break;
default:; default:;
} }