diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 1d350ca..efe5a56 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -53,6 +53,7 @@ set(headers debugtexthelpers.h displays/bmsdisplay.h displays/bobbydisplay.h + displays/bobbydisplaywithtitle.h displays/bobbychangevaluedisplay.h displays/bobbymenudisplay.h displays/calibratedisplay.h @@ -274,6 +275,7 @@ set(sources debugtexthelpers.cpp displays/bmsdisplay.cpp displays/bobbydisplay.cpp + displays/bobbydisplaywithtitle.cpp displays/bobbychangevaluedisplay.cpp displays/bobbymenudisplay.cpp displays/calibratedisplay.cpp 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/bobbydisplaywithtitle.cpp b/main/displays/bobbydisplaywithtitle.cpp new file mode 100644 index 0000000..ef5cce1 --- /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..21905ea --- /dev/null +++ b/main/displays/bobbydisplaywithtitle.h @@ -0,0 +1,22 @@ +#pragma once + +// system includes +#include + +// 3rdparty lib includes +#include + +// local includes +#include "bobbydisplay.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/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/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/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.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.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.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.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.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.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.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 b8edfc0..f19f622 100644 --- a/main/displays/menus/greenpassmenu.h +++ b/main/displays/menus/greenpassmenu.h @@ -13,8 +13,6 @@ class GreenPassMenu : public BobbyMenuDisplay, public espgui::StaticText { - using Base = BobbyMenuDisplay; - public: GreenPassMenu(); void back() override; 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.h b/main/displays/menus/invertmenu.h index 15f073d..3fa160d 100644 --- a/main/displays/menus/invertmenu.h +++ b/main/displays/menus/invertmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" using namespace espgui; diff --git a/main/displays/menus/larsmmodesettingsmenu.h b/main/displays/menus/larsmmodesettingsmenu.h index 61a60d6..ce32de3 100644 --- a/main/displays/menus/larsmmodesettingsmenu.h +++ b/main/displays/menus/larsmmodesettingsmenu.h @@ -3,7 +3,7 @@ // 3rdparty lib includes // local includes -#include "menudisplay.h" +#include "displays/bobbymenudisplay.h" #include "texts.h" class LarsmModeSettingsMenu : 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..adf72ae 100644 --- a/main/displays/statusdisplay.h +++ b/main/displays/statusdisplay.h @@ -4,13 +4,13 @@ #include // 3rdparty lib includes -#include #include #include #include #include // local includes +#include "bobbydisplay.h" #include "modeinterface.h" #include "globals.h" #include "utils.h" @@ -18,17 +18,15 @@ #include "battery.h" class StatusDisplay : - public espgui::Display + 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/widgets/menudisplaywithtime.cpp b/main/widgets/menudisplaywithtime.cpp index d1aec61..c3be460 100644 --- a/main/widgets/menudisplaywithtime.cpp +++ b/main/widgets/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/widgets/menudisplaywithtime.h index afc968f..97d8d2a 100644 --- a/main/widgets/menudisplaywithtime.h +++ b/main/widgets/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 {