Limits menu now shows live values in menu items

This commit is contained in:
2021-06-28 09:17:39 +02:00
parent db024a298f
commit ea3c803c4f
2 changed files with 26 additions and 20 deletions

View File

@ -17,44 +17,50 @@ class SettingsMenu;
} // namespace } // namespace
namespace { namespace {
template<const char *Tprefix, typename Taccessor>
struct TextWithValueHelper : public virtual TextInterface
{
String text() const override { return Tprefix + (' ' + String{Taccessor{}.getValue()}); }
};
using IMotMaxChangeScreen = makeComponent< using IMotMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETIMOTMAX>, StaticText<TEXT_IMOTMAX>,
IMotMaxAccessor, IMotMaxAccessor,
BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>, BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>,
SwitchScreenAction<LimitsSettingsMenu> SwitchScreenAction<LimitsSettingsMenu>
>; >;
using IDcMaxChangeScreen = makeComponent< using IDcMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETIDCMAX>, StaticText<TEXT_IDCMAX>,
IDcMaxAccessor, IDcMaxAccessor,
BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>, BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>,
SwitchScreenAction<LimitsSettingsMenu> SwitchScreenAction<LimitsSettingsMenu>
>; >;
using NMotMaxKmhChangeScreen = makeComponent< using NMotMaxKmhChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETNMOTMAXKMH>, StaticText<TEXT_NMOTMAXKMH>,
NMotMaxKmhAccessor, NMotMaxKmhAccessor,
BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>, BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>,
SwitchScreenAction<LimitsSettingsMenu> SwitchScreenAction<LimitsSettingsMenu>
>; >;
using NMotMaxRpmChangeScreen = makeComponent< using NMotMaxRpmChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETNMOTMAX>, StaticText<TEXT_NMOTMAX>,
NMotMaxRpmAccessor, NMotMaxRpmAccessor,
BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>, BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>,
SwitchScreenAction<LimitsSettingsMenu> SwitchScreenAction<LimitsSettingsMenu>
>; >;
using FieldWeakMaxChangeScreen = makeComponent< using FieldWeakMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETFIELDWEAKMAX>, StaticText<TEXT_FIELDWEAKMAX>,
FieldWeakMaxAccessor, FieldWeakMaxAccessor,
BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>, BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>,
SwitchScreenAction<LimitsSettingsMenu> SwitchScreenAction<LimitsSettingsMenu>
>; >;
using PhaseAdvMaxChangeScreen = makeComponent< using PhaseAdvMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETPHASEADVMAX>, StaticText<TEXT_PHASEADVMAX>,
PhaseAdvMaxAccessor, PhaseAdvMaxAccessor,
BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>, BackActionInterface<SwitchScreenAction<LimitsSettingsMenu>>,
SwitchScreenAction<LimitsSettingsMenu> SwitchScreenAction<LimitsSettingsMenu>
@ -68,13 +74,13 @@ class LimitsSettingsMenu :
public: public:
LimitsSettingsMenu() LimitsSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETIMOTMAX>, SwitchScreenAction<IMotMaxChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_IMOTMAX, IMotMaxAccessor>, SwitchScreenAction<IMotMaxChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETIDCMAX>, SwitchScreenAction<IDcMaxChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_IDCMAX, IDcMaxAccessor>, SwitchScreenAction<IDcMaxChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETNMOTMAXKMH>, SwitchScreenAction<NMotMaxKmhChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_NMOTMAXKMH, NMotMaxKmhAccessor>, SwitchScreenAction<NMotMaxKmhChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETNMOTMAX>, SwitchScreenAction<NMotMaxRpmChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_NMOTMAX, NMotMaxRpmAccessor>, SwitchScreenAction<NMotMaxRpmChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETFIELDWEAKMAX>, SwitchScreenAction<FieldWeakMaxChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_FIELDWEAKMAX, FieldWeakMaxAccessor>, SwitchScreenAction<FieldWeakMaxChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETPHASEADVMAX>, SwitchScreenAction<PhaseAdvMaxChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PHASEADVMAX, PhaseAdvMaxAccessor>, SwitchScreenAction<PhaseAdvMaxChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
} }
}; };
} // namespace } // namespace

View File

@ -130,13 +130,13 @@ constexpr char TEXT_REVERSEBEEPDURATION1[] = "Reverse beep duration1";
//constexpr char TEXT_BACK[] = "Back"; //constexpr char TEXT_BACK[] = "Back";
//LimitsSettingsMenu //LimitsSettingsMenu
//constexpr char TEXT_LIMITSSETTINGS[] = "Common settings"; //constexpr char TEXT_LIMITSSETTINGS[] = "Limit settings";
constexpr char TEXT_SETIMOTMAX[] = "Set iMotMax"; constexpr char TEXT_IMOTMAX[] = "iMotMax";
constexpr char TEXT_SETIDCMAX[] = "Set iDcMax"; constexpr char TEXT_IDCMAX[] = "iDcMax";
constexpr char TEXT_SETNMOTMAXKMH[] = "Set nMotMax (kmh)"; constexpr char TEXT_NMOTMAXKMH[] = "nMotMaxKmh";
constexpr char TEXT_SETNMOTMAX[] = "Set nMotMax"; constexpr char TEXT_NMOTMAX[] = "nMotMax";
constexpr char TEXT_SETFIELDWEAKMAX[] = "Set fieldWeakMax"; constexpr char TEXT_FIELDWEAKMAX[] = "fldWkMax";
constexpr char TEXT_SETPHASEADVMAX[] = "Set phaseAdvMax"; constexpr char TEXT_PHASEADVMAX[] = "phsAdvMax";
//constexpr char TEXT_BACK[] = "Back"; //constexpr char TEXT_BACK[] = "Back";
//DebugMenu //DebugMenu