Implemented back button for a few menus
This commit is contained in:
@@ -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; }
|
||||
|
@@ -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>,
|
||||
|
@@ -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>,
|
||||
|
@@ -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>>,
|
||||
|
@@ -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>>,
|
||||
|
@@ -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>>,
|
||||
|
@@ -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>>,
|
||||
|
@@ -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>>>,
|
||||
|
@@ -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>>,
|
||||
|
Reference in New Issue
Block a user