Implemented back button for a few menus

This commit is contained in:
2020-05-24 14:08:25 +02:00
parent d5eb54db7c
commit fa954f7c30
9 changed files with 37 additions and 3 deletions

View File

@@ -9,7 +9,35 @@ class ChangeValueDisplayInterface;
}
namespace {
class Display {
class ConfirmInterface {
public:
virtual void confirm() {}
};
class BackInterface {
public:
virtual void back() {}
};
template<typename T>
class ConfirmActionInterface : public virtual ConfirmInterface
{
T m_action;
public:
void confirm() override { m_action.triggered(); }
};
template<typename T>
class BackActionInterface : public virtual BackInterface
{
T m_action;
public:
void back() override { m_action.triggered(); }
};
class Display : public virtual ConfirmInterface, public virtual BackInterface {
public:
virtual ~Display() = default;
@@ -20,8 +48,6 @@ public:
virtual void stop() {}
virtual void rotate(int offset) {}
virtual void confirm() {}
virtual void back() {}
virtual TextInterface *asTextInterface() { return nullptr; }
virtual const TextInterface *asTextInterface() const { return nullptr; }

View File

@@ -24,6 +24,7 @@ namespace {
class BmsMenu :
public MenuDisplay,
public StaticText<TEXT_BMS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_CONNECTBMS>, BluetoothConnectBmsAction>,
makeComponent<MenuItem, StaticText<TEXT_DISCONNECTBMS>, BluetoothDisconnectAction>,

View File

@@ -36,6 +36,7 @@ namespace {
class DebugMenu :
public MenuDisplay,
public StaticText<TEXT_DEBUG>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>,
makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>,

View File

@@ -20,6 +20,7 @@ namespace {
class DemosMenu :
public MenuDisplay,
public StaticText<TEXT_DEMOS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_STARFIELD>, SwitchScreenAction<StarfieldDisplay>>,
makeComponent<MenuItem, StaticText<TEXT_PINGPONG>, SwitchScreenAction<PingPongDisplay>>,

View File

@@ -48,6 +48,7 @@ using MotorCurrentsGraphDisplay = makeComponent<GraphDisplay<4>, StaticText<TEXT
class GraphsMenu :
public MenuDisplay,
public StaticText<TEXT_GRAPHS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_GAS>, SwitchScreenAction<GasGraphDisplay>>,
makeComponent<MenuItem, StaticText<TEXT_BREMS>, SwitchScreenAction<BremsGraphDisplay>>,

View File

@@ -34,6 +34,7 @@ namespace {
class MainMenu :
public MenuDisplay,
public StaticText<TEXT_MAINMENU>,
public BackActionInterface<SwitchScreenAction<StatusDisplay>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_STATUS>, SwitchScreenAction<StatusDisplay>, StaticMenuItemIcon<&icons::back>>,
makeComponent<MenuItem, StaticText<TEXT_SELECTMODE>, SwitchScreenAction<SelectModeMenu>, StaticMenuItemIcon<&icons::modes>>,

View File

@@ -32,6 +32,7 @@ class ApplyBoardcomputerHardwarePresetAction : public virtual ActionInterface {p
class PresetsMenu :
public MenuDisplay,
public StaticText<TEXT_PRESETS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_DEFAULTEVERYTHING>, ApplyPresetAction<&presets::defaultSettings>>,
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLIMITS>, ApplyLimitsPresetAction<&presets::defaultLimits>>,

View File

@@ -31,6 +31,7 @@ using SetLarsmModeAction = SetterAction<ModeInterface*, currentMode, LarsmMode*,
class SelectModeMenu :
public MenuDisplay,
public StaticText<TEXT_SELECTMODE>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, SwitchScreenAction<MainMenu>>>,
makeComponent<MenuItem, StaticText<TEXT_TEMPOMAT>, MultiAction<SetTempomatModeAction, SwitchScreenAction<MainMenu>>>,

View File

@@ -37,6 +37,7 @@ struct BackLedAccessor : public RefAccessor<bool> { bool &getRef() const overrid
class SettingsMenu :
public MenuDisplay,
public StaticText<TEXT_SETTINGS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_LIMITSSETTINGS>, SwitchScreenAction<LimitsSettingsMenu>>,
makeComponent<MenuItem, StaticText<TEXT_WIFISETTINGS>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::wifi>>,