diff --git a/components/esp-gui-lib b/components/esp-gui-lib index 9cf1c9a..3d01a04 160000 --- a/components/esp-gui-lib +++ b/components/esp-gui-lib @@ -1 +1 @@ -Subproject commit 9cf1c9a78c4af48d6ee7cc6592179cc4cf7f3997 +Subproject commit 3d01a04aa4bb8554887fd233963e205ccf2b7933 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index a4890cd..d2be5da 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -36,6 +36,7 @@ set(headers bmsutils.h buildserver.h buttons.h + bobbybuttons.h can.h changevaluedisplay_bluetoothmode.h changevaluedisplay_controlmode.h @@ -52,6 +53,12 @@ set(headers debuginputhandler.h debugtexthelpers.h displays/bmsdisplay.h + displays/bobbychangevaluedisplay.h + displays/bobbydisplay.h + displays/bobbydisplaywithtitle.h + displays/bobbygraphdisplay.h + displays/bobbymenudisplay.h + displays/bobbysplitgraphdisplay.h displays/calibratedisplay.h displays/calibratevoltagedisplay.h displays/qrdisplay.h @@ -63,6 +70,7 @@ set(headers displays/garagedisplay.h displays/ledstripcolorsdisplay.h displays/lockscreen.h + displays/menudisplaywithtime.cpp displays/menus/aboutmenu.h displays/menus/accesspointwifisettingsmenu.h displays/menus/batterydebugmenu.h @@ -211,7 +219,7 @@ set(headers webserver_settings.h webserver_stringsettings.h widgets/doubleprogressbar.h - widgets/menudisplaywithtime.h + displays/menudisplaywithtime.h wifi_bobbycar.h wifitexthelpers.h ) @@ -254,6 +262,7 @@ set(sources bmsutils.cpp buildserver.cpp buttons.cpp + bobbybuttons.cpp can.cpp changevaluedisplay_bluetoothmode.cpp changevaluedisplay_controlmode.cpp @@ -270,6 +279,12 @@ set(sources debuginputhandler.cpp debugtexthelpers.cpp displays/bmsdisplay.cpp + displays/bobbychangevaluedisplay.cpp + displays/bobbydisplay.cpp + displays/bobbydisplaywithtitle.cpp + displays/bobbygraphdisplay.cpp + displays/bobbymenudisplay.cpp + displays/bobbysplitgraphdisplay.cpp displays/calibratedisplay.cpp displays/calibratevoltagedisplay.cpp displays/qrdisplay.cpp @@ -430,7 +445,6 @@ set(sources webserver_settings.cpp webserver_stringsettings.cpp widgets/doubleprogressbar.cpp - widgets/menudisplaywithtime.cpp wifi_bobbycar.cpp wifitexthelpers.cpp ) diff --git a/main/bobbybuttons.cpp b/main/bobbybuttons.cpp new file mode 100644 index 0000000..58318a0 --- /dev/null +++ b/main/bobbybuttons.cpp @@ -0,0 +1,65 @@ +#include "bobbybuttons.h" + +void BobbyButtons::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +void BobbyButtons::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +void BobbyButtons::buttonPressed(espgui::Button button) +{ + //Base::buttonPressed(button); + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +void BobbyButtons::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/bobbybuttons.h b/main/bobbybuttons.h new file mode 100644 index 0000000..db93d2f --- /dev/null +++ b/main/bobbybuttons.h @@ -0,0 +1,26 @@ +#pragma once + +// 3rdparty lib includes +#include "buttonsinterface.h" + +enum BobbyButton +{ + Profile0 = espgui::Button::ButtonMax + 1, + Profile1, + Profile2, + Profile3, + Left2, + Right2, + Up2, + Down2 +}; + +class BobbyButtons : public virtual espgui::ButtonsInterface +{ +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; diff --git a/main/displays/bmsdisplay.cpp b/main/displays/bmsdisplay.cpp index bf89591..b462f12 100644 --- a/main/displays/bmsdisplay.cpp +++ b/main/displays/bmsdisplay.cpp @@ -11,6 +11,8 @@ using namespace espgui; void BmsDisplay::initScreen() { + Base::initScreen(); + tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE, TFT_BLACK); @@ -43,6 +45,8 @@ void BmsDisplay::initScreen() void BmsDisplay::redraw() { + Base::redraw(); + if (bluetoothSerial.hasClient()) tft.setTextColor(TFT_GREEN, TFT_BLACK); else @@ -90,16 +94,15 @@ void BmsDisplay::redraw() m_cycleLabel.clear(); } -void BmsDisplay::rotate(int offset) +void BmsDisplay::buttonPressed(espgui::Button button) { - if (offset < 0) - switchScreen(); - else if (offset > 0) - switchScreen(); -} + Base::buttonPressed(button); -void BmsDisplay::confirm() -{ - switchScreen(); + switch (button) + { + case Button::Right: switchScreen(); break; + case Button::Up: switchScreen(); break; + case Button::Down: switchScreen(); + } } #endif diff --git a/main/displays/bmsdisplay.h b/main/displays/bmsdisplay.h index 46701cc..2e877ec 100644 --- a/main/displays/bmsdisplay.h +++ b/main/displays/bmsdisplay.h @@ -3,24 +3,26 @@ #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) // 3rdparty lib includes #include +#include +#include +#include // local includes -#include "display.h" -#include "actions/switchscreenaction.h" #include "globals.h" #include "bmsutils.h" -#include "widgets/label.h" -#include "screenmanager.h" +#include "bobbydisplay.h" class BmsDisplay : - public espgui::Display, - public espgui::DummyBack + public BobbyDisplay, + public espgui::DummyBack { + using Base = BobbyDisplay; + public: void initScreen() override; void redraw() override; - void confirm() override; - void rotate(int offset) override; + + void buttonPressed(espgui::Button button) override; espgui::Label m_statusLabel{200, 0}; diff --git a/main/displays/bobbychangevaluedisplay.cpp b/main/displays/bobbychangevaluedisplay.cpp new file mode 100644 index 0000000..780a2ad --- /dev/null +++ b/main/displays/bobbychangevaluedisplay.cpp @@ -0,0 +1 @@ +#include "bobbychangevaluedisplay.h" diff --git a/main/displays/bobbychangevaluedisplay.h b/main/displays/bobbychangevaluedisplay.h new file mode 100644 index 0000000..ea6d504 --- /dev/null +++ b/main/displays/bobbychangevaluedisplay.h @@ -0,0 +1,89 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "bobbybuttons.h" + +template +class BobbyChangeValueDisplay : public espgui::ChangeValueDisplay +{ + using Base = espgui::ChangeValueDisplay; + +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; + +template +void BobbyChangeValueDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +template +void BobbyChangeValueDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +template +void BobbyChangeValueDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +template +void BobbyChangeValueDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/bobbydisplay.cpp b/main/displays/bobbydisplay.cpp new file mode 100644 index 0000000..09b0c50 --- /dev/null +++ b/main/displays/bobbydisplay.cpp @@ -0,0 +1,66 @@ +#include "bobbydisplay.h" + +void BobbyDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +void BobbyDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +void BobbyDisplay::buttonPressed(espgui::Button button) +{ + //Base::buttonPressed(button); + + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +void BobbyDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/bobbydisplay.h b/main/displays/bobbydisplay.h new file mode 100644 index 0000000..0a542f0 --- /dev/null +++ b/main/displays/bobbydisplay.h @@ -0,0 +1,19 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "bobbybuttons.h" + +class BobbyDisplay : public espgui::Display +{ + using Base = espgui::Display; + +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; diff --git a/main/displays/bobbydisplaywithtitle.cpp b/main/displays/bobbydisplaywithtitle.cpp new file mode 100644 index 0000000..088ea63 --- /dev/null +++ b/main/displays/bobbydisplaywithtitle.cpp @@ -0,0 +1,66 @@ +#include "bobbydisplaywithtitle.h" + +void BobbyDisplayWithTitle::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +void BobbyDisplayWithTitle::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +void BobbyDisplayWithTitle::buttonPressed(espgui::Button button) +{ + //Base::buttonPressed(button); + + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +void BobbyDisplayWithTitle::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/bobbydisplaywithtitle.h b/main/displays/bobbydisplaywithtitle.h new file mode 100644 index 0000000..84e8884 --- /dev/null +++ b/main/displays/bobbydisplaywithtitle.h @@ -0,0 +1,19 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "bobbybuttons.h" + +class BobbyDisplayWithTitle : public espgui::DisplayWithTitle +{ + using Base = espgui::DisplayWithTitle; + +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; diff --git a/main/displays/bobbygraphdisplay.cpp b/main/displays/bobbygraphdisplay.cpp new file mode 100644 index 0000000..31e66e4 --- /dev/null +++ b/main/displays/bobbygraphdisplay.cpp @@ -0,0 +1 @@ +#include "bobbygraphdisplay.h" diff --git a/main/displays/bobbygraphdisplay.h b/main/displays/bobbygraphdisplay.h new file mode 100644 index 0000000..6eedcbc --- /dev/null +++ b/main/displays/bobbygraphdisplay.h @@ -0,0 +1,89 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "bobbybuttons.h" + +template +class BobbyGraphDisplay : public espgui::GraphDisplay +{ + using Base = espgui::GraphDisplay; + +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; + +template +void BobbyGraphDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +template +void BobbyGraphDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +template +void BobbyGraphDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +template +void BobbyGraphDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/bobbymenudisplay.cpp b/main/displays/bobbymenudisplay.cpp new file mode 100644 index 0000000..91adb16 --- /dev/null +++ b/main/displays/bobbymenudisplay.cpp @@ -0,0 +1,66 @@ +#include "bobbymenudisplay.h" + +void BobbyMenuDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +void BobbyMenuDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +void BobbyMenuDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +void BobbyMenuDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/bobbymenudisplay.h b/main/displays/bobbymenudisplay.h new file mode 100644 index 0000000..bb94e3a --- /dev/null +++ b/main/displays/bobbymenudisplay.h @@ -0,0 +1,19 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "bobbybuttons.h" + +class BobbyMenuDisplay : public espgui::MenuDisplay +{ + using Base = espgui::MenuDisplay; + +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; diff --git a/main/displays/bobbysplitgraphdisplay.cpp b/main/displays/bobbysplitgraphdisplay.cpp new file mode 100644 index 0000000..8176b27 --- /dev/null +++ b/main/displays/bobbysplitgraphdisplay.cpp @@ -0,0 +1 @@ +#include "bobbysplitgraphdisplay.h" diff --git a/main/displays/bobbysplitgraphdisplay.h b/main/displays/bobbysplitgraphdisplay.h new file mode 100644 index 0000000..45c7fab --- /dev/null +++ b/main/displays/bobbysplitgraphdisplay.h @@ -0,0 +1,90 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "bobbybuttons.h" + +template +class BobbySplitGraphDisplay : public espgui::SplitGraphDisplay +{ + using Base = espgui::SplitGraphDisplay; + +public: + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; + +template +void BobbySplitGraphDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); + switch (button) + { + using espgui::Button; + case 0: buttonPressed(Button::Left); break; + case 1: buttonPressed(Button::Right); break; + case 2: buttonPressed(Button::Up); break; + case 3: buttonPressed(Button::Down); break; + case 4: buttonPressed(Button(BobbyButton::Profile0)); break; + case 5: buttonPressed(Button(BobbyButton::Profile1)); break; + case 6: buttonPressed(Button(BobbyButton::Profile2)); break; + case 7: buttonPressed(Button(BobbyButton::Profile3)); break; + case 8: buttonPressed(Button(BobbyButton::Left2)); break; + case 9: buttonPressed(Button(BobbyButton::Right2)); break; + case 10: buttonPressed(Button(BobbyButton::Up2)); break; + case 11: buttonPressed(Button(BobbyButton::Down2)); break; + } +} + +template +void BobbySplitGraphDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); + switch (button) + { + using espgui::Button; + case 0: buttonReleased(Button::Left); break; + case 1: buttonReleased(Button::Right); break; + case 2: buttonReleased(Button::Up); break; + case 3: buttonReleased(Button::Down); break; + case 4: buttonReleased(Button(BobbyButton::Profile0)); break; + case 5: buttonReleased(Button(BobbyButton::Profile1)); break; + case 6: buttonReleased(Button(BobbyButton::Profile2)); break; + case 7: buttonReleased(Button(BobbyButton::Profile3)); break; + case 8: buttonReleased(Button(BobbyButton::Left2)); break; + case 9: buttonReleased(Button(BobbyButton::Right2)); break; + case 10: buttonReleased(Button(BobbyButton::Up2)); break; + case 11: buttonReleased(Button(BobbyButton::Down2)); break; + } +} + +template +void BobbySplitGraphDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (BobbyButton(button)) + { + case BobbyButton::Profile0: /* TODO */ break; + case BobbyButton::Profile1: /* TODO */ break; + case BobbyButton::Profile2: /* TODO */ break; + case BobbyButton::Profile3: /* TODO */ break; + case BobbyButton::Left2: /* TODO */ break; + case BobbyButton::Right2: /* TODO */ break; + case BobbyButton::Up2: /* TODO */ break; + case BobbyButton::Down2: /* TODO */ break; + default:; + } +} + +template +void BobbySplitGraphDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} + diff --git a/main/displays/calibratedisplay.cpp b/main/displays/calibratedisplay.cpp index d007897..7d94e18 100644 --- a/main/displays/calibratedisplay.cpp +++ b/main/displays/calibratedisplay.cpp @@ -168,97 +168,107 @@ void CalibrateDisplay::stop() } } -void CalibrateDisplay::rotate(int offset) +void CalibrateDisplay::buttonPressed(espgui::Button button) { - Base::rotate(offset); + Base::buttonPressed(button); - m_selectedButton += offset; - - if (m_selectedButton < 0) - m_selectedButton = 1; - if (m_selectedButton > 1) - m_selectedButton = 0; -} - -void CalibrateDisplay::confirm() -{ - switch (m_selectedButton) + switch (button) { - case 0: // left button pressed - if (!raw_gas || !raw_brems || !m_gas || !m_brems) - return; + using espgui::Button; + case Button::Up: + m_selectedButton--; + if (m_selectedButton < 0) + m_selectedButton = 1; + + break; + case Button::Down: + m_selectedButton++; + + if (m_selectedButton > 1) + m_selectedButton = 0; + + break; + case Button::Left: + back: switch (m_status) { case Status::Begin: - m_status = Status::GasMin; - break; - case Status::GasMin: - m_gasMin = *raw_gas; - m_status = Status::GasMax; - break; - case Status::GasMax: - m_gasMax = *raw_gas; - m_status = Status::BremsMin; - { - const auto dead = (m_gasMax - m_gasMin)/20; - m_gasMin += dead; - m_gasMax -= dead; - } - break; - case Status::BremsMin: - m_bremsMin = *raw_brems; - m_status = Status::BremsMax; - break; - case Status::BremsMax: - m_bremsMax = *raw_brems; - m_status = Status::Confirm; - { - const auto dead = (m_bremsMax - m_bremsMin)/20; - m_bremsMin += dead; - m_bremsMax -= dead; - } - break; - case Status::Confirm: - if (*m_gas > 100 || *m_brems > 100) - return; - copyToSettings(); - saveSettings(); if (m_bootup) espgui::switchScreen(); + else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) + { + espgui::switchScreen(); + settings.lockscreen.locked = false; + saveSettings(); + } else espgui::switchScreen(); + break; + case Status::GasMin: + case Status::GasMax: + case Status::BremsMin: + case Status::BremsMax: + case Status::Confirm: + m_selectedButton = 0; + m_status = Status::Begin; + copyFromSettings(); } - break; - case 1: // right button pressed - back(); - } -} -void CalibrateDisplay::back() -{ - switch (m_status) - { - case Status::Begin: - if (m_bootup) - espgui::switchScreen(); - else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) - { - espgui::switchScreen(); - settings.lockscreen.locked = false; - saveSettings(); - } - else - espgui::switchScreen(); break; - case Status::GasMin: - case Status::GasMax: - case Status::BremsMin: - case Status::BremsMax: - case Status::Confirm: - m_selectedButton = 0; - m_status = Status::Begin; - copyFromSettings(); + case Button::Right: + switch (m_selectedButton) + { + case 0: // left button pressed + if (!raw_gas || !raw_brems || !m_gas || !m_brems) + return; + + switch (m_status) + { + case Status::Begin: + m_status = Status::GasMin; + break; + case Status::GasMin: + m_gasMin = *raw_gas; + m_status = Status::GasMax; + break; + case Status::GasMax: + m_gasMax = *raw_gas; + m_status = Status::BremsMin; + { + const auto dead = (m_gasMax - m_gasMin)/20; + m_gasMin += dead; + m_gasMax -= dead; + } + break; + case Status::BremsMin: + m_bremsMin = *raw_brems; + m_status = Status::BremsMax; + break; + case Status::BremsMax: + m_bremsMax = *raw_brems; + m_status = Status::Confirm; + { + const auto dead = (m_bremsMax - m_bremsMin)/20; + m_bremsMin += dead; + m_bremsMax -= dead; + } + break; + case Status::Confirm: + if (*m_gas > 100 || *m_brems > 100) + return; + copyToSettings(); + saveSettings(); + if (m_bootup) + espgui::switchScreen(); + else + espgui::switchScreen(); + } + break; + case 1: // right button pressed + goto back; + } + break; } } diff --git a/main/displays/calibratedisplay.h b/main/displays/calibratedisplay.h index 7846e13..d2ad87d 100644 --- a/main/displays/calibratedisplay.h +++ b/main/displays/calibratedisplay.h @@ -7,24 +7,24 @@ // 3rdparty lib includes #include #include -#include #include #include #include // local includes +#include "bobbydisplaywithtitle.h" #include "globals.h" #include "utils.h" #include "texts.h" #include "modes/ignoreinputmode.h" -class CalibrateDisplay : public espgui::DisplayWithTitle +class CalibrateDisplay : public BobbyDisplayWithTitle { - using Base = espgui::DisplayWithTitle; + using Base = BobbyDisplayWithTitle; public: CalibrateDisplay() = default; - CalibrateDisplay(bool bootup); + explicit CalibrateDisplay(bool bootup); std::string text() const override; void start() override; @@ -33,10 +33,7 @@ public: void redraw() override; void stop() override; - void rotate(int offset) override; - - void confirm() override; - void back() override; + void buttonPressed(espgui::Button button) override; private: void copyFromSettings(); diff --git a/main/displays/calibratevoltagedisplay.h b/main/displays/calibratevoltagedisplay.h index 7578b45..1c27ab3 100644 --- a/main/displays/calibratevoltagedisplay.h +++ b/main/displays/calibratevoltagedisplay.h @@ -1,21 +1,23 @@ #pragma once +// 3rdparty lib includes +#include +#include +#include +#include +#include + // Local includes -#include "menudisplay.h" +#include "bobbymenudisplay.h" #include "utils.h" -#include "menuitem.h" -#include "icons/back.h" #include "icons/settings.h" #include "texts.h" -#include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" #include "battery.h" #include "menus/batterymenu.h" -#include "widgets/label.h" #include "globals.h" class CalibrateVoltageDisplay : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/gameoflifedisplay.cpp b/main/displays/gameoflifedisplay.cpp index 1bc1f70..d3ea5c5 100644 --- a/main/displays/gameoflifedisplay.cpp +++ b/main/displays/gameoflifedisplay.cpp @@ -11,18 +11,24 @@ void GameOfLifeDisplay::start() { + Base::start(); + m_grid = std::make_unique>(); m_newgrid = std::make_unique>(); } void GameOfLifeDisplay::initScreen() { + Base::initScreen(); + espgui::tft.setRotation(3); espgui::tft.fillScreen(TFT_BLACK); } void GameOfLifeDisplay::redraw() { + Base::redraw(); + if (gen == 0) { espgui::tft.fillScreen(TFT_BLACK); @@ -40,19 +46,26 @@ void GameOfLifeDisplay::redraw() void GameOfLifeDisplay::stop() { + Base::stop(); + espgui::tft.setRotation(0); m_grid = nullptr; m_newgrid = nullptr; } -void GameOfLifeDisplay::confirm() +void GameOfLifeDisplay::buttonPressed(espgui::Button button) { - espgui::switchScreen(); -} + Base::buttonPressed(button); -void GameOfLifeDisplay::back() -{ - espgui::switchScreen(); + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + espgui::switchScreen(); + break; + default:; + } } void GameOfLifeDisplay::drawGrid() diff --git a/main/displays/gameoflifedisplay.h b/main/displays/gameoflifedisplay.h index fe627f9..d2844f7 100644 --- a/main/displays/gameoflifedisplay.h +++ b/main/displays/gameoflifedisplay.h @@ -5,11 +5,11 @@ #include // local includes -#include "display.h" +#include "bobbydisplay.h" -class GameOfLifeDisplay : public espgui::Display +class GameOfLifeDisplay : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; public: void start() override; @@ -17,8 +17,7 @@ public: void redraw() override; void stop() override; - void confirm() override; - void back() override; + void buttonPressed(espgui::Button button); private: diff --git a/main/displays/gametrakcalibratedisplay.h b/main/displays/gametrakcalibratedisplay.h index da5a2b1..690034a 100644 --- a/main/displays/gametrakcalibratedisplay.h +++ b/main/displays/gametrakcalibratedisplay.h @@ -1,20 +1,26 @@ #pragma once +// system includes #include #include -#include "display.h" -#include "actions/switchscreenaction.h" +// 3rdparty lib includes +#include +#include +#include + +// local includes +#include "bobbydisplay.h" #include "globals.h" #include "texts.h" -#include "widgets/label.h" -#include "widgets/progressbar.h" #include "modes/ignoreinputmode.h" namespace { #ifdef FEATURE_GAMETRAK -class GametrakCalibrateDisplay : public Display, public ConfirmActionInterface>, public BackActionInterface> +class GametrakCalibrateDisplay : public BobbyDisplay, public ConfirmActionInterface>, public BackActionInterface> { + using Base = BobbyDisplay; + public: void initScreen() override; void redraw() override; @@ -38,6 +44,8 @@ private: void GametrakCalibrateDisplay::initScreen() { + Base::initScreen(); + tft.fillScreen(TFT_BLACK); tft.setTextFont(4); tft.setTextColor(TFT_YELLOW); @@ -57,6 +65,8 @@ void GametrakCalibrateDisplay::initScreen() void GametrakCalibrateDisplay::redraw() { + Base::redraw(); + m_labels[0].redraw(fmt::format("{:.02f}", gametrakX)); m_labels[1].redraw(std::to_string(raw_gametrakX)); diff --git a/main/displays/garagedisplay.cpp b/main/displays/garagedisplay.cpp index 8592dbd..2bc51e4 100644 --- a/main/displays/garagedisplay.cpp +++ b/main/displays/garagedisplay.cpp @@ -19,10 +19,13 @@ #ifdef FEATURE_GARAGE void GarageDisplay::start() { + Base::start(); } void GarageDisplay::initScreen() { + Base::initScreen(); + espgui::tft.fillScreen(TFT_BLACK); espgui::tft.setTextFont(4); espgui::tft.setTextColor(TFT_YELLOW); @@ -38,22 +41,30 @@ void GarageDisplay::initScreen() void GarageDisplay::redraw() { + Base::redraw(); } -void GarageDisplay::confirm() +void GarageDisplay::buttonPressed(espgui::Button button) { -#ifdef FEATURE_ESPNOW - if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:garage:{}", "TOKEN")); error != ESP_OK) + Base::buttonPressed(button); + + switch (button) { - ESP_LOGE("BOBBY", "send_espnow_message() failed with: %s", esp_err_to_name(error)); - return; + using espgui::Button; + case Button::Left: + espgui::switchScreen(); + break; + case Button::Right: +#ifdef FEATURE_ESPNOW + if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:garage:{}", "TOKEN")); error != ESP_OK) + { + ESP_LOGE("BOBBY", "send_espnow_message() failed with: %s", esp_err_to_name(error)); + return; + } +#endif + espgui::switchScreen(); + break; + default:; } - espgui::switchScreen(); -#endif -} - -void GarageDisplay::back() -{ - espgui::switchScreen(); } #endif diff --git a/main/displays/garagedisplay.h b/main/displays/garagedisplay.h index db53db1..e50f9c7 100644 --- a/main/displays/garagedisplay.h +++ b/main/displays/garagedisplay.h @@ -1,17 +1,19 @@ #pragma once // local includes -#include "display.h" +#include "bobbydisplay.h" #ifdef FEATURE_GARAGE -class GarageDisplay : public espgui::Display +class GarageDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: void start() override; void initScreen() override; void redraw() override; - void confirm() override; - void back() override; + + void buttonPressed(espgui::Button button) override; private: }; diff --git a/main/displays/ledstripcolorsdisplay.cpp b/main/displays/ledstripcolorsdisplay.cpp index 22732eb..5b17d88 100644 --- a/main/displays/ledstripcolorsdisplay.cpp +++ b/main/displays/ledstripcolorsdisplay.cpp @@ -23,6 +23,7 @@ #include "displays/menus/ledstripmenu.h" #ifdef FEATURE_LEDSTRIP +namespace { int8_t selected_side = 7; int8_t selected_color; bool state_select_color{false}; @@ -49,25 +50,13 @@ const std::array tft_colors = { TFT_BLUE, TFT_MAGENTA }; +} // namespace std::string LedstripColorsDisplay::text() const { return TEXT_LEDSTRIPCOLORMENU; } -void LedstripColorsDisplay::back() -{ - if(!state_select_color) - { - espgui::switchScreen(); - } - else - { - state_select_color = false; - espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); - } -} - void LedstripColorsDisplay::initScreen() { Base::initScreen(); @@ -102,10 +91,42 @@ void LedstripColorsDisplay::redraw() } } -void LedstripColorsDisplay::rotate(int offset) +void LedstripColorsDisplay::buttonPressed(espgui::Button button) { - if (offset < 0) + Base::buttonPressed(button); + + switch (button) { + using espgui::Button; + case Button::Left: + if(!state_select_color) + { + espgui::switchScreen(); + } + else + { + state_select_color = false; + espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); + } + + break; + case Button::Right: + if(!state_select_color) + { + state_select_color = true; + drawColors(); + } + else + { + ledstrip_custom_colors[selected_side] = Colors[selected_color]; + // Uncomment to close select color menu on color select + /* + state_select_color = false; + espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); + */ + } + break; + case Button::Up: if (state_select_color) { selected_color++; @@ -122,9 +143,21 @@ void LedstripColorsDisplay::rotate(int offset) selected_side = 0; } } - } - else if (offset > 0) - { + + /* TODO commander: move into redraw method */ + if (state_select_color) + { + drawColors(); + } + else + { + espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); + clearSides(); + drawSide(static_cast(selected_side), TFT_GOLD); + } + + break; + case Button::Down: if (state_select_color) { selected_color--; @@ -141,35 +174,20 @@ void LedstripColorsDisplay::rotate(int offset) selected_side = 7; } } - } - if (state_select_color) - { - drawColors(); - } - else - { - espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); - clearSides(); - drawSide(static_cast(selected_side), TFT_GOLD); - } -} + /* TODO commander: move into redraw method */ + if (state_select_color) + { + drawColors(); + } + else + { + espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); + clearSides(); + drawSide(static_cast(selected_side), TFT_GOLD); + } -void LedstripColorsDisplay::confirm() -{ - if(!state_select_color) - { - state_select_color = true; - drawColors(); - } - else - { - ledstrip_custom_colors[selected_side] = Colors[selected_color]; - // Uncomment to close select color menu on color select - /* - state_select_color = false; - espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); - */ + break; } } diff --git a/main/displays/ledstripcolorsdisplay.h b/main/displays/ledstripcolorsdisplay.h index bd14554..46ff229 100644 --- a/main/displays/ledstripcolorsdisplay.h +++ b/main/displays/ledstripcolorsdisplay.h @@ -4,33 +4,32 @@ #include // 3rdparty lib includes -#include #include // local includes +#include "bobbydisplaywithtitle.h" #include "ledstrip.h" #ifdef FEATURE_LEDSTRIP -extern int8_t selected_side; -extern int8_t selected_color; -extern bool state_select_color; -extern bool last_state; +//extern int8_t selected_side; +//extern int8_t selected_color; +//extern bool state_select_color; +//extern bool last_state; -extern const std::array Colors; +//extern const std::array Colors; -extern const std::array tft_colors; +//extern const std::array tft_colors; -class LedstripColorsDisplay : public espgui::DisplayWithTitle +class LedstripColorsDisplay : public BobbyDisplayWithTitle { - using Base = espgui::DisplayWithTitle; + using Base = BobbyDisplayWithTitle; public: std::string text() const override; - void back() override; void initScreen() override; void redraw() override; - void rotate(int offset) override; - void confirm() override; + + void buttonPressed(espgui::Button button) override; void drawColors(); void drawSide(Bobbycar_Side side, unsigned int color); diff --git a/main/displays/lockscreen.cpp b/main/displays/lockscreen.cpp index 414e86e..b0d5c9a 100644 --- a/main/displays/lockscreen.cpp +++ b/main/displays/lockscreen.cpp @@ -14,6 +14,8 @@ void Lockscreen::start() { + Base::start(); + m_numbers = {0,0,0,0}; m_currentIndex = 0; m_pressed = false; @@ -33,6 +35,8 @@ void Lockscreen::start() void Lockscreen::initScreen() { + Base::initScreen(); + espgui::tft.fillScreen(TFT_BLACK); espgui::tft.setTextFont(4); espgui::tft.setTextColor(TFT_YELLOW); @@ -66,12 +70,16 @@ void Lockscreen::initScreen() void Lockscreen::update() { + Base::update(); + // just in case someone changes that settings somehow profileButtonDisabled = !settings.lockscreen.allowPresetSwitch; } void Lockscreen::redraw() { + Base::redraw(); + if (m_pressed || m_back_pressed) { drawRect(m_currentIndex, 1, TFT_BLACK); @@ -151,21 +159,28 @@ void Lockscreen::stop() } } -void Lockscreen::confirm() +void Lockscreen::buttonPressed(espgui::Button button) { - m_pressed = true; -} + Base::buttonPressed(button); -void Lockscreen::back() -{ - if (m_currentIndex > 0) - m_currentIndex--; - m_back_pressed = true; -} - -void Lockscreen::rotate(int offset) -{ - m_rotated += offset; + switch (button) + { + using espgui::Button; + case Button::Left: + if (m_currentIndex > 0) + m_currentIndex--; + m_back_pressed = true; + break; + case Button::Right: + m_pressed = true; + break; + case Button::Up: + m_rotated--; + break; + case Button::Down: + m_rotated++; + break; + } } void Lockscreen::drawRect(int index, int offset, uint32_t color) const diff --git a/main/displays/lockscreen.h b/main/displays/lockscreen.h index 57fd890..442b12b 100644 --- a/main/displays/lockscreen.h +++ b/main/displays/lockscreen.h @@ -3,18 +3,20 @@ // system includes #include +// 3rdparty lib includes +#include + // local includes -#include "display.h" -#include "widgets/label.h" +#include "bobbydisplay.h" #include "modes/ignoreinputmode.h" #ifdef LOCKSCREEN_PLUGIN #include "ledstrip.h" #endif -class Lockscreen : public espgui::Display +class Lockscreen : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; static constexpr auto boxWidth = 35; static constexpr auto boxHeight = 50; @@ -27,9 +29,7 @@ public: void redraw() override; void stop() override; - void confirm() override; - void back() override; - void rotate(int offset) override; + void buttonPressed(espgui::Button button) override; private: void drawRect(int index, int offset, uint32_t color) const; diff --git a/main/widgets/menudisplaywithtime.cpp b/main/displays/menudisplaywithtime.cpp similarity index 80% rename from main/widgets/menudisplaywithtime.cpp rename to main/displays/menudisplaywithtime.cpp index d1aec61..c3be460 100644 --- a/main/widgets/menudisplaywithtime.cpp +++ b/main/displays/menudisplaywithtime.cpp @@ -1,5 +1,10 @@ #include "menudisplaywithtime.h" -#include "tftinstance.h" + +// 3rdparty lib includes +#include +#include + +// local includes #include "utils.h" using namespace espgui; diff --git a/main/widgets/menudisplaywithtime.h b/main/displays/menudisplaywithtime.h similarity index 68% rename from main/widgets/menudisplaywithtime.h rename to main/displays/menudisplaywithtime.h index afc968f..97d8d2a 100644 --- a/main/widgets/menudisplaywithtime.h +++ b/main/displays/menudisplaywithtime.h @@ -1,20 +1,19 @@ #pragma once -// system includes -#include - -// 3rdparty lib includes -#include +// local includes +#include "displays/bobbymenudisplay.h" namespace bobbygui { class MenuDisplayWithTime : - public espgui::MenuDisplay + public BobbyMenuDisplay { - using Base = espgui::MenuDisplay; + using Base = BobbyMenuDisplay; + public: void start() override; void redraw() override; espgui::Label m_label_currentTime{145, 6}; + private: virtual bool use_big_font() const { diff --git a/main/displays/menus/aboutmenu.h b/main/displays/menus/aboutmenu.h index eac7dec..34cff49 100644 --- a/main/displays/menus/aboutmenu.h +++ b/main/displays/menus/aboutmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class AboutMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/accesspointwifisettingsmenu.h b/main/displays/menus/accesspointwifisettingsmenu.h index 49c39f8..f8348f1 100644 --- a/main/displays/menus/accesspointwifisettingsmenu.h +++ b/main/displays/menus/accesspointwifisettingsmenu.h @@ -1,11 +1,11 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class AccessPointWifiSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/batterydebugmenu.h b/main/displays/menus/batterydebugmenu.h index 8a1a705..9c44597 100644 --- a/main/displays/menus/batterydebugmenu.h +++ b/main/displays/menus/batterydebugmenu.h @@ -1,20 +1,20 @@ #pragma once // 3rdparty lib includes -#include #include #include #include #include // Local includes +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "icons/settings.h" #include "texts.h" #include "battery.h" class BatteryDebugMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/batterymenu.cpp b/main/displays/menus/batterymenu.cpp index 5ff4919..2a64ed6 100644 --- a/main/displays/menus/batterymenu.cpp +++ b/main/displays/menus/batterymenu.cpp @@ -4,6 +4,7 @@ #include // local includes +#include "displays/bobbychangevaluedisplay.h" #include "mainmenu.h" #include "displays/calibratevoltagedisplay.h" #include "accessors/settingsaccessors.h" @@ -13,7 +14,7 @@ class CurrentBatteryStatusText : public virtual espgui::TextInterface { public: std::string text() const override { return getBatteryPercentageString(); } }; using BatteryCellSeriesChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BatterySeriesCellsAccessor, espgui::BackActionInterface>, @@ -21,7 +22,7 @@ using BatteryCellSeriesChangeScreen = espgui::makeComponent< >; using BatteryCellParallelChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BatteryParallelCellsAccessor, espgui::BackActionInterface>, @@ -29,7 +30,7 @@ using BatteryCellParallelChangeScreen = espgui::makeComponent< >; using BatteryWHperKMChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BatteryWHperKMAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/batterymenu.h b/main/displays/menus/batterymenu.h index fa06cc7..14b1b08 100644 --- a/main/displays/menus/batterymenu.h +++ b/main/displays/menus/batterymenu.h @@ -1,13 +1,13 @@ #pragma once // 3rdparty lib includes -#include #include #include #include #include // Local includes +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "icons/settings.h" #include "texts.h" @@ -16,10 +16,11 @@ #include "widgets/doubleprogressbar.h" class BatteryMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { - using Base = espgui::MenuDisplay; + using Base = BobbyMenuDisplay; + public: BatteryMenu(); diff --git a/main/displays/menus/blesettingsmenu.h b/main/displays/menus/blesettingsmenu.h index 1363c43..b358862 100644 --- a/main/displays/menus/blesettingsmenu.h +++ b/main/displays/menus/blesettingsmenu.h @@ -1,13 +1,13 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" #ifdef FEATURE_BLE class BleSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/bluetoothsettingsmenu.h b/main/displays/menus/bluetoothsettingsmenu.h index 0247219..755c546 100644 --- a/main/displays/menus/bluetoothsettingsmenu.h +++ b/main/displays/menus/bluetoothsettingsmenu.h @@ -5,7 +5,7 @@ #ifdef FEATURE_BLUETOOTH #include "changevaluedisplay_bluetoothmode.h" #endif -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "menuitem.h" #include "actions/dummyaction.h" #ifdef FEATURE_BLUETOOTH @@ -37,7 +37,7 @@ using AutoBluetoothModeChangeDisplay = makeComponent< >; class BluetoothSettingsMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText, public BackActionInterface> { diff --git a/main/displays/menus/bmsmenu.h b/main/displays/menus/bmsmenu.h index 829900b..a8d969c 100644 --- a/main/displays/menus/bmsmenu.h +++ b/main/displays/menus/bmsmenu.h @@ -2,11 +2,11 @@ #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class BmsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp b/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp index b5d71f8..6b3a2c6 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp +++ b/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp @@ -10,6 +10,7 @@ #include // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "icons/lock.h" #include "accessors/settingsaccessors.h" @@ -43,35 +44,35 @@ public: }; using SampleCountChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, SampleCountAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GasMinChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GasMinAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GasMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GasMaxAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using BremsMinChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BremsMinAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using BremsMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BremsMaxAccessor, espgui::BackActionInterface>, @@ -80,7 +81,7 @@ using BremsMaxChangeScreen = espgui::makeComponent< #if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) using DPadDebounceChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DPadDebounceAccessor, espgui::BackActionInterface>, @@ -103,42 +104,42 @@ public: }; using GametrakXMinChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GametrakXMinAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GametrakXMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GametrakXMaxAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GametrakYMinChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GametrakYMinAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GametrakYMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GametrakYMaxAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GametrakDistMinChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GametrakDistMinAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using GametrakDistMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, GametrakDistMaxAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.h b/main/displays/menus/boardcomputerhardwaresettingsmenu.h index ffd61fa..1b5f151 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/main/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -1,11 +1,11 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class BoardcomputerHardwareSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/buzzermenu.cpp b/main/displays/menus/buzzermenu.cpp index b050698..cb1866b 100644 --- a/main/displays/menus/buzzermenu.cpp +++ b/main/displays/menus/buzzermenu.cpp @@ -9,6 +9,7 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "globals.h" #include "accessors/settingsaccessors.h" @@ -17,7 +18,7 @@ namespace { struct FrontFreqAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.front.command.buzzer.freq; } }; using FrontFreqChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, FrontFreqAccessor, espgui::BackActionInterface>, @@ -26,7 +27,7 @@ using FrontFreqChangeScreen = espgui::makeComponent< struct FrontPatternAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.front.command.buzzer.pattern; } }; using FrontPatternChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, FrontPatternAccessor, espgui::BackActionInterface>, @@ -35,7 +36,7 @@ using FrontPatternChangeScreen = espgui::makeComponent< struct BackFreqAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.back.command.buzzer.freq; } }; using BackFreqChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BackFreqAccessor, espgui::BackActionInterface>, @@ -44,7 +45,7 @@ using BackFreqChangeScreen = espgui::makeComponent< struct BackPatternAccessor : public espgui::RefAccessor { uint8_t &getRef() const override { return controllers.back.command.buzzer.pattern; } }; using BackPatternChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, BackPatternAccessor, espgui::BackActionInterface>, @@ -52,28 +53,28 @@ using BackPatternChangeScreen = espgui::makeComponent< >; using ReverseBeepFreq0ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepFreq0Accessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using ReverseBeepFreq1ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepFreq1Accessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using ReverseBeepDuration0ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepDuration0Accessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using ReverseBeepDuration1ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, ReverseBeepDuration1Accessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/buzzermenu.h b/main/displays/menus/buzzermenu.h index 6d4cf9a..525d363 100644 --- a/main/displays/menus/buzzermenu.h +++ b/main/displays/menus/buzzermenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class BuzzerMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/cloudsettingsmenu.cpp b/main/displays/menus/cloudsettingsmenu.cpp index 80b7d18..9f2479a 100644 --- a/main/displays/menus/cloudsettingsmenu.cpp +++ b/main/displays/menus/cloudsettingsmenu.cpp @@ -11,6 +11,7 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "cloudtexthelpers.h" #include "accessors/settingsaccessors.h" #include "cloud.h" @@ -20,7 +21,7 @@ namespace { using CloudTransmitTimeoutChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, CloudTransmitTimeoutAccessor, espgui::BackActionInterface>, @@ -37,7 +38,7 @@ public: }; using CloudCollectRateChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, CloudCollectRateAccessor, espgui::BackActionInterface>, @@ -45,7 +46,7 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent< >; using CloudSendRateChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, CloudSendRateAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/cloudsettingsmenu.h b/main/displays/menus/cloudsettingsmenu.h index 037beaf..e15538c 100644 --- a/main/displays/menus/cloudsettingsmenu.h +++ b/main/displays/menus/cloudsettingsmenu.h @@ -1,14 +1,12 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" #ifdef FEATURE_CLOUD class CloudSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/commanddebugmenu.h b/main/displays/menus/commanddebugmenu.h index e264a2b..14fbc6e 100644 --- a/main/displays/menus/commanddebugmenu.h +++ b/main/displays/menus/commanddebugmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" @@ -15,7 +15,7 @@ using namespace espgui; namespace { template class CommandDebugMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText, public BackActionInterface> { diff --git a/main/displays/menus/controllerhardwaresettingsmenu.cpp b/main/displays/menus/controllerhardwaresettingsmenu.cpp index 752f6d9..8d4b4a5 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.cpp +++ b/main/displays/menus/controllerhardwaresettingsmenu.cpp @@ -11,6 +11,7 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "globals.h" #include "accessors/settingsaccessors.h" @@ -20,14 +21,14 @@ namespace { using WheelDiameterMmChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, WheelDiameterMmAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using WheelDiameterInchChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, WheelDiameterInchAccessor, espgui::RatioNumberStep>, @@ -35,7 +36,7 @@ using WheelDiameterInchChangeScreen = espgui::makeComponent< espgui::SwitchScreenAction >; using NumMagnetPolesChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, NumMagnetPolesAccessor, espgui::BackActionInterface>, @@ -43,14 +44,14 @@ using NumMagnetPolesChangeScreen = espgui::makeComponent< >; #ifdef FEATURE_CAN using CanTransmitTimeoutChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, CanTransmitTimeoutAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using CanReceiveTimeoutChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, CanReceiveTimeoutAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/controllerhardwaresettingsmenu.h b/main/displays/menus/controllerhardwaresettingsmenu.h index 7ffea17..aeb3c2c 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.h +++ b/main/displays/menus/controllerhardwaresettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class ControllerHardwareSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/crashmenu.h b/main/displays/menus/crashmenu.h index 49f72db..eb71469 100644 --- a/main/displays/menus/crashmenu.h +++ b/main/displays/menus/crashmenu.h @@ -1,13 +1,13 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" using namespace espgui; class CrashMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText { public: diff --git a/main/displays/menus/debugmenu.h b/main/displays/menus/debugmenu.h index 8aeb2a2..4d08ac4 100644 --- a/main/displays/menus/debugmenu.h +++ b/main/displays/menus/debugmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class DebugMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/defaultmodesettingsmenu.cpp b/main/displays/menus/defaultmodesettingsmenu.cpp index b9b7e04..6391b5c 100644 --- a/main/displays/menus/defaultmodesettingsmenu.cpp +++ b/main/displays/menus/defaultmodesettingsmenu.cpp @@ -10,6 +10,7 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "changevaluedisplay_unifiedmodelmode.h" #include "accessors/settingsaccessors.h" @@ -18,91 +19,91 @@ namespace { using DefaultModeModelModeChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeModelModeAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeHybridModelModeChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeHybridModelModeAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeSmoothingChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeSmoothingAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeFwSmoothingLowerLimitChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeFrontPercentageChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeFrontPercentageAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeBackPercentageChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeBackPercentageAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeAddSchwelleChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeAddSchwelleAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeGas1WertChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeGas1WertAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeGas2WertChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeGas2WertAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeBrems1WertChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeBrems1WertAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeBrems2WertChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeBrems2WertAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeHybridActivationLimitChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeHybridActivationLimitAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using DefaultModeHybridDeactivationLimitChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DefaultModeHybridDeactivationLimitAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/displays/menus/defaultmodesettingsmenu.h index 895f7a6..555d4ed 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/displays/menus/defaultmodesettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class DefaultModeSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/demosmenu.h b/main/displays/menus/demosmenu.h index 0feb869..2544f9d 100644 --- a/main/displays/menus/demosmenu.h +++ b/main/displays/menus/demosmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class DemosMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/dynamicdebugmenu.h b/main/displays/menus/dynamicdebugmenu.h index 470464b..6e0f075 100644 --- a/main/displays/menus/dynamicdebugmenu.h +++ b/main/displays/menus/dynamicdebugmenu.h @@ -11,7 +11,7 @@ #include // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/switchscreenaction.h" @@ -125,7 +125,7 @@ constexpr char TEXT_STATICICON[] = "Static icon"; constexpr char TEXT_DEBUGTOGGLE[] = "Toggle"; class DynamicDebugMenu : - public MenuDisplay, + public BobbyMenuDisplay, public RandomText, public BackActionInterface> { diff --git a/main/displays/menus/enablemenu.h b/main/displays/menus/enablemenu.h index 068d8ef..5736f55 100644 --- a/main/displays/menus/enablemenu.h +++ b/main/displays/menus/enablemenu.h @@ -1,13 +1,13 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" using namespace espgui; class EnableMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText { public: diff --git a/main/displays/menus/espnowmenu.h b/main/displays/menus/espnowmenu.h index d4155bf..0129383 100644 --- a/main/displays/menus/espnowmenu.h +++ b/main/displays/menus/espnowmenu.h @@ -2,6 +2,7 @@ #ifdef FEATURE_ESPNOW +// 3rdparty lib includes #include #include #include @@ -10,6 +11,8 @@ #include #include +// local includes +#include "displays/bobbymenudisplay.h" #include "espnowfunctions.h" using namespace espgui; @@ -31,8 +34,8 @@ public: } // namespace class EspNowMenu : - public espgui::MenuDisplay, - public espgui::StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: EspNowMenu(); diff --git a/main/displays/menus/espnowsettingsmenu.h b/main/displays/menus/espnowsettingsmenu.h index 577d463..6f028de 100644 --- a/main/displays/menus/espnowsettingsmenu.h +++ b/main/displays/menus/espnowsettingsmenu.h @@ -2,6 +2,7 @@ #ifdef FEATURE_ESPNOW +// 3rdparty lib includes #include #include #include @@ -10,6 +11,8 @@ #include #include +// local includes +#include "displays/bobbymenudisplay.h" #include "espnowfunctions.h" using namespace espgui; @@ -18,8 +21,8 @@ namespace espnowsettingsmenu { } // namespace class EspNowSettingsMenu : - public espgui::MenuDisplay, - public espgui::StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: EspNowSettingsMenu(); diff --git a/main/displays/menus/feedbackdebugmenu.h b/main/displays/menus/feedbackdebugmenu.h index 92104a6..4f6d60c 100644 --- a/main/displays/menus/feedbackdebugmenu.h +++ b/main/displays/menus/feedbackdebugmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" @@ -17,7 +17,7 @@ using namespace espgui; namespace { template class ColorInterface> class FeedbackDebugMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText, public BackActionInterface> { diff --git a/main/displays/menus/gametrakmodesettingsmenu.h b/main/displays/menus/gametrakmodesettingsmenu.h index 74e6719..18464e6 100644 --- a/main/displays/menus/gametrakmodesettingsmenu.h +++ b/main/displays/menus/gametrakmodesettingsmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/switchscreenaction.h" @@ -13,7 +13,7 @@ using namespace espgui; namespace { #ifdef FEATURE_GAMETRAK class ContainerModeSettingsMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText, public BackActionInterface> { diff --git a/main/displays/menus/genericwifisettingsmenu.h b/main/displays/menus/genericwifisettingsmenu.h index 6ebc436..6d357f0 100644 --- a/main/displays/menus/genericwifisettingsmenu.h +++ b/main/displays/menus/genericwifisettingsmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "changevaluedisplay.h" #include "menuitem.h" #include "actions/dummyaction.h" @@ -17,7 +17,7 @@ using namespace espgui; namespace { class GenericWifiSettingsMenu : - public MenuDisplay, + public BobbyMenuDisplay, public StaticText, public BackActionInterface> { diff --git a/main/displays/menus/graphsmenu.cpp b/main/displays/menus/graphsmenu.cpp index 030af91..e20f2fe 100644 --- a/main/displays/menus/graphsmenu.cpp +++ b/main/displays/menus/graphsmenu.cpp @@ -7,34 +7,36 @@ #include "splitgraphdisplay.h" // local includes +#include "displays/bobbygraphdisplay.h" +#include "displays/bobbysplitgraphdisplay.h" #include "utils.h" #include "statistics.h" #include "displays/menus/mainmenu.h" namespace { using GasGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using BremsGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using PotisGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<2>, + BobbyGraphDisplay<2>, espgui::StaticText, espgui::DualGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using PotisSplitGraphDisplay = espgui::makeComponent< - espgui::SplitGraphDisplay<1, 1>, + BobbySplitGraphDisplay<1, 1>, espgui::StaticText, espgui::SingleTopGraphAccessor, espgui::SingleBottomGraphAccessor, @@ -43,14 +45,14 @@ using PotisSplitGraphDisplay = espgui::makeComponent< >; using AvgSpeedGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using AvgSpeedKmhGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, @@ -58,7 +60,7 @@ using AvgSpeedKmhGraphDisplay = espgui::makeComponent< >; using SumCurrentGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, @@ -66,28 +68,28 @@ using SumCurrentGraphDisplay = espgui::makeComponent< >; using FrontVoltageGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using BackVoltageGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using VoltagesGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<2>, + BobbyGraphDisplay<2>, espgui::StaticText, espgui::DualGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using VoltagesSplitGraphDisplay = espgui::makeComponent< - espgui::SplitGraphDisplay<1, 1>, + BobbySplitGraphDisplay<1, 1>, espgui::StaticText, espgui::SingleTopGraphAccessor, espgui::SingleBottomGraphAccessor, @@ -97,28 +99,28 @@ using VoltagesSplitGraphDisplay = espgui::makeComponent< #ifdef FEATURE_BMS using BmsVoltageGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using BmsCurrentGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using BmsPowerGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, espgui::BackActionInterface> >; using SumCurrentsComparisonGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<2>, + BobbyGraphDisplay<2>, espgui::StaticText, DualGraphAccessor, espgui::ConfirmActionInterface>, @@ -134,7 +136,7 @@ class MotorCurrentsStatistics : public virtual espgui::GraphAccessorInterface<4> } }; using MotorCurrentsGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<4>, + BobbyGraphDisplay<4>, espgui::StaticText, MotorCurrentsStatistics, espgui::ConfirmActionInterface>, @@ -142,7 +144,7 @@ using MotorCurrentsGraphDisplay = espgui::makeComponent< >; using RssiGraphDisplay = espgui::makeComponent< - espgui::GraphDisplay<1>, + BobbyGraphDisplay<1>, espgui::StaticText, espgui::SingleGraphAccessor, espgui::ConfirmActionInterface>, diff --git a/main/displays/menus/graphsmenu.h b/main/displays/menus/graphsmenu.h index a6e9828..f435cdf 100644 --- a/main/displays/menus/graphsmenu.h +++ b/main/displays/menus/graphsmenu.h @@ -1,11 +1,11 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class GraphsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/greenpassmenu.h b/main/displays/menus/greenpassmenu.h index b05edf7..f19f622 100644 --- a/main/displays/menus/greenpassmenu.h +++ b/main/displays/menus/greenpassmenu.h @@ -1,17 +1,18 @@ #pragma once + +// 3rdparty lib includes +#include #include // local includes -#include "accessorinterface.h" -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class GreenPassMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { - using Base = espgui::MenuDisplay; public: GreenPassMenu(); void back() override; diff --git a/main/displays/menus/handbremssettingsmenu.cpp b/main/displays/menus/handbremssettingsmenu.cpp index 227d176..2aee393 100644 --- a/main/displays/menus/handbremssettingsmenu.cpp +++ b/main/displays/menus/handbremssettingsmenu.cpp @@ -2,36 +2,35 @@ // 3rd party libs #include - -// local includes -#include "accessors/settingsaccessors.h" #include "actions/switchscreenaction.h" #include "actions/toggleboolaction.h" #include "changevaluedisplay.h" -#include "changevaluedisplay_handbremsmode.h" #include "checkboxicon.h" -#include "displays/menus/defaultmodesettingsmenu.h" #include "icons/back.h" + +// local includes +#include "displays/bobbychangevaluedisplay.h" +#include "accessors/settingsaccessors.h" +#include "changevaluedisplay_handbremsmode.h" +#include "displays/menus/defaultmodesettingsmenu.h" #include "texts.h" -using namespace espgui; - namespace { -using HandBremsTriggerTimeoutChangeValueDisplay = makeComponent< - ChangeValueDisplay, - StaticText, +using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, HandbremsTimeoutAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using HandBremsModeChangeValueDisplay = makeComponent< - ChangeValueDisplay, - StaticText, +using HandBremsModeChangeValueDisplay = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, HandbremsModeAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -class HandBremsModeText : public virtual TextInterface +class HandBremsModeText : public virtual espgui::TextInterface { public: std::string text() const override @@ -43,6 +42,7 @@ public: HandbremsSettingsMenu::HandbremsSettingsMenu() { + using namespace espgui; constructMenuItem, ToggleBoolAction, CheckboxIcon, HandbremsEnabledAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, HandbremsAutomaticAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, HandbremsVisualizeAccessor>>(); @@ -53,5 +53,5 @@ HandbremsSettingsMenu::HandbremsSettingsMenu() void HandbremsSettingsMenu::back() { - switchScreen(); + espgui::switchScreen(); } diff --git a/main/displays/menus/handbremssettingsmenu.h b/main/displays/menus/handbremssettingsmenu.h index b9b22a2..aeffeb9 100644 --- a/main/displays/menus/handbremssettingsmenu.h +++ b/main/displays/menus/handbremssettingsmenu.h @@ -1,10 +1,11 @@ #pragma once -#include "menudisplay.h" +// local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class HandbremsSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/invertmenu.cpp b/main/displays/menus/invertmenu.cpp index 2e0351b..b49aea8 100644 --- a/main/displays/menus/invertmenu.cpp +++ b/main/displays/menus/invertmenu.cpp @@ -10,6 +10,7 @@ InvertMenu::InvertMenu() { + using namespace espgui; constructMenuItem, ToggleBoolAction, CheckboxIcon, FrontLeftInvertedAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackLeftInvertedAccessor>>(); @@ -20,5 +21,5 @@ InvertMenu::InvertMenu() void InvertMenu::back() { - switchScreen(); + espgui::switchScreen(); } diff --git a/main/displays/menus/invertmenu.h b/main/displays/menus/invertmenu.h index 15f073d..430b364 100644 --- a/main/displays/menus/invertmenu.h +++ b/main/displays/menus/invertmenu.h @@ -1,14 +1,12 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" -using namespace espgui; - class InvertMenu : - public MenuDisplay, - public StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: InvertMenu(); diff --git a/main/displays/menus/larsmmodesettingsmenu.cpp b/main/displays/menus/larsmmodesettingsmenu.cpp index 8c09124..23bd2db 100644 --- a/main/displays/menus/larsmmodesettingsmenu.cpp +++ b/main/displays/menus/larsmmodesettingsmenu.cpp @@ -7,6 +7,7 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "changevaluedisplay_larsmmode_mode.h" #include "changevaluedisplay_unifiedmodelmode.h" @@ -15,21 +16,21 @@ namespace { using LarsmModeModelModeChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LarsmModeModelModeAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using LarsmModeModeChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LarsmModeModeAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using LarsmModeIterationsChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LarsmModeIterationsAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/larsmmodesettingsmenu.h b/main/displays/menus/larsmmodesettingsmenu.h index 61a60d6..4bed219 100644 --- a/main/displays/menus/larsmmodesettingsmenu.h +++ b/main/displays/menus/larsmmodesettingsmenu.h @@ -3,11 +3,11 @@ // 3rdparty lib includes // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class LarsmModeSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/ledstripmenu.cpp b/main/displays/menus/ledstripmenu.cpp index e5d99f1..23ee4ae 100644 --- a/main/displays/menus/ledstripmenu.cpp +++ b/main/displays/menus/ledstripmenu.cpp @@ -12,6 +12,7 @@ #include // local includes +#include "displays/bobbychangevaluedisplay.h" #include "accessors/settingsaccessors.h" #include "displays/ledstripcolorsdisplay.h" #include "displays/menus/ledstripselectotamode.h" @@ -23,82 +24,80 @@ // clang-format off -using namespace espgui; - namespace { -using LedsCountChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using LedsCountChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, LedsCountAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using CenterOffsetChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using CenterOffsetChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, CenterOffsetAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using SmallOffsetChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using SmallOffsetChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, SmallOffsetAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using BigOffsetChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using BigOffsetChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, BigOffsetAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using DeziampereChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using DeziampereChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, DeziampereAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using StVOOffsetChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using StVOOffsetChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, LedsStVOFrontOffsetAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using StVOLengthChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using StVOLengthChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, LedsStVOFrontLengthAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using animationMultiplierChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using animationMultiplierChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, AnimationMultiplierAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -using ledstripBrightnessChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, +using ledstripBrightnessChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, LedstripBrightnessAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; -class AllCustomLedsOffAction : public virtual ActionInterface +class AllCustomLedsOffAction : public virtual espgui::ActionInterface { public: void triggered() override @@ -113,35 +112,36 @@ public: LedstripMenu::LedstripMenu() { - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBrakeLightsAccessor>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableFullBlinkAccessor>>(); + using namespace espgui; + constructMenuItem, espgui::SwitchScreenAction>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBrakeLightsAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableFullBlinkAccessor>>(); - if (!simplified) { constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>(); } - constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOFrontlight>>(); - constructMenuItem, AllCustomLedsOffAction>>(); - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>(); } + constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOFrontlight>>(); + constructMenuItem, AllCustomLedsOffAction>>(); + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, espgui::SwitchScreenAction>>(); + constructMenuItem, espgui::SwitchScreenAction>>(); #ifdef FEATURE_OTA - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } #endif - constructMenuItem, SwitchScreenAction>>(); - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, espgui::SwitchScreenAction>>(); + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, espgui::SwitchScreenAction>>(); } + constructMenuItem, espgui::SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } void LedstripMenu::back() { - switchScreen(); + espgui::switchScreen(); } #endif diff --git a/main/displays/menus/ledstripmenu.h b/main/displays/menus/ledstripmenu.h index d6e6a62..5644ec7 100644 --- a/main/displays/menus/ledstripmenu.h +++ b/main/displays/menus/ledstripmenu.h @@ -1,9 +1,7 @@ #pragma once -// 3rdparty lib includes -#include "widgets/menudisplaywithtime.h" - // local includes +#include "displays/menudisplaywithtime.h" #include "texts.h" #ifdef FEATURE_LEDSTRIP diff --git a/main/displays/menus/ledstripselectanimationmenu.cpp b/main/displays/menus/ledstripselectanimationmenu.cpp index d3437b7..d553bff 100644 --- a/main/displays/menus/ledstripselectanimationmenu.cpp +++ b/main/displays/menus/ledstripselectanimationmenu.cpp @@ -10,9 +10,36 @@ using namespace espgui; - #ifdef FEATURE_LEDSTRIP -std::string currentSelectedAnimationText::text() const +namespace { + +class CurrentSelectedAnimationText : public virtual espgui::TextInterface +{ +public: + std::string text() const override; +}; + +} // namespace + +LedstripSelectAnimationMenu::LedstripSelectAnimationMenu() +{ + constructMenuItem>(); + constructMenuItem>(); + constructMenuItem, LedStripSetAnimationAction>>(); + constructMenuItem, LedStripSetAnimationAction>>(); + constructMenuItem, LedStripSetAnimationAction>>(); + constructMenuItem, LedStripSetAnimationAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} + +void LedstripSelectAnimationMenu::back() +{ + switchScreen(); +} + +namespace { + +std::string CurrentSelectedAnimationText::text() const { switch (animation_type) { case LedstripAnimation::DefaultRainbow: @@ -28,19 +55,5 @@ std::string currentSelectedAnimationText::text() const } } -LedstripSelectAnimationMenu::LedstripSelectAnimationMenu() -{ - constructMenuItem>(); - constructMenuItem>(); - constructMenuItem, LedStripSetAnimationAction>>(); - constructMenuItem, LedStripSetAnimationAction>>(); - constructMenuItem, LedStripSetAnimationAction>>(); - constructMenuItem, LedStripSetAnimationAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); -} - -void LedstripSelectAnimationMenu::back() -{ - switchScreen(); -} +} // namespace #endif diff --git a/main/displays/menus/ledstripselectanimationmenu.h b/main/displays/menus/ledstripselectanimationmenu.h index 5a08871..659532d 100644 --- a/main/displays/menus/ledstripselectanimationmenu.h +++ b/main/displays/menus/ledstripselectanimationmenu.h @@ -1,19 +1,13 @@ #pragma once // Local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" #ifdef FEATURE_LEDSTRIP - -class currentSelectedAnimationText : public virtual espgui::TextInterface { -public: - std::string text() const override; -}; - class LedstripSelectAnimationMenu : - public espgui::MenuDisplay, - public espgui::StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: LedstripSelectAnimationMenu(); diff --git a/main/displays/menus/ledstripselectblinkmenu.h b/main/displays/menus/ledstripselectblinkmenu.h index 1819c14..ccfe0cf 100644 --- a/main/displays/menus/ledstripselectblinkmenu.h +++ b/main/displays/menus/ledstripselectblinkmenu.h @@ -1,7 +1,7 @@ #pragma once // Local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" #include "ledstrip.h" #include "ledstripdefines.h" @@ -13,8 +13,8 @@ public: std::string text() const override; }; class LedstripSelectBlinkMenu : - public espgui::MenuDisplay, - public espgui::StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: LedstripSelectBlinkMenu(); diff --git a/main/displays/menus/ledstripselectotamode.h b/main/displays/menus/ledstripselectotamode.h index 02ffc51..f30238b 100644 --- a/main/displays/menus/ledstripselectotamode.h +++ b/main/displays/menus/ledstripselectotamode.h @@ -1,7 +1,7 @@ #pragma once // Local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" #include "ledstrip.h" #include "globals.h" @@ -21,8 +21,8 @@ public: }; class ledstripOtaAnimationChangeMenu : - public espgui::MenuDisplay, - public espgui::StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: ledstripOtaAnimationChangeMenu(); diff --git a/main/displays/menus/limitssettingsmenu.cpp b/main/displays/menus/limitssettingsmenu.cpp index 9f8ad91..aa5d1a6 100644 --- a/main/displays/menus/limitssettingsmenu.cpp +++ b/main/displays/menus/limitssettingsmenu.cpp @@ -7,48 +7,49 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "accessors/settingsaccessors.h" #include "displays/menus/settingsmenu.h" namespace { using IMotMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, IMotMaxAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using IDcMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, IDcMaxAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using NMotMaxKmhChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, NMotMaxKmhAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using NMotMaxRpmChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, NMotMaxRpmAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using FieldWeakMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, FieldWeakMaxAccessor, espgui::BackActionInterface>, espgui::SwitchScreenAction >; using PhaseAdvMaxChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, PhaseAdvMaxAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/limitssettingsmenu.h b/main/displays/menus/limitssettingsmenu.h index 25c0d63..129a216 100644 --- a/main/displays/menus/limitssettingsmenu.h +++ b/main/displays/menus/limitssettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class LimitsSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/lockscreensettingsmenu.cpp b/main/displays/menus/lockscreensettingsmenu.cpp index b3fdffa..2c594dd 100644 --- a/main/displays/menus/lockscreensettingsmenu.cpp +++ b/main/displays/menus/lockscreensettingsmenu.cpp @@ -9,13 +9,14 @@ #include "changevaluedisplay.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "globals.h" #include "accessors/settingsaccessors.h" #include "displays/menus/boardcomputerhardwaresettingsmenu.h" namespace { using LockscreenPinDigit0ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<0>, espgui::BackActionInterface>, @@ -23,7 +24,7 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent< >; using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<1>, espgui::BackActionInterface>, @@ -31,7 +32,7 @@ using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< >; using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<2>, espgui::BackActionInterface>, @@ -39,7 +40,7 @@ using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< >; using LockscreenPinDigit3ChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, LockscreenPinDigitAccessor<3>, espgui::BackActionInterface>, diff --git a/main/displays/menus/lockscreensettingsmenu.h b/main/displays/menus/lockscreensettingsmenu.h index 82cf322..70e2338 100644 --- a/main/displays/menus/lockscreensettingsmenu.h +++ b/main/displays/menus/lockscreensettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class LockscreenSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/mainmenu.h b/main/displays/menus/mainmenu.h index 5499ca0..24feb16 100644 --- a/main/displays/menus/mainmenu.h +++ b/main/displays/menus/mainmenu.h @@ -5,7 +5,7 @@ // local includes #include "texts.h" -#include "widgets/menudisplaywithtime.h" +#include "displays/menudisplaywithtime.h" #ifdef MAINMENU_PLUGIN #include MAINMENU_PLUGIN #endif diff --git a/main/displays/menus/modessettingsmenu.h b/main/displays/menus/modessettingsmenu.h index ae07c74..94d3f56 100644 --- a/main/displays/menus/modessettingsmenu.h +++ b/main/displays/menus/modessettingsmenu.h @@ -1,13 +1,11 @@ #pragma once // local includes -#include "menudisplay.h" - -// local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class ModesSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/mosfetsmenu.h b/main/displays/menus/mosfetsmenu.h index ee1b88b..d142faa 100644 --- a/main/displays/menus/mosfetsmenu.h +++ b/main/displays/menus/mosfetsmenu.h @@ -1,8 +1,11 @@ #pragma once #ifdef FEATURE_MOSFETS -#include "menudisplay.h" +// 3rdparty lib includes #include "accessorinterface.h" + +// local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" #include "types.h" @@ -19,7 +22,7 @@ using Mosfet1Accessor = GPIOAccessor; using Mosfet2Accessor = GPIOAccessor; class MosfetsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/motorfeedbackdebugmenu.h b/main/displays/menus/motorfeedbackdebugmenu.h index d3d6a4a..80375c3 100644 --- a/main/displays/menus/motorfeedbackdebugmenu.h +++ b/main/displays/menus/motorfeedbackdebugmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" @@ -11,18 +11,17 @@ #include "debugtexthelpers.h" #include "debugcolorhelpers.h" -using namespace espgui; - -namespace { template class ColorInterface> class MotorFeedbackDebugMenu : - public MenuDisplay, - public StaticText, - public BackActionInterface> + public BobbyMenuDisplay, + public espgui::StaticText, + public espgui::BackActionInterface> { public: MotorFeedbackDebugMenu() { + using namespace espgui; + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); @@ -45,5 +44,3 @@ class FrontLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu {}; class BackLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu {}; class BackRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu {}; - -} // namespace diff --git a/main/displays/menus/motorstatedebugmenu.h b/main/displays/menus/motorstatedebugmenu.h index ff591d5..bfa01da 100644 --- a/main/displays/menus/motorstatedebugmenu.h +++ b/main/displays/menus/motorstatedebugmenu.h @@ -1,27 +1,27 @@ #pragma once -// local includes -#include "menudisplay.h" -#include "utils.h" +// 3rdparty lib includes #include "menuitem.h" #include "actions/dummyaction.h" #include "actions/switchscreenaction.h" #include "icons/back.h" + +// local includes +#include "displays/bobbymenudisplay.h" +#include "utils.h" #include "texts.h" #include "debugtexthelpers.h" -using namespace espgui; - -namespace { template class MotorStateDebugMenu : - public MenuDisplay, - public StaticText, - public BackActionInterface> + public BobbyMenuDisplay, + public espgui::StaticText, + public espgui::BackActionInterface> { public: MotorStateDebugMenu() { + using namespace espgui; constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); @@ -41,5 +41,3 @@ class FrontLeftMotorStateDebugMenu : public MotorStateDebugMenu {}; class BackLeftMotorStateDebugMenu : public MotorStateDebugMenu {}; class BackRightMotorStateDebugMenu : public MotorStateDebugMenu {}; - -} // namespace diff --git a/main/displays/menus/motortestmodesettingsmenu.cpp b/main/displays/menus/motortestmodesettingsmenu.cpp index 5eaaa22..6515db9 100644 --- a/main/displays/menus/motortestmodesettingsmenu.cpp +++ b/main/displays/menus/motortestmodesettingsmenu.cpp @@ -7,13 +7,14 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "accessors/settingsaccessors.h" #include "displays/menus/modessettingsmenu.h" namespace { using MotortestMultiplikatorChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, MotortestModeMultiplikatorAccessor, espgui::BackActionInterface>, @@ -21,7 +22,7 @@ using MotortestMultiplikatorChangeDisplay = espgui::makeComponent< >; using MotortestMaxPwmChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, MotortestMaxPwmAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/motortestmodesettingsmenu.h b/main/displays/menus/motortestmodesettingsmenu.h index 91fa62f..c4f664b 100644 --- a/main/displays/menus/motortestmodesettingsmenu.h +++ b/main/displays/menus/motortestmodesettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes - // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class MotortestModeSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/otamenu.h b/main/displays/menus/otamenu.h index 1e07b27..fdf7e4e 100644 --- a/main/displays/menus/otamenu.h +++ b/main/displays/menus/otamenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class OtaMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/presetsmenu.h b/main/displays/menus/presetsmenu.h index e78892e..c9f071d 100644 --- a/main/displays/menus/presetsmenu.h +++ b/main/displays/menus/presetsmenu.h @@ -1,14 +1,12 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" -using namespace espgui; - class PresetsMenu : - public MenuDisplay, - public StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: PresetsMenu(); diff --git a/main/displays/menus/profilesmenu.h b/main/displays/menus/profilesmenu.h index 9956571..ce57d23 100644 --- a/main/displays/menus/profilesmenu.h +++ b/main/displays/menus/profilesmenu.h @@ -1,11 +1,11 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class ProfilesMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/selectbatterytypemenu.h b/main/displays/menus/selectbatterytypemenu.h index 00b9a56..6291f0b 100644 --- a/main/displays/menus/selectbatterytypemenu.h +++ b/main/displays/menus/selectbatterytypemenu.h @@ -1,19 +1,19 @@ #pragma once // 3rdparty lib includes -#include #include #include #include #include // Local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" #include "batterymenu.h" #include "displays/menus/mainmenu.h" class BatteryTypeMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/selectbuildserverbranch.cpp b/main/displays/menus/selectbuildserverbranch.cpp index eaf846c..e1c5679 100644 --- a/main/displays/menus/selectbuildserverbranch.cpp +++ b/main/displays/menus/selectbuildserverbranch.cpp @@ -21,9 +21,34 @@ using namespace espgui; using namespace buildserver; -using namespace SelectBuildServerBranch; -namespace SelectBuildServerBranch { +namespace { +class CurrentBranch : public virtual espgui::TextInterface +{ +public: + std::string text() const override; +}; + +class BranchMenuItem : public espgui::MenuItem +{ +public: + std::string text() const override; + void setName(std::string &&name); + void setName(const std::string &name); + + void triggered() override; +private: + std::string m_name; +}; + +class ClearBranchAction : public virtual espgui::ActionInterface +{ +public: + void triggered() override; +}; +} + +namespace { std::string CurrentBranch::text() const { return stringSettings.otaServerBranch.empty() ? "All builds" : stringSettings.otaServerBranch; @@ -59,8 +84,6 @@ void ClearBranchAction::triggered() SelectBuildserverBranchMenu::SelectBuildserverBranchMenu() { - using namespace SelectBuildServerBranch; - if (count_available_buildserver() < 1) { ERR_MESSAGE(TEXT_OTA_NOBUILDSERVERAVAILABLE); // E:No server saved. diff --git a/main/displays/menus/selectbuildserverbranch.h b/main/displays/menus/selectbuildserverbranch.h index d671846..52b7f9a 100644 --- a/main/displays/menus/selectbuildserverbranch.h +++ b/main/displays/menus/selectbuildserverbranch.h @@ -1,43 +1,19 @@ #pragma once -// 3rd party includes -#include -#include +// local includes +#include "displays/bobbymenudisplay.h" +#include "texts.h" + #ifdef FEATURE_OTA -namespace SelectBuildServerBranch { - class CurrentBranch : public virtual espgui::TextInterface - { - public: - std::string text() const override; - }; - - class BranchMenuItem : public espgui::MenuItem - { - public: - std::string text() const override; - void setName(std::string &&name); - void setName(const std::string &name); - - void triggered() override; - private: - std::string m_name; - }; - - class ClearBranchAction : public virtual espgui::ActionInterface - { - public: - void triggered() override; - }; -} - class SelectBuildserverBranchMenu : - public espgui::MenuDisplay, - public espgui::StaticText + public BobbyMenuDisplay, + public espgui::StaticText { using Base = espgui::MenuDisplay; public: SelectBuildserverBranchMenu(); + void buildMenuRequestError(std::string error); void update() override; void back() override; diff --git a/main/displays/menus/selectbuildservermenu.cpp b/main/displays/menus/selectbuildservermenu.cpp index deff708..0f663bc 100644 --- a/main/displays/menus/selectbuildservermenu.cpp +++ b/main/displays/menus/selectbuildservermenu.cpp @@ -6,9 +6,10 @@ // 3rdparty lib includes #include #include +#include +#include // local includes -#include "actions/dummyaction.h" #include "buildserver.h" #include "displays/menus/otamenu.h" #include "utils.h" diff --git a/main/displays/menus/selectbuildservermenu.h b/main/displays/menus/selectbuildservermenu.h index 353b73a..0ce6ac3 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/displays/menus/selectbuildservermenu.h @@ -1,16 +1,15 @@ #pragma once // 3rdparty lib includes -#include -#include // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" #ifdef FEATURE_OTA class SelectBuildServerMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/selectmodemenu.h b/main/displays/menus/selectmodemenu.h index 1536a86..bd2071b 100644 --- a/main/displays/menus/selectmodemenu.h +++ b/main/displays/menus/selectmodemenu.h @@ -1,16 +1,14 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class SelectModeMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { - using Base = espgui::MenuDisplay; + using Base = BobbyMenuDisplay; public: SelectModeMenu(); diff --git a/main/displays/menus/selectotabuildmenu.h b/main/displays/menus/selectotabuildmenu.h index 66b9fdd..23d23f2 100644 --- a/main/displays/menus/selectotabuildmenu.h +++ b/main/displays/menus/selectotabuildmenu.h @@ -1,20 +1,23 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" #ifdef FEATURE_OTA class SelectBuildMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { - using Base = MenuDisplay; + using Base = BobbyMenuDisplay; + public: SelectBuildMenu(); void update() override; void back() override; + +private: void buildMenuFromJson(); void buildMenuRequestError(std::string error); }; diff --git a/main/displays/menus/settingsmenu.h b/main/displays/menus/settingsmenu.h index 43b3c31..7549144 100644 --- a/main/displays/menus/settingsmenu.h +++ b/main/displays/menus/settingsmenu.h @@ -1,9 +1,7 @@ #pragma once -// 3rdparty lib includes -#include "widgets/menudisplaywithtime.h" - // local includes +#include "displays/menudisplaywithtime.h" #include "texts.h" class SettingsMenu : diff --git a/main/displays/menus/stationwifisettingsmenu.h b/main/displays/menus/stationwifisettingsmenu.h index 84cc9ea..d67a337 100644 --- a/main/displays/menus/stationwifisettingsmenu.h +++ b/main/displays/menus/stationwifisettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class StationWifiSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/statisticsmenu.h b/main/displays/menus/statisticsmenu.h index b03b5ca..be81dab 100644 --- a/main/displays/menus/statisticsmenu.h +++ b/main/displays/menus/statisticsmenu.h @@ -1,10 +1,10 @@ #pragma once // 3rdparty lib includes -#include "widgets/menudisplaywithtime.h" #include // Local includes +#include "displays/menudisplaywithtime.h" #include "texts.h" class StatisticsMenu : diff --git a/main/displays/menus/taskmanagermenu.h b/main/displays/menus/taskmanagermenu.h index 37c24d8..e1d8b84 100644 --- a/main/displays/menus/taskmanagermenu.h +++ b/main/displays/menus/taskmanagermenu.h @@ -1,11 +1,11 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class TaskmanagerMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/tempomatmodesettingsmenu.cpp b/main/displays/menus/tempomatmodesettingsmenu.cpp index d94e4a6..0754106 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.cpp +++ b/main/displays/menus/tempomatmodesettingsmenu.cpp @@ -7,6 +7,7 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "changevaluedisplay_unifiedmodelmode.h" #include "accessors/settingsaccessors.h" @@ -16,7 +17,7 @@ namespace { using TempomatModeCruiseMotTgtChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, TempomatModeCruiseMotTgtAccessor, espgui::BackActionInterface>, @@ -24,7 +25,7 @@ using TempomatModeCruiseMotTgtChangeDisplay = espgui::makeComponent< >; using TempomatModeModelModeChangeScreen = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, TempomatModeModelModeAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/tempomatmodesettingsmenu.h b/main/displays/menus/tempomatmodesettingsmenu.h index e10cdaa..6d02a92 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.h +++ b/main/displays/menus/tempomatmodesettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class TempomatModeSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/timersmenu.cpp b/main/displays/menus/timersmenu.cpp index 47da55f..4632fc7 100644 --- a/main/displays/menus/timersmenu.cpp +++ b/main/displays/menus/timersmenu.cpp @@ -1,32 +1,34 @@ #include "timersmenu.h" -// local includes -#include "accessors/settingsaccessors.h" +// 3rdparty lib includes #include "actions/switchscreenaction.h" #include "changevaluedisplay.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "icons/back.h" + +// local includes +#include "displays/bobbychangevaluedisplay.h" +#include "accessors/settingsaccessors.h" +#include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "texts.h" -using namespace espgui; - namespace { -using StatsUpdateRateChangeDisplay = makeComponent< - ChangeValueDisplay, - StaticText, +using StatsUpdateRateChangeDisplay = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, StatsUpdateRateAccessor, - BackActionInterface>, - SwitchScreenAction + espgui::BackActionInterface>, + espgui::SwitchScreenAction >; } TimersMenu::TimersMenu() { + using namespace espgui; constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } void TimersMenu::back() { - switchScreen(); + espgui::switchScreen(); } diff --git a/main/displays/menus/timersmenu.h b/main/displays/menus/timersmenu.h index a7773fa..8b3d156 100644 --- a/main/displays/menus/timersmenu.h +++ b/main/displays/menus/timersmenu.h @@ -1,14 +1,12 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" -using namespace espgui; - class TimersMenu : - public MenuDisplay, - public StaticText + public BobbyMenuDisplay, + public espgui::StaticText { public: TimersMenu(); diff --git a/main/displays/menus/timesettingsmenu.cpp b/main/displays/menus/timesettingsmenu.cpp index ff8ab82..1464893 100644 --- a/main/displays/menus/timesettingsmenu.cpp +++ b/main/displays/menus/timesettingsmenu.cpp @@ -16,10 +16,12 @@ #include "espstrutils.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "utils.h" #include "accessors/settingsaccessors.h" #include "displays/menus/settingsmenu.h" +namespace { class CurrentUtcDateTimeText : public virtual espgui::TextInterface { public: @@ -44,7 +46,7 @@ public: }; using TimezoneOffsetChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, TimezoneOffsetAccessor, espgui::BackActionInterface>, @@ -52,7 +54,7 @@ using TimezoneOffsetChangeDisplay = espgui::makeComponent< >; using DaylightSavingModeChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, DaylightSavingModeAccessor, espgui::BackActionInterface>, @@ -61,7 +63,7 @@ using DaylightSavingModeChangeDisplay = espgui::makeComponent< #ifdef FEATURE_NTP using TimeSyncModeChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, TimeSyncModeAccessor, espgui::BackActionInterface>, @@ -69,7 +71,7 @@ using TimeSyncModeChangeDisplay = espgui::makeComponent< >; using TimeSyncIntervalChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, TimeSyncIntervalAccessor, espgui::BackActionInterface>, @@ -85,6 +87,7 @@ public: } }; #endif +} // namespace using namespace espgui; diff --git a/main/displays/menus/timesettingsmenu.h b/main/displays/menus/timesettingsmenu.h index 1ea7eb7..91aa018 100644 --- a/main/displays/menus/timesettingsmenu.h +++ b/main/displays/menus/timesettingsmenu.h @@ -1,9 +1,7 @@ #pragma once -// 3rdparty lib includes -#include "widgets/menudisplaywithtime.h" - // local includes +#include "displays/menudisplaywithtime.h" #include "texts.h" class TimeSettingsMenu : diff --git a/main/displays/menus/udpcloudsettingsmenu.cpp b/main/displays/menus/udpcloudsettingsmenu.cpp index a9e4142..c3197d9 100644 --- a/main/displays/menus/udpcloudsettingsmenu.cpp +++ b/main/displays/menus/udpcloudsettingsmenu.cpp @@ -11,13 +11,14 @@ #include "icons/back.h" // local includes +#include "displays/bobbychangevaluedisplay.h" #include "accessors/settingsaccessors.h" #include "displays/menus/settingsmenu.h" #ifdef FEATURE_UDPCLOUD namespace { using UdpCloudSendRateChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, + BobbyChangeValueDisplay, espgui::StaticText, UdpCloudSendIntervalAccessor, espgui::BackActionInterface>, diff --git a/main/displays/menus/udpcloudsettingsmenu.h b/main/displays/menus/udpcloudsettingsmenu.h index 288a3a6..6f9adb8 100644 --- a/main/displays/menus/udpcloudsettingsmenu.h +++ b/main/displays/menus/udpcloudsettingsmenu.h @@ -1,14 +1,12 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" #ifdef FEATURE_UDPCLOUD class UdpCloudSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/menus/wifiscanmenu.cpp b/main/displays/menus/wifiscanmenu.cpp index 8108629..b78e86a 100644 --- a/main/displays/menus/wifiscanmenu.cpp +++ b/main/displays/menus/wifiscanmenu.cpp @@ -75,12 +75,12 @@ void WifiScanMenu::update() { if (m_reusableItems.empty()) { - auto &item = constructMenuItem>(); + auto &item = constructMenuItem(); item.setTitle(std::move(ssid)); } else { - std::unique_ptr> ptr = std::move(m_reusableItems.back()); + std::unique_ptr ptr = std::move(m_reusableItems.back()); m_reusableItems.pop_back(); ptr->setTitle(std::move(ssid)); emplaceMenuItem(std::move(ptr)); @@ -88,13 +88,13 @@ void WifiScanMenu::update() } else { - auto &item = *(makeComponent*)(&getMenuItem(i)); + auto &item = *(menu_item_t*)(&getMenuItem(i)); item.setTitle(std::move(ssid)); } } while (menuItemCount() > (result ? result->entries.size() : 0)) - m_reusableItems.emplace_back((makeComponent*)takeLastMenuItem().release()); + m_reusableItems.emplace_back((menu_item_t*)takeLastMenuItem().release()); emplaceMenuItem(std::move(backButton)); @@ -114,6 +114,8 @@ void WifiScanMenu::update() void WifiScanMenu::stop() { + Base::stop(); + wifi_stack::delete_scan_result(); } diff --git a/main/displays/menus/wifiscanmenu.h b/main/displays/menus/wifiscanmenu.h index 4e3e0a6..32bfd13 100644 --- a/main/displays/menus/wifiscanmenu.h +++ b/main/displays/menus/wifiscanmenu.h @@ -1,27 +1,34 @@ #pragma once -// local includes +// 3rdparty lib includes #include "actions/dummyaction.h" #include "actions/switchscreenaction.h" + +// local includes +#include "displays/bobbymenudisplay.h" #include "displays/menus/stationwifisettingsmenu.h" -#include "menudisplay.h" #include "texts.h" #include "utils.h" -using namespace std::chrono_literals; -using namespace espgui; - -class WifiScanMenu : public MenuDisplay, public BackActionInterface> +class WifiScanMenu : + public BobbyMenuDisplay, + public espgui::BackActionInterface> { - using Base = MenuDisplay; + using Base = BobbyMenuDisplay; + public: WifiScanMenu(); + std::string text() const override; + void start() override; void update() override; void stop() override; void back() override; + private: std::optional m_lastScanComplete; - std::vector>> m_reusableItems; + + using menu_item_t = espgui::makeComponent; + std::vector> m_reusableItems; }; diff --git a/main/displays/menus/wifisettingsmenu.h b/main/displays/menus/wifisettingsmenu.h index c9350d3..6cec6b1 100644 --- a/main/displays/menus/wifisettingsmenu.h +++ b/main/displays/menus/wifisettingsmenu.h @@ -1,13 +1,11 @@ #pragma once -// 3rdparty lib includes -#include "menudisplay.h" - // local includes +#include "displays/bobbymenudisplay.h" #include "texts.h" class WifiSettingsMenu : - public espgui::MenuDisplay, + public BobbyMenuDisplay, public espgui::StaticText { public: diff --git a/main/displays/metersdisplay.cpp b/main/displays/metersdisplay.cpp index 2dd31ff..c7e3f3e 100644 --- a/main/displays/metersdisplay.cpp +++ b/main/displays/metersdisplay.cpp @@ -15,6 +15,8 @@ using namespace espgui; void MetersDisplay::initScreen() { + Base::initScreen(); + tft.fillScreen(TFT_BLACK); m_vuMeter.start(); @@ -30,6 +32,8 @@ void MetersDisplay::initScreen() void MetersDisplay::redraw() { + Base::redraw(); + m_vuMeter.redraw(avgSpeedKmh); m_dischargingBar.redraw(sumCurrent<0.f?(-sumCurrent):0.f); @@ -47,24 +51,26 @@ void MetersDisplay::redraw() meters[5].redraw(fixCurrent(controllers.back.feedback.right.dcLink), -10, 10); } -void MetersDisplay::confirm() +void MetersDisplay::buttonPressed(espgui::Button button) { - switchScreen(); -} + Base::buttonPressed(button); -void MetersDisplay::back() -{ - switchScreen(); -} - -void MetersDisplay::rotate(int offset) -{ - if (offset < 0) + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + switchScreen(); + break; + case Button::Up: switchScreen(); - else if (offset > 0) + break; + case Button::Down: #ifdef FEATURE_BMS switchScreen(); #else switchScreen(); #endif + break; + } } diff --git a/main/displays/metersdisplay.h b/main/displays/metersdisplay.h index c9b8df4..fc22064 100644 --- a/main/displays/metersdisplay.h +++ b/main/displays/metersdisplay.h @@ -4,7 +4,6 @@ #include // 3rdparty lib includes -#include #include #include #include @@ -12,16 +11,18 @@ #include #include -class MetersDisplay : - public espgui::Display +// local includes +#include "bobbydisplay.h" + +class MetersDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: void initScreen() override; void redraw() override; - void confirm() override; - void back() override; - void rotate(int offset) override; + void buttonPressed(espgui::Button button) override; private: espgui::VuMeter m_vuMeter; diff --git a/main/displays/pingpongdisplay.cpp b/main/displays/pingpongdisplay.cpp index abd76a7..7558b10 100644 --- a/main/displays/pingpongdisplay.cpp +++ b/main/displays/pingpongdisplay.cpp @@ -20,6 +20,8 @@ PingPongDisplay::PingPongDisplay() : void PingPongDisplay::initScreen() { + Base::initScreen(); + espgui::tft.fillScreen(TFT_BLACK); espgui::tft.setRotation(1); @@ -28,6 +30,8 @@ void PingPongDisplay::initScreen() void PingPongDisplay::redraw() { + Base::redraw(); + lpaddle(); rpaddle(); @@ -38,17 +42,24 @@ void PingPongDisplay::redraw() void PingPongDisplay::stop() { + Base::stop(); + espgui::tft.setRotation(0); } -void PingPongDisplay::confirm() +void PingPongDisplay::buttonPressed(espgui::Button button) { - espgui::switchScreen(); -} + Base::buttonPressed(button); -void PingPongDisplay::back() -{ - espgui::switchScreen(); + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + espgui::switchScreen(); + break; + default:; + } } void PingPongDisplay::midline() diff --git a/main/displays/pingpongdisplay.h b/main/displays/pingpongdisplay.h index 2fd554e..2c79a6a 100644 --- a/main/displays/pingpongdisplay.h +++ b/main/displays/pingpongdisplay.h @@ -3,11 +3,13 @@ // system includes #include -// 3rdparty lib includes -#include "display.h" +// local includes +#include "bobbydisplay.h" -class PingPongDisplay : public espgui::Display +class PingPongDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: PingPongDisplay(); @@ -15,8 +17,7 @@ public: void redraw() override; void stop() override; - void confirm() override; - void back() override; + void buttonPressed(espgui::Button button) override; private: void midline(); diff --git a/main/displays/popups/alertdisplay.cpp b/main/displays/popups/alertdisplay.cpp index f89a971..aa68238 100644 --- a/main/displays/popups/alertdisplay.cpp +++ b/main/displays/popups/alertdisplay.cpp @@ -17,14 +17,19 @@ void AlertDisplay::initScreen() initOverlay(); } -void AlertDisplay::confirm() +void AlertDisplay::buttonPressed(espgui::Button button) { - closeOverlay(); -} + Base::buttonPressed(button); -void AlertDisplay::back() -{ - closeOverlay(); + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + closeOverlay(); + break; + default:; + } } void AlertDisplay::initOverlay() diff --git a/main/displays/popups/alertdisplay.h b/main/displays/popups/alertdisplay.h index cd4a77b..dbb30a2 100644 --- a/main/displays/popups/alertdisplay.h +++ b/main/displays/popups/alertdisplay.h @@ -3,11 +3,13 @@ // system includes #include -// 3rdparty lib includes -#include +// local includes +#include "displays/bobbydisplay.h" -class AlertDisplay : public espgui::Display +class AlertDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: AlertDisplay(std::string &&message, std::unique_ptr &&lastDisplay); @@ -16,8 +18,8 @@ public: //void update() override; //void redraw() override; //void stop() override; - void confirm() override; - void back() override; + + void buttonPressed(espgui::Button button) override; void initOverlay(); void closeOverlay(); diff --git a/main/displays/poweroffdisplay.cpp b/main/displays/poweroffdisplay.cpp index f84367b..7093bd3 100644 --- a/main/displays/poweroffdisplay.cpp +++ b/main/displays/poweroffdisplay.cpp @@ -14,6 +14,8 @@ using namespace std::chrono_literals; void PoweroffDisplay::start() { + Base::start(); + m_startTime = espchrono::millis_clock::now(); for (Controller &controller : controllers) @@ -22,6 +24,8 @@ void PoweroffDisplay::start() void PoweroffDisplay::initScreen() { + Base::initScreen(); + espgui::tft.fillScreen(TFT_BLACK); espgui::tft.setTextColor(TFT_YELLOW); @@ -37,20 +41,16 @@ void PoweroffDisplay::initScreen() void PoweroffDisplay::update() { + Base::update(); + if (espchrono::millis_clock::now() - m_startTime >= 1000ms) espgui::switchScreen(); } void PoweroffDisplay::stop() { + Base::stop(); + for (Controller &controller : controllers) controller.command.poweroff = false; } - -void PoweroffDisplay::confirm() -{ -} - -void PoweroffDisplay::back() -{ -} diff --git a/main/displays/poweroffdisplay.h b/main/displays/poweroffdisplay.h index 3ac0b78..3fa54ff 100644 --- a/main/displays/poweroffdisplay.h +++ b/main/displays/poweroffdisplay.h @@ -4,20 +4,18 @@ #include // local includes -#include "display.h" +#include "bobbydisplay.h" -class PoweroffDisplay : public espgui::Display +class PoweroffDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: void start() override; void initScreen() override; void update() override; - void redraw() override {} void stop() override; - void confirm() override; - void back() override; - private: espchrono::millis_clock::time_point m_startTime; }; diff --git a/main/displays/powersupplydisplay.cpp b/main/displays/powersupplydisplay.cpp index 5ed8339..587f812 100644 --- a/main/displays/powersupplydisplay.cpp +++ b/main/displays/powersupplydisplay.cpp @@ -12,6 +12,8 @@ #if defined(FEATURE_CAN) && defined(FEATURE_POWERSUPPLY) void PowerSupplyDisplay::initScreen() { + Base::initScreen(); + espgui::tft.fillScreen(TFT_BLACK); espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); @@ -25,22 +27,24 @@ void PowerSupplyDisplay::initScreen() void PowerSupplyDisplay::redraw() { + Base::redraw(); + m_voltageLabel.redraw(std::to_string(50.4) + 'V'); m_currentLabel.redraw(std::to_string(15.1) + 'A'); } -void PowerSupplyDisplay::confirm() +void PowerSupplyDisplay::buttonPressed(espgui::Button button) { - // TODO -} + Base::buttonPressed(button); -void PowerSupplyDisplay::back() -{ - espgui::switchScreen(); -} - -void PowerSupplyDisplay::rotate(int offset) -{ - // TODO + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + espgui::switchScreen(); + break; + default:; + } } #endif diff --git a/main/displays/powersupplydisplay.h b/main/displays/powersupplydisplay.h index afe7ba9..006c1f5 100644 --- a/main/displays/powersupplydisplay.h +++ b/main/displays/powersupplydisplay.h @@ -1,22 +1,21 @@ #pragma once // 3rdparty lib includes -#include "display.h" -#include "widgets/label.h" +#include + +// local includes +#include "bobbydisplay.h" #if defined(FEATURE_CAN) && defined(FEATURE_POWERSUPPLY) -class PowerSupplyDisplay : public espgui::Display +class PowerSupplyDisplay : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; public: void initScreen() override; void redraw() override; - void confirm() override; - void back() override; - - void rotate(int offset) override; + void buttonPressed(espgui::Button button) override; espgui::Label m_voltageLabel{120, 50}; espgui::Label m_currentLabel{120, 75}; diff --git a/main/displays/qrcodedebug.cpp b/main/displays/qrcodedebug.cpp index 5aa2107..cf9f0fa 100644 --- a/main/displays/qrcodedebug.cpp +++ b/main/displays/qrcodedebug.cpp @@ -13,29 +13,38 @@ QrCodeDebugDisplay::QrCodeDebugDisplay() { } -void QrCodeDebugDisplay::back() -{ - switchScreen(); -} - void QrCodeDebugDisplay::initScreen() { Base::initScreen(); } -void QrCodeDebugDisplay::confirm() +void QrCodeDebugDisplay::buttonPressed(espgui::Button button) { - uint8_t qrcodeBytes[qrcode_getBufferSize(7)]; - qrcode_initText(&m_qrcode, qrcodeBytes, 7, ECC_MEDIUM, fmt::format("WIFI:T:WPA;S:{};P:{};", deviceName, stringSettings.ap_password).c_str()); + Base::buttonPressed(button); - for (uint8_t y = 0; y < m_qrcode.size; y++) { - for (uint8_t x = 0; x < m_qrcode.size; x++) { - if (qrcode_getModule(&m_qrcode, x, y)) - { - tft.drawPixel(x+2,y+2, TFT_BLACK); - } else { - tft.drawPixel(x+2,y+2, TFT_WHITE); + switch (button) + { + using espgui::Button; + case Button::Left: + switchScreen(); + break; + case Button::Right: + { + uint8_t qrcodeBytes[qrcode_getBufferSize(7)]; + qrcode_initText(&m_qrcode, qrcodeBytes, 7, ECC_MEDIUM, fmt::format("WIFI:T:WPA;S:{};P:{};", deviceName, stringSettings.ap_password).c_str()); + + for (uint8_t y = 0; y < m_qrcode.size; y++) { + for (uint8_t x = 0; x < m_qrcode.size; x++) { + if (qrcode_getModule(&m_qrcode, x, y)) + { + tft.drawPixel(x+2,y+2, TFT_BLACK); + } else { + tft.drawPixel(x+2,y+2, TFT_WHITE); + } } } + break; + } + default:; } } diff --git a/main/displays/qrcodedebug.h b/main/displays/qrcodedebug.h index 7a6305d..8782625 100644 --- a/main/displays/qrcodedebug.h +++ b/main/displays/qrcodedebug.h @@ -1,18 +1,23 @@ #pragma once // 3rdparty lib includes -#include #include +// local includes +#include "bobbydisplay.h" + class QrCodeDebugDisplay : - public espgui::Display + public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; + public: QrCodeDebugDisplay(); + void initScreen() override; - void confirm() override; - void back() override; + + void buttonPressed(espgui::Button button) override; + private: QRCode m_qrcode; }; diff --git a/main/displays/qrdisplay.cpp b/main/displays/qrdisplay.cpp index 2f75d99..01f813d 100644 --- a/main/displays/qrdisplay.cpp +++ b/main/displays/qrdisplay.cpp @@ -9,7 +9,11 @@ using namespace espgui; -QrDisplay::QrDisplay(std::string_view msg, uint8_t ver) : m_msg{msg}, m_ver{ver} {} +QrDisplay::QrDisplay(std::string_view msg, uint8_t ver) : + m_msg{msg}, + m_ver{ver} +{ +} void QrDisplay::initScreen() { @@ -35,12 +39,15 @@ void QrDisplay::initScreen() } } -void QrDisplay::back() +void QrDisplay::buttonPressed(espgui::Button button) { - switchScreen(); -} + Base::buttonPressed(button); -void QrDisplay::confirm() -{ - switchScreen(); + switch (button) + { + using espgui::Button; + case Button::Left: switchScreen(); break; + case Button::Right: switchScreen(); break; + default:; + } } diff --git a/main/displays/qrdisplay.h b/main/displays/qrdisplay.h index 3ed9598..807b26c 100644 --- a/main/displays/qrdisplay.h +++ b/main/displays/qrdisplay.h @@ -1,17 +1,22 @@ #pragma once // 3rd party includes -#include #include -class QrDisplay : - public espgui::Display +// local includes +#include "bobbydisplay.h" + +class QrDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: QrDisplay(std::string_view msg, uint8_t ver); + void initScreen() override; - void confirm() override; - void back() override; + + void buttonPressed(espgui::Button button) override; + private: std::string_view m_msg; uint8_t m_ver; diff --git a/main/displays/qrimportdisplay.cpp b/main/displays/qrimportdisplay.cpp index 2a207d3..f8c855a 100644 --- a/main/displays/qrimportdisplay.cpp +++ b/main/displays/qrimportdisplay.cpp @@ -16,39 +16,24 @@ constexpr const char * const TAG = "qrimport"; using namespace espgui; -QrImportDisplay::QrImportDisplay(std::string nvs_key) : m_nvs_key{nvs_key} {} +QrImportDisplay::QrImportDisplay(std::string nvs_key) : + m_nvs_key{nvs_key} +{ +} void QrImportDisplay::start() { + Base::start(); + m_statuslabel.start(); qrimport::setup_request(); m_statuslabel.redraw(fmt::format("Request not running.")); } -void QrImportDisplay::back() -{ - if (!qrimport::get_request_running()) - { - switchScreen(); - } -} - -void QrImportDisplay::confirm() -{ - // start request - if (!m_confirmLocked) - { - if (const auto result = qrimport::start_qr_request(); !result) - { - switchScreen(); - } - else - m_confirmLocked = true; - } -} - void QrImportDisplay::update() { + Base::update(); + m_expected = qrimport::check_request(); if (m_expected) { @@ -69,6 +54,8 @@ void QrImportDisplay::update() void QrImportDisplay::redraw() { + Base::redraw(); + if (qrimport::get_request_running()) { if (!m_expected) @@ -83,3 +70,32 @@ void QrImportDisplay::redraw() m_statuslabel.redraw("Request not running"); } } + +void QrImportDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Left: + if (!qrimport::get_request_running()) + { + switchScreen(); + } + break; + case Button::Right: + // start request + if (!m_confirmLocked) + { + if (const auto result = qrimport::start_qr_request(); !result) + { + switchScreen(); + } + else + m_confirmLocked = true; + } + break; + default:; + } +} diff --git a/main/displays/qrimportdisplay.h b/main/displays/qrimportdisplay.h index 9f080d6..c456ed1 100644 --- a/main/displays/qrimportdisplay.h +++ b/main/displays/qrimportdisplay.h @@ -1,21 +1,26 @@ #pragma once // 3rd party includes -#include #include #include #include -class QrImportDisplay : public espgui::Display +// local includes +#include "bobbydisplay.h" + +class QrImportDisplay : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; + public: QrImportDisplay(std::string nvs_key); + void start() override; - void back() override; void update() override; void redraw() override; - void confirm() override; + + void buttonPressed(espgui::Button button) override; + private: bool m_confirmLocked{false}; espgui::Label m_statuslabel{5,(espgui::tft.height() / 2)-espgui::tft.fontHeight(4)}; diff --git a/main/displays/spirodisplay.cpp b/main/displays/spirodisplay.cpp index 7475771..164a6d9 100644 --- a/main/displays/spirodisplay.cpp +++ b/main/displays/spirodisplay.cpp @@ -12,11 +12,14 @@ void SpiroDisplay::initScreen() { Base::initScreen(); + espgui::tft.setRotation(3); } void SpiroDisplay::redraw() { + Base::redraw(); + for (int j = 0; j < std::max(1, n); j++) { if (i == 0) @@ -72,9 +75,26 @@ void SpiroDisplay::redraw() void SpiroDisplay::stop() { + Base::stop(); + espgui::tft.setRotation(0); } +void SpiroDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + espgui::switchScreen(); + break; + default:; + } +} + unsigned int SpiroDisplay::rainbow(int value) { // Value is expected to be in range 0-127 @@ -108,13 +128,3 @@ unsigned int SpiroDisplay::rainbow(int value) } return (red << 11) + (green << 5) + blue; } - -void SpiroDisplay::confirm() -{ - espgui::switchScreen(); -} - -void SpiroDisplay::back() -{ - espgui::switchScreen(); -} diff --git a/main/displays/spirodisplay.h b/main/displays/spirodisplay.h index 67dd2b6..4974500 100644 --- a/main/displays/spirodisplay.h +++ b/main/displays/spirodisplay.h @@ -4,20 +4,18 @@ #include // local includes -#include "display.h" -#include "actions/switchscreenaction.h" +#include "bobbydisplay.h" -class SpiroDisplay : public espgui::Display +class SpiroDisplay : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; public: void initScreen() override; void redraw() override; void stop() override; - void confirm() override; - void back() override; + void buttonPressed(espgui::Button button) override; private: constexpr static auto DEG2RAD = 0.0174532925; diff --git a/main/displays/starfielddisplay.cpp b/main/displays/starfielddisplay.cpp index 80e0121..377f358 100644 --- a/main/displays/starfielddisplay.cpp +++ b/main/displays/starfielddisplay.cpp @@ -18,18 +18,10 @@ StarfieldDisplay::StarfieldDisplay() : { } -void StarfieldDisplay::confirm() -{ - espgui::switchScreen(); -} - -void StarfieldDisplay::back() -{ - espgui::switchScreen(); -} - void StarfieldDisplay::initScreen() { + Base::initScreen(); + espgui::tft.fillScreen(TFT_BLACK); espgui::tft.setRotation(1); @@ -41,6 +33,8 @@ void StarfieldDisplay::initScreen() void StarfieldDisplay::redraw() { + Base::redraw(); + uint8_t spawnDepthVariation = 255; for(int i = 0; i < NSTARS; ++i) @@ -80,5 +74,22 @@ void StarfieldDisplay::redraw() void StarfieldDisplay::stop() { + Base::stop(); + espgui::tft.setRotation(0); } + +void StarfieldDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + espgui::switchScreen(); + break; + default:; + } +} diff --git a/main/displays/starfielddisplay.h b/main/displays/starfielddisplay.h index f650e55..b0ddf11 100644 --- a/main/displays/starfielddisplay.h +++ b/main/displays/starfielddisplay.h @@ -4,20 +4,21 @@ #include // local includes -#include "display.h" +#include "bobbydisplay.h" -class StarfieldDisplay : public espgui::Display +class StarfieldDisplay : public BobbyDisplay { + using Base = BobbyDisplay; + public: StarfieldDisplay(); - void confirm() override; - void back() override; - void initScreen() override; void redraw() override; void stop() override; + void buttonPressed(espgui::Button button) override; + private: static constexpr auto NSTARS = 1024; diff --git a/main/displays/statusdisplay.cpp b/main/displays/statusdisplay.cpp index e06148f..91ae27b 100644 --- a/main/displays/statusdisplay.cpp +++ b/main/displays/statusdisplay.cpp @@ -181,28 +181,28 @@ clearIp: m_labelProfile.redraw(profile ? std::to_string(*profile) : "-"); } -void StatusDisplay::confirm() +void StatusDisplay::buttonPressed(espgui::Button button) { - switchScreen(); -} + Base::buttonPressed(button); -void StatusDisplay::back() -{ - -} - -void StatusDisplay::rotate(int offset) -{ - Base::rotate(offset); - - if (offset < 0) + switch (button) + { + using espgui::Button; + case Button::Left: + case Button::Right: + switchScreen(); + break; + case Button::Up: #ifdef FEATURE_BMS switchScreen(); #else switchScreen(); #endif - else if (offset > 0) + break; + case Button::Down: switchScreen(); + break; + } } StatusDisplay::BoardStatus::BoardStatus(int y) : diff --git a/main/displays/statusdisplay.h b/main/displays/statusdisplay.h index 7b43ce7..e810b0d 100644 --- a/main/displays/statusdisplay.h +++ b/main/displays/statusdisplay.h @@ -4,31 +4,28 @@ #include // 3rdparty lib includes -#include #include #include #include #include // local includes +#include "bobbydisplay.h" #include "modeinterface.h" #include "globals.h" #include "utils.h" #include "icons/alert.h" #include "battery.h" -class StatusDisplay : - public espgui::Display +class StatusDisplay : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; public: void initScreen() override; void redraw() override; - void confirm() override; - void back() override; - void rotate(int offset) override; + void buttonPressed(espgui::Button button) override; private: class BoardStatus diff --git a/main/displays/updatedisplay.cpp b/main/displays/updatedisplay.cpp index f4015ae..9a33d10 100644 --- a/main/displays/updatedisplay.cpp +++ b/main/displays/updatedisplay.cpp @@ -101,14 +101,21 @@ void UpdateDisplay::redraw() } } -void UpdateDisplay::confirm() +void UpdateDisplay::buttonPressed(espgui::Button button) { - if (const auto result = triggerOta(stringSettings.otaUrl); !result) - ESP_LOGE("BOBBY", "triggerOta() failed with %.*s", result.error().size(), result.error().data()); -} + Base::buttonPressed(button); -void UpdateDisplay::back() -{ - espgui::switchScreen(); + switch (button) + { + using espgui::Button; + case Button::Left: + espgui::switchScreen(); + break; + case Button::Right: + if (const auto result = triggerOta(stringSettings.otaUrl); !result) + ESP_LOGE("BOBBY", "triggerOta() failed with %.*s", result.error().size(), result.error().data()); + break; + default:; + } } #endif diff --git a/main/displays/updatedisplay.h b/main/displays/updatedisplay.h index 087381f..b845f3b 100644 --- a/main/displays/updatedisplay.h +++ b/main/displays/updatedisplay.h @@ -1,21 +1,22 @@ #pragma once // 3rdparty lib includes +#include +#include // local includes -#include "display.h" -#include "widgets/label.h" -#include "widgets/progressbar.h" +#include "bobbydisplay.h" #ifdef FEATURE_OTA -class UpdateDisplay : public espgui::Display +class UpdateDisplay : public BobbyDisplay { - using Base = espgui::Display; + using Base = BobbyDisplay; + public: void initScreen() override; void redraw() override; - void confirm() override; - void back() override; + + void buttonPressed(espgui::Button button) override; private: espgui::Label m_statusLabel{120, 75}; diff --git a/main/screens.cpp b/main/screens.cpp index 37bb05d..11c4ef3 100644 --- a/main/screens.cpp +++ b/main/screens.cpp @@ -34,7 +34,12 @@ void updateDisplay() rotated = 0; if (currentDisplay) - currentDisplay->rotate(rotatedCopy); + { + if (rotatedCopy < 0) + currentDisplay->buttonPressed(espgui::Button::Up); + else + currentDisplay->buttonPressed(espgui::Button::Down); + } } if (requestFullRedraw) @@ -52,7 +57,7 @@ void updateDisplay() confirmButtonPressed = false; if (currentDisplay) - currentDisplay->confirm(); + currentDisplay->buttonPressed(espgui::Button::Right); } if (confirmButtonLongPressed) @@ -66,7 +71,7 @@ void updateDisplay() backButtonPressed = false; if (currentDisplay) - currentDisplay->back(); + currentDisplay->buttonPressed(espgui::Button::Left); } if (backButtonLongPressed)