#include "boardcomputerhardwaresettingsmenu.h" // 3rdparty lib includes #include #include #include #include #include #include #include // local includes #include "accessors/settingsaccessors.h" #include "bobbycheckbox.h" #include "displays/bobbychangevaluedisplay.h" #include "displays/buttoncalibratedisplay.h" #include "displays/menus/extrabuttoncalibratemenu.h" #include "displays/menus/lockscreensettingsmenu.h" #include "displays/menus/setupquickactionsmenu.h" #include "displays/menus/timersmenu.h" #include "displays/potiscalibratedisplay.h" #include "displays/setupdisplay.h" #include "icons/lock.h" #ifdef FEATURE_JOYSTICK #include "displays/joystickdebugdisplay.h" #endif namespace { constexpr char TEXT_BOARDCOMPUTERHARDWARESETTINGS[] = "Boardcomputer H/W settings"; constexpr char TEXT_BUTTONCALIBRATE[] = "Button Calibrate"; constexpr char TEXT_EXTRABUTTONCALIBRATE[] = "Cal other Buttons"; constexpr char TEXT_QUICKACTIONS[] = "Quick Actions"; constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings"; constexpr char TEXT_POTISCALIBRATE[] = "Potis Calibrate"; #ifdef FEATURE_JOYSTICK constexpr char TEXT_JOYSTICK[] = "Debug Joystick"; #endif constexpr char TEXT_FLIPDISPLAY[] = "Flip Display"; constexpr char TEXT_SAMPLECOUNT[] = "sampleCount"; constexpr char TEXT_GASMIN[] = "gasMin"; constexpr char TEXT_GASMAX[] = "gasMax"; constexpr char TEXT_BREMSMIN[] = "bremsMin"; constexpr char TEXT_BREMSMAX[] = "bremsMax"; constexpr char TEXT_DPADDEBOUNCE[] = "dpadDebounce"; constexpr char TEXT_BUTTONDELAY[] = "button read delay"; constexpr char TEXT_GAMETRAKCALIBRATE[] = "Gametrak calibrate"; constexpr char TEXT_SETGAMETRAKXMIN[] = "Set gametrakXMin"; constexpr char TEXT_SETGAMETRAKXMAX[] = "Set gametrakXMax"; constexpr char TEXT_SETGAMETRAKYMIN[] = "Set gametrakYMin"; constexpr char TEXT_SETGAMETRAKYMAX[] = "Set gametrakYMax"; constexpr char TEXT_SETGAMETRAKDISTMIN[] = "Set gametrakDistMin"; constexpr char TEXT_SETGAMETRAKDISTMAX[] = "Set gametrakDistMax"; constexpr char TEXT_TIMERS[] = "Timers"; constexpr char TEXT_BACK[] = "Back"; struct GasText : public virtual espgui::TextInterface { public: std::string text() const override { return fmt::format("gas: {}: {}", raw_gas ? std::to_string(*raw_gas) : "?", gas ? fmt::format("{:.02f}", *gas) : "?"); } }; struct BremsText : public virtual espgui::TextInterface { public: std::string text() const override { return fmt::format("brems: {}: {}", raw_brems ? std::to_string(*raw_brems) : "?", brems ? fmt::format("{:.02f}", *brems) : "?"); } }; using SampleCountChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, SampleCountAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GasMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GasMinAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GasMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GasMaxAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using BremsMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BremsMinAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using BremsMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, BremsMaxAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; #if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) || defined (DPAD_BOARDCOMPUTER_V2) using DPadDebounceChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, DPadDebounceAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using ButtonDelayChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, ButtonDelayAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; #endif #ifdef FEATURE_GAMETRAK struct GametrakXText : public virtual TextInterface { public: std::string text() const override { return fmt::format("gametrakX: {}: {:.02f}", raw_gametrakX, gametrakX); } }; struct GametrakYText : public virtual TextInterface { public: std::string text() const override { return fmt::format("gametrakY: {}: {:.02f}", raw_gametrakY, gametrakY); } }; struct GametrakDistText : public virtual TextInterface { public: std::string text() const override { return fmt::format("gametrakDist: {}: {:.02f}", raw_gametrakDist, gametrakDist); } }; using GametrakXMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakXMinAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GametrakXMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakXMaxAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GametrakYMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakYMinAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GametrakYMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakYMaxAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GametrakDistMinChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakDistMinAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; using GametrakDistMaxChangeScreen = espgui::makeComponent< BobbyChangeValueDisplay, espgui::StaticText, GametrakDistMaxAccessor, espgui::ConfirmActionInterface, espgui::BackActionInterface >; #endif } // namespace using namespace espgui; BoardcomputerHardwareSettingsMenu::BoardcomputerHardwareSettingsMenu() { constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::lock>>>(); constructMenuItem>>(SetupStep::BASIC_BUTTONS, true); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem>>(SetupStep::CALIBRATE_POTIS, true); #ifdef FEATURE_JOYSTICK constructMenuItem, PushScreenAction>>(); #endif constructMenuItem, BobbyCheckbox, FlipScreenAccessor>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); #if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) || defined (DPAD_BOARDCOMPUTER_V2) constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); #endif #ifdef FEATURE_GAMETRAK constructMenuItem, constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); #endif constructMenuItem>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PopScreenAction, StaticMenuItemIcon<&icons::back>>>(); } std::string BoardcomputerHardwareSettingsMenu::text() const { return TEXT_BOARDCOMPUTERHARDWARESETTINGS; } void BoardcomputerHardwareSettingsMenu::back() { popScreen(); }