Merge pull request #182 from bobbycar-graz/new-input-system

New input system
This commit is contained in:
2021-12-28 14:18:45 +01:00
committed by GitHub
137 changed files with 1686 additions and 867 deletions

View File

@ -36,6 +36,7 @@ set(headers
bmsutils.h bmsutils.h
buildserver.h buildserver.h
buttons.h buttons.h
bobbybuttons.h
can.h can.h
changevaluedisplay_bluetoothmode.h changevaluedisplay_bluetoothmode.h
changevaluedisplay_controlmode.h changevaluedisplay_controlmode.h
@ -52,6 +53,12 @@ set(headers
debuginputhandler.h debuginputhandler.h
debugtexthelpers.h debugtexthelpers.h
displays/bmsdisplay.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/calibratedisplay.h
displays/calibratevoltagedisplay.h displays/calibratevoltagedisplay.h
displays/qrdisplay.h displays/qrdisplay.h
@ -63,6 +70,7 @@ set(headers
displays/garagedisplay.h displays/garagedisplay.h
displays/ledstripcolorsdisplay.h displays/ledstripcolorsdisplay.h
displays/lockscreen.h displays/lockscreen.h
displays/menudisplaywithtime.cpp
displays/menus/aboutmenu.h displays/menus/aboutmenu.h
displays/menus/accesspointwifisettingsmenu.h displays/menus/accesspointwifisettingsmenu.h
displays/menus/batterydebugmenu.h displays/menus/batterydebugmenu.h
@ -211,7 +219,7 @@ set(headers
webserver_settings.h webserver_settings.h
webserver_stringsettings.h webserver_stringsettings.h
widgets/doubleprogressbar.h widgets/doubleprogressbar.h
widgets/menudisplaywithtime.h displays/menudisplaywithtime.h
wifi_bobbycar.h wifi_bobbycar.h
wifitexthelpers.h wifitexthelpers.h
) )
@ -254,6 +262,7 @@ set(sources
bmsutils.cpp bmsutils.cpp
buildserver.cpp buildserver.cpp
buttons.cpp buttons.cpp
bobbybuttons.cpp
can.cpp can.cpp
changevaluedisplay_bluetoothmode.cpp changevaluedisplay_bluetoothmode.cpp
changevaluedisplay_controlmode.cpp changevaluedisplay_controlmode.cpp
@ -270,6 +279,12 @@ set(sources
debuginputhandler.cpp debuginputhandler.cpp
debugtexthelpers.cpp debugtexthelpers.cpp
displays/bmsdisplay.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/calibratedisplay.cpp
displays/calibratevoltagedisplay.cpp displays/calibratevoltagedisplay.cpp
displays/qrdisplay.cpp displays/qrdisplay.cpp
@ -430,7 +445,6 @@ set(sources
webserver_settings.cpp webserver_settings.cpp
webserver_stringsettings.cpp webserver_stringsettings.cpp
widgets/doubleprogressbar.cpp widgets/doubleprogressbar.cpp
widgets/menudisplaywithtime.cpp
wifi_bobbycar.cpp wifi_bobbycar.cpp
wifitexthelpers.cpp wifitexthelpers.cpp
) )

65
main/bobbybuttons.cpp Normal file
View File

@ -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);
}

26
main/bobbybuttons.h Normal file
View File

@ -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;
};

View File

@ -11,6 +11,8 @@ using namespace espgui;
void BmsDisplay::initScreen() void BmsDisplay::initScreen()
{ {
Base::initScreen();
tft.fillScreen(TFT_BLACK); tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.setTextColor(TFT_WHITE, TFT_BLACK);
@ -43,6 +45,8 @@ void BmsDisplay::initScreen()
void BmsDisplay::redraw() void BmsDisplay::redraw()
{ {
Base::redraw();
if (bluetoothSerial.hasClient()) if (bluetoothSerial.hasClient())
tft.setTextColor(TFT_GREEN, TFT_BLACK); tft.setTextColor(TFT_GREEN, TFT_BLACK);
else else
@ -90,16 +94,15 @@ void BmsDisplay::redraw()
m_cycleLabel.clear(); m_cycleLabel.clear();
} }
void BmsDisplay::rotate(int offset) void BmsDisplay::buttonPressed(espgui::Button button)
{ {
if (offset < 0) Base::buttonPressed(button);
switchScreen<MetersDisplay>();
else if (offset > 0)
switchScreen<StatusDisplay>();
}
void BmsDisplay::confirm() switch (button)
{ {
switchScreen<MainMenu>(); case Button::Right: switchScreen<MainMenu>(); break;
case Button::Up: switchScreen<MetersDisplay>(); break;
case Button::Down: switchScreen<StatusDisplay>();
}
} }
#endif #endif

View File

@ -3,24 +3,26 @@
#if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS)
// 3rdparty lib includes // 3rdparty lib includes
#include <fmt/core.h> #include <fmt/core.h>
#include <actions/switchscreenaction.h>
#include <widgets/label.h>
#include <screenmanager.h>
// local includes // local includes
#include "display.h"
#include "actions/switchscreenaction.h"
#include "globals.h" #include "globals.h"
#include "bmsutils.h" #include "bmsutils.h"
#include "widgets/label.h" #include "bobbydisplay.h"
#include "screenmanager.h"
class BmsDisplay : class BmsDisplay :
public espgui::Display, public BobbyDisplay,
public espgui::DummyBack public espgui::DummyBack
{ {
using Base = BobbyDisplay;
public: public:
void initScreen() override; void initScreen() override;
void redraw() override; void redraw() override;
void confirm() override;
void rotate(int offset) override; void buttonPressed(espgui::Button button) override;
espgui::Label m_statusLabel{200, 0}; espgui::Label m_statusLabel{200, 0};

View File

@ -0,0 +1 @@
#include "bobbychangevaluedisplay.h"

View File

@ -0,0 +1,89 @@
#pragma once
// 3rdparty lib includes
#include <changevaluedisplay.h>
// local includes
#include "bobbybuttons.h"
template<typename Tvalue>
class BobbyChangeValueDisplay : public espgui::ChangeValueDisplay<Tvalue>
{
using Base = espgui::ChangeValueDisplay<Tvalue>;
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<typename Tvalue>
void BobbyChangeValueDisplay<Tvalue>::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<typename Tvalue>
void BobbyChangeValueDisplay<Tvalue>::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<typename Tvalue>
void BobbyChangeValueDisplay<Tvalue>::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<typename Tvalue>
void BobbyChangeValueDisplay<Tvalue>::buttonReleased(espgui::Button button)
{
//Base::buttonReleased(button);
}

View File

@ -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);
}

View File

@ -0,0 +1,19 @@
#pragma once
// 3rdparty lib includes
#include <display.h>
// 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;
};

View File

@ -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);
}

View File

@ -0,0 +1,19 @@
#pragma once
// 3rdparty lib includes
#include <displaywithtitle.h>
// 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;
};

View File

@ -0,0 +1 @@
#include "bobbygraphdisplay.h"

View File

@ -0,0 +1,89 @@
#pragma once
// 3rdparty lib includes
#include <graphdisplay.h>
// local includes
#include "bobbybuttons.h"
template<size_t COUNT>
class BobbyGraphDisplay : public espgui::GraphDisplay<COUNT>
{
using Base = espgui::GraphDisplay<COUNT>;
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<size_t COUNT>
void BobbyGraphDisplay<COUNT>::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<size_t COUNT>
void BobbyGraphDisplay<COUNT>::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<size_t COUNT>
void BobbyGraphDisplay<COUNT>::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<size_t COUNT>
void BobbyGraphDisplay<COUNT>::buttonReleased(espgui::Button button)
{
//Base::buttonReleased(button);
}

View File

@ -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);
}

View File

@ -0,0 +1,19 @@
#pragma once
// 3rdparty lib includes
#include <menudisplay.h>
// 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;
};

View File

@ -0,0 +1 @@
#include "bobbysplitgraphdisplay.h"

View File

@ -0,0 +1,90 @@
#pragma once
// 3rdparty lib includes
#include <splitgraphdisplay.h>
// local includes
#include "bobbybuttons.h"
template<std::size_t COUNT0, std::size_t COUNT1>
class BobbySplitGraphDisplay : public espgui::SplitGraphDisplay<COUNT0, COUNT1>
{
using Base = espgui::SplitGraphDisplay<COUNT0, COUNT1>;
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<std::size_t COUNT0, std::size_t COUNT1>
void BobbySplitGraphDisplay<COUNT0, COUNT1>::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<std::size_t COUNT0, std::size_t COUNT1>
void BobbySplitGraphDisplay<COUNT0, COUNT1>::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<std::size_t COUNT0, std::size_t COUNT1>
void BobbySplitGraphDisplay<COUNT0, COUNT1>::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<std::size_t COUNT0, std::size_t COUNT1>
void BobbySplitGraphDisplay<COUNT0, COUNT1>::buttonReleased(espgui::Button button)
{
//Base::buttonReleased(button);
}

View File

@ -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; switch (button)
if (m_selectedButton < 0)
m_selectedButton = 1;
if (m_selectedButton > 1)
m_selectedButton = 0;
}
void CalibrateDisplay::confirm()
{
switch (m_selectedButton)
{ {
case 0: // left button pressed using espgui::Button;
if (!raw_gas || !raw_brems || !m_gas || !m_brems) case Button::Up:
return; 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) switch (m_status)
{ {
case Status::Begin: 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) if (m_bootup)
espgui::switchScreen<StatusDisplay>(); espgui::switchScreen<StatusDisplay>();
else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked)
{
espgui::switchScreen<MainMenu>();
settings.lockscreen.locked = false;
saveSettings();
}
else else
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>(); espgui::switchScreen<BoardcomputerHardwareSettingsMenu>();
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<StatusDisplay>();
else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked)
{
espgui::switchScreen<MainMenu>();
settings.lockscreen.locked = false;
saveSettings();
}
else
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>();
break; break;
case Status::GasMin: case Button::Right:
case Status::GasMax: switch (m_selectedButton)
case Status::BremsMin: {
case Status::BremsMax: case 0: // left button pressed
case Status::Confirm: if (!raw_gas || !raw_brems || !m_gas || !m_brems)
m_selectedButton = 0; return;
m_status = Status::Begin;
copyFromSettings(); 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<StatusDisplay>();
else
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>();
}
break;
case 1: // right button pressed
goto back;
}
break;
} }
} }

View File

@ -7,24 +7,24 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <fmt/core.h> #include <fmt/core.h>
#include <cpputils.h> #include <cpputils.h>
#include <displaywithtitle.h>
#include <actions/switchscreenaction.h> #include <actions/switchscreenaction.h>
#include <widgets/label.h> #include <widgets/label.h>
#include <widgets/progressbar.h> #include <widgets/progressbar.h>
// local includes // local includes
#include "bobbydisplaywithtitle.h"
#include "globals.h" #include "globals.h"
#include "utils.h" #include "utils.h"
#include "texts.h" #include "texts.h"
#include "modes/ignoreinputmode.h" #include "modes/ignoreinputmode.h"
class CalibrateDisplay : public espgui::DisplayWithTitle class CalibrateDisplay : public BobbyDisplayWithTitle
{ {
using Base = espgui::DisplayWithTitle; using Base = BobbyDisplayWithTitle;
public: public:
CalibrateDisplay() = default; CalibrateDisplay() = default;
CalibrateDisplay(bool bootup); explicit CalibrateDisplay(bool bootup);
std::string text() const override; std::string text() const override;
void start() override; void start() override;
@ -33,10 +33,7 @@ public:
void redraw() override; void redraw() override;
void stop() override; void stop() override;
void rotate(int offset) override; void buttonPressed(espgui::Button button) override;
void confirm() override;
void back() override;
private: private:
void copyFromSettings(); void copyFromSettings();

View File

@ -1,21 +1,23 @@
#pragma once #pragma once
// 3rdparty lib includes
#include <menuitem.h>
#include <icons/back.h>
#include <actions/dummyaction.h>
#include <actions/switchscreenaction.h>
#include <widgets/label.h>
// Local includes // Local includes
#include "menudisplay.h" #include "bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h"
#include "icons/back.h"
#include "icons/settings.h" #include "icons/settings.h"
#include "texts.h" #include "texts.h"
#include "actions/dummyaction.h"
#include "actions/switchscreenaction.h"
#include "battery.h" #include "battery.h"
#include "menus/batterymenu.h" #include "menus/batterymenu.h"
#include "widgets/label.h"
#include "globals.h" #include "globals.h"
class CalibrateVoltageDisplay : class CalibrateVoltageDisplay :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BATTERY_CALIBRATE> public espgui::StaticText<TEXT_BATTERY_CALIBRATE>
{ {
public: public:

View File

@ -11,18 +11,24 @@
void GameOfLifeDisplay::start() void GameOfLifeDisplay::start()
{ {
Base::start();
m_grid = std::make_unique<std::bitset<GRIDX*GRIDY>>(); m_grid = std::make_unique<std::bitset<GRIDX*GRIDY>>();
m_newgrid = std::make_unique<std::bitset<GRIDX*GRIDY>>(); m_newgrid = std::make_unique<std::bitset<GRIDX*GRIDY>>();
} }
void GameOfLifeDisplay::initScreen() void GameOfLifeDisplay::initScreen()
{ {
Base::initScreen();
espgui::tft.setRotation(3); espgui::tft.setRotation(3);
espgui::tft.fillScreen(TFT_BLACK); espgui::tft.fillScreen(TFT_BLACK);
} }
void GameOfLifeDisplay::redraw() void GameOfLifeDisplay::redraw()
{ {
Base::redraw();
if (gen == 0) if (gen == 0)
{ {
espgui::tft.fillScreen(TFT_BLACK); espgui::tft.fillScreen(TFT_BLACK);
@ -40,19 +46,26 @@ void GameOfLifeDisplay::redraw()
void GameOfLifeDisplay::stop() void GameOfLifeDisplay::stop()
{ {
Base::stop();
espgui::tft.setRotation(0); espgui::tft.setRotation(0);
m_grid = nullptr; m_grid = nullptr;
m_newgrid = nullptr; m_newgrid = nullptr;
} }
void GameOfLifeDisplay::confirm() void GameOfLifeDisplay::buttonPressed(espgui::Button button)
{ {
espgui::switchScreen<DemosMenu>(); Base::buttonPressed(button);
}
void GameOfLifeDisplay::back() switch (button)
{ {
espgui::switchScreen<DemosMenu>(); using espgui::Button;
case Button::Left:
case Button::Right:
espgui::switchScreen<DemosMenu>();
break;
default:;
}
} }
void GameOfLifeDisplay::drawGrid() void GameOfLifeDisplay::drawGrid()

View File

@ -5,11 +5,11 @@
#include <memory> #include <memory>
// local includes // 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: public:
void start() override; void start() override;
@ -17,8 +17,7 @@ public:
void redraw() override; void redraw() override;
void stop() override; void stop() override;
void confirm() override; void buttonPressed(espgui::Button button);
void back() override;
private: private:

View File

@ -1,20 +1,26 @@
#pragma once #pragma once
// system includes
#include <array> #include <array>
#include <string> #include <string>
#include "display.h" // 3rdparty lib includes
#include "actions/switchscreenaction.h" #include <actions/switchscreenaction.h>
#include <widgets/label.h>
#include <widgets/progressbar.h>
// local includes
#include "bobbydisplay.h"
#include "globals.h" #include "globals.h"
#include "texts.h" #include "texts.h"
#include "widgets/label.h"
#include "widgets/progressbar.h"
#include "modes/ignoreinputmode.h" #include "modes/ignoreinputmode.h"
namespace { namespace {
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
class GametrakCalibrateDisplay : public Display, public ConfirmActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>> class GametrakCalibrateDisplay : public BobbyDisplay, public ConfirmActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
{ {
using Base = BobbyDisplay;
public: public:
void initScreen() override; void initScreen() override;
void redraw() override; void redraw() override;
@ -38,6 +44,8 @@ private:
void GametrakCalibrateDisplay::initScreen() void GametrakCalibrateDisplay::initScreen()
{ {
Base::initScreen();
tft.fillScreen(TFT_BLACK); tft.fillScreen(TFT_BLACK);
tft.setTextFont(4); tft.setTextFont(4);
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
@ -57,6 +65,8 @@ void GametrakCalibrateDisplay::initScreen()
void GametrakCalibrateDisplay::redraw() void GametrakCalibrateDisplay::redraw()
{ {
Base::redraw();
m_labels[0].redraw(fmt::format("{:.02f}", gametrakX)); m_labels[0].redraw(fmt::format("{:.02f}", gametrakX));
m_labels[1].redraw(std::to_string(raw_gametrakX)); m_labels[1].redraw(std::to_string(raw_gametrakX));

View File

@ -19,10 +19,13 @@
#ifdef FEATURE_GARAGE #ifdef FEATURE_GARAGE
void GarageDisplay::start() void GarageDisplay::start()
{ {
Base::start();
} }
void GarageDisplay::initScreen() void GarageDisplay::initScreen()
{ {
Base::initScreen();
espgui::tft.fillScreen(TFT_BLACK); espgui::tft.fillScreen(TFT_BLACK);
espgui::tft.setTextFont(4); espgui::tft.setTextFont(4);
espgui::tft.setTextColor(TFT_YELLOW); espgui::tft.setTextColor(TFT_YELLOW);
@ -38,22 +41,30 @@ void GarageDisplay::initScreen()
void GarageDisplay::redraw() void GarageDisplay::redraw()
{ {
Base::redraw();
} }
void GarageDisplay::confirm() void GarageDisplay::buttonPressed(espgui::Button button)
{ {
#ifdef FEATURE_ESPNOW Base::buttonPressed(button);
if (const auto error = espnow::send_espnow_message(fmt::format("BOBBYOPEN:garage:{}", "TOKEN")); error != ESP_OK)
switch (button)
{ {
ESP_LOGE("BOBBY", "send_espnow_message() failed with: %s", esp_err_to_name(error)); using espgui::Button;
return; case Button::Left:
espgui::switchScreen<MainMenu>();
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<MainMenu>();
break;
default:;
} }
espgui::switchScreen<MainMenu>();
#endif
}
void GarageDisplay::back()
{
espgui::switchScreen<MainMenu>();
} }
#endif #endif

View File

@ -1,17 +1,19 @@
#pragma once #pragma once
// local includes // local includes
#include "display.h" #include "bobbydisplay.h"
#ifdef FEATURE_GARAGE #ifdef FEATURE_GARAGE
class GarageDisplay : public espgui::Display class GarageDisplay : public BobbyDisplay
{ {
using Base = BobbyDisplay;
public: public:
void start() override; void start() override;
void initScreen() override; void initScreen() override;
void redraw() override; void redraw() override;
void confirm() override;
void back() override; void buttonPressed(espgui::Button button) override;
private: private:
}; };

View File

@ -23,6 +23,7 @@
#include "displays/menus/ledstripmenu.h" #include "displays/menus/ledstripmenu.h"
#ifdef FEATURE_LEDSTRIP #ifdef FEATURE_LEDSTRIP
namespace {
int8_t selected_side = 7; int8_t selected_side = 7;
int8_t selected_color; int8_t selected_color;
bool state_select_color{false}; bool state_select_color{false};
@ -49,25 +50,13 @@ const std::array<uint16_t, 8> tft_colors = {
TFT_BLUE, TFT_BLUE,
TFT_MAGENTA TFT_MAGENTA
}; };
} // namespace
std::string LedstripColorsDisplay::text() const std::string LedstripColorsDisplay::text() const
{ {
return TEXT_LEDSTRIPCOLORMENU; return TEXT_LEDSTRIPCOLORMENU;
} }
void LedstripColorsDisplay::back()
{
if(!state_select_color)
{
espgui::switchScreen<LedstripMenu>();
}
else
{
state_select_color = false;
espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK);
}
}
void LedstripColorsDisplay::initScreen() void LedstripColorsDisplay::initScreen()
{ {
Base::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<LedstripMenu>();
}
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) if (state_select_color)
{ {
selected_color++; selected_color++;
@ -122,9 +143,21 @@ void LedstripColorsDisplay::rotate(int offset)
selected_side = 0; 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<Bobbycar_Side>(selected_side), TFT_GOLD);
}
break;
case Button::Down:
if (state_select_color) if (state_select_color)
{ {
selected_color--; selected_color--;
@ -141,35 +174,20 @@ void LedstripColorsDisplay::rotate(int offset)
selected_side = 7; selected_side = 7;
} }
} }
}
if (state_select_color) /* TODO commander: move into redraw method */
{ if (state_select_color)
drawColors(); {
} drawColors();
else }
{ else
espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); {
clearSides(); espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK);
drawSide(static_cast<Bobbycar_Side>(selected_side), TFT_GOLD); clearSides();
} drawSide(static_cast<Bobbycar_Side>(selected_side), TFT_GOLD);
} }
void LedstripColorsDisplay::confirm() break;
{
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);
*/
} }
} }

View File

@ -4,33 +4,32 @@
#include <array> #include <array>
// 3rdparty lib includes // 3rdparty lib includes
#include <displaywithtitle.h>
#include <FastLED.h> #include <FastLED.h>
// local includes // local includes
#include "bobbydisplaywithtitle.h"
#include "ledstrip.h" #include "ledstrip.h"
#ifdef FEATURE_LEDSTRIP #ifdef FEATURE_LEDSTRIP
extern int8_t selected_side; //extern int8_t selected_side;
extern int8_t selected_color; //extern int8_t selected_color;
extern bool state_select_color; //extern bool state_select_color;
extern bool last_state; //extern bool last_state;
extern const std::array<CRGB, 8> Colors; //extern const std::array<CRGB, 8> Colors;
extern const std::array<uint16_t, 8> tft_colors; //extern const std::array<uint16_t, 8> tft_colors;
class LedstripColorsDisplay : public espgui::DisplayWithTitle class LedstripColorsDisplay : public BobbyDisplayWithTitle
{ {
using Base = espgui::DisplayWithTitle; using Base = BobbyDisplayWithTitle;
public: public:
std::string text() const override; std::string text() const override;
void back() override;
void initScreen() override; void initScreen() override;
void redraw() override; void redraw() override;
void rotate(int offset) override;
void confirm() override; void buttonPressed(espgui::Button button) override;
void drawColors(); void drawColors();
void drawSide(Bobbycar_Side side, unsigned int color); void drawSide(Bobbycar_Side side, unsigned int color);

View File

@ -14,6 +14,8 @@
void Lockscreen::start() void Lockscreen::start()
{ {
Base::start();
m_numbers = {0,0,0,0}; m_numbers = {0,0,0,0};
m_currentIndex = 0; m_currentIndex = 0;
m_pressed = false; m_pressed = false;
@ -33,6 +35,8 @@ void Lockscreen::start()
void Lockscreen::initScreen() void Lockscreen::initScreen()
{ {
Base::initScreen();
espgui::tft.fillScreen(TFT_BLACK); espgui::tft.fillScreen(TFT_BLACK);
espgui::tft.setTextFont(4); espgui::tft.setTextFont(4);
espgui::tft.setTextColor(TFT_YELLOW); espgui::tft.setTextColor(TFT_YELLOW);
@ -66,12 +70,16 @@ void Lockscreen::initScreen()
void Lockscreen::update() void Lockscreen::update()
{ {
Base::update();
// just in case someone changes that settings somehow // just in case someone changes that settings somehow
profileButtonDisabled = !settings.lockscreen.allowPresetSwitch; profileButtonDisabled = !settings.lockscreen.allowPresetSwitch;
} }
void Lockscreen::redraw() void Lockscreen::redraw()
{ {
Base::redraw();
if (m_pressed || m_back_pressed) if (m_pressed || m_back_pressed)
{ {
drawRect(m_currentIndex, 1, TFT_BLACK); 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() switch (button)
{ {
if (m_currentIndex > 0) using espgui::Button;
m_currentIndex--; case Button::Left:
m_back_pressed = true; if (m_currentIndex > 0)
} m_currentIndex--;
m_back_pressed = true;
void Lockscreen::rotate(int offset) break;
{ case Button::Right:
m_rotated += offset; 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 void Lockscreen::drawRect(int index, int offset, uint32_t color) const

View File

@ -3,18 +3,20 @@
// system includes // system includes
#include <array> #include <array>
// 3rdparty lib includes
#include <widgets/label.h>
// local includes // local includes
#include "display.h" #include "bobbydisplay.h"
#include "widgets/label.h"
#include "modes/ignoreinputmode.h" #include "modes/ignoreinputmode.h"
#ifdef LOCKSCREEN_PLUGIN #ifdef LOCKSCREEN_PLUGIN
#include "ledstrip.h" #include "ledstrip.h"
#endif #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 boxWidth = 35;
static constexpr auto boxHeight = 50; static constexpr auto boxHeight = 50;
@ -27,9 +29,7 @@ public:
void redraw() override; void redraw() override;
void stop() override; void stop() override;
void confirm() override; void buttonPressed(espgui::Button button) override;
void back() override;
void rotate(int offset) override;
private: private:
void drawRect(int index, int offset, uint32_t color) const; void drawRect(int index, int offset, uint32_t color) const;

View File

@ -1,5 +1,10 @@
#include "menudisplaywithtime.h" #include "menudisplaywithtime.h"
#include "tftinstance.h"
// 3rdparty lib includes
#include <tftinstance.h>
#include <fmt/core.h>
// local includes
#include "utils.h" #include "utils.h"
using namespace espgui; using namespace espgui;

View File

@ -1,20 +1,19 @@
#pragma once #pragma once
// system includes // local includes
#include <cstdint> #include "displays/bobbymenudisplay.h"
// 3rdparty lib includes
#include <menudisplay.h>
namespace bobbygui { namespace bobbygui {
class MenuDisplayWithTime : class MenuDisplayWithTime :
public espgui::MenuDisplay public BobbyMenuDisplay
{ {
using Base = espgui::MenuDisplay; using Base = BobbyMenuDisplay;
public: public:
void start() override; void start() override;
void redraw() override; void redraw() override;
espgui::Label m_label_currentTime{145, 6}; espgui::Label m_label_currentTime{145, 6};
private: private:
virtual bool use_big_font() const virtual bool use_big_font() const
{ {

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include <menudisplay.h>
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class AboutMenu : class AboutMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_ABOUT> public espgui::StaticText<TEXT_ABOUT>
{ {
public: public:

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class AccessPointWifiSettingsMenu : class AccessPointWifiSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_ACCESSPOINTWIFISETTINGS> public espgui::StaticText<TEXT_ACCESSPOINTWIFISETTINGS>
{ {
public: public:

View File

@ -1,20 +1,20 @@
#pragma once #pragma once
// 3rdparty lib includes // 3rdparty lib includes
#include <menudisplay.h>
#include <menuitem.h> #include <menuitem.h>
#include <icons/back.h> #include <icons/back.h>
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <actions/switchscreenaction.h> #include <actions/switchscreenaction.h>
// Local includes // Local includes
#include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "icons/settings.h" #include "icons/settings.h"
#include "texts.h" #include "texts.h"
#include "battery.h" #include "battery.h"
class BatteryDebugMenu : class BatteryDebugMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BATTERYDEBUG> public espgui::StaticText<TEXT_BATTERYDEBUG>
{ {
public: public:

View File

@ -4,6 +4,7 @@
#include <changevaluedisplay.h> #include <changevaluedisplay.h>
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "mainmenu.h" #include "mainmenu.h"
#include "displays/calibratevoltagedisplay.h" #include "displays/calibratevoltagedisplay.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
@ -13,7 +14,7 @@
class CurrentBatteryStatusText : public virtual espgui::TextInterface { public: std::string text() const override { return getBatteryPercentageString(); } }; class CurrentBatteryStatusText : public virtual espgui::TextInterface { public: std::string text() const override { return getBatteryPercentageString(); } };
using BatteryCellSeriesChangeScreen = espgui::makeComponent< using BatteryCellSeriesChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_CELL_SERIES>, espgui::StaticText<TEXT_CELL_SERIES>,
BatterySeriesCellsAccessor, BatterySeriesCellsAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>,
@ -21,7 +22,7 @@ using BatteryCellSeriesChangeScreen = espgui::makeComponent<
>; >;
using BatteryCellParallelChangeScreen = espgui::makeComponent< using BatteryCellParallelChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_CELL_PARALLEL>, espgui::StaticText<TEXT_CELL_PARALLEL>,
BatteryParallelCellsAccessor, BatteryParallelCellsAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>,
@ -29,7 +30,7 @@ using BatteryCellParallelChangeScreen = espgui::makeComponent<
>; >;
using BatteryWHperKMChangeScreen = espgui::makeComponent< using BatteryWHperKMChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_BATTERY_WHKM>, espgui::StaticText<TEXT_BATTERY_WHKM>,
BatteryWHperKMAccessor, BatteryWHperKMAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BatteryMenu>>,

View File

@ -1,13 +1,13 @@
#pragma once #pragma once
// 3rdparty lib includes // 3rdparty lib includes
#include <menudisplay.h>
#include <menuitem.h> #include <menuitem.h>
#include <icons/back.h> #include <icons/back.h>
#include <actions/dummyaction.h> #include <actions/dummyaction.h>
#include <actions/switchscreenaction.h> #include <actions/switchscreenaction.h>
// Local includes // Local includes
#include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "icons/settings.h" #include "icons/settings.h"
#include "texts.h" #include "texts.h"
@ -16,10 +16,11 @@
#include "widgets/doubleprogressbar.h" #include "widgets/doubleprogressbar.h"
class BatteryMenu : class BatteryMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BATTERY> public espgui::StaticText<TEXT_BATTERY>
{ {
using Base = espgui::MenuDisplay; using Base = BobbyMenuDisplay;
public: public:
BatteryMenu(); BatteryMenu();

View File

@ -1,13 +1,13 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#ifdef FEATURE_BLE #ifdef FEATURE_BLE
class BleSettingsMenu : class BleSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BLESETTINGS> public espgui::StaticText<TEXT_BLESETTINGS>
{ {
public: public:

View File

@ -5,7 +5,7 @@
#ifdef FEATURE_BLUETOOTH #ifdef FEATURE_BLUETOOTH
#include "changevaluedisplay_bluetoothmode.h" #include "changevaluedisplay_bluetoothmode.h"
#endif #endif
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#ifdef FEATURE_BLUETOOTH #ifdef FEATURE_BLUETOOTH
@ -37,7 +37,7 @@ using AutoBluetoothModeChangeDisplay = makeComponent<
>; >;
class BluetoothSettingsMenu : class BluetoothSettingsMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_BLUETOOTHSETTINGS>, public StaticText<TEXT_BLUETOOTHSETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>> public BackActionInterface<SwitchScreenAction<SettingsMenu>>
{ {

View File

@ -2,11 +2,11 @@
#if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS)
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class BmsMenu : class BmsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BMS> public espgui::StaticText<TEXT_BMS>
{ {
public: public:

View File

@ -10,6 +10,7 @@
#include <checkboxicon.h> #include <checkboxicon.h>
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "icons/lock.h" #include "icons/lock.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
@ -43,35 +44,35 @@ public:
}; };
using SampleCountChangeScreen = espgui::makeComponent< using SampleCountChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SAMPLECOUNT>, espgui::StaticText<TEXT_SAMPLECOUNT>,
SampleCountAccessor, SampleCountAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GasMinChangeScreen = espgui::makeComponent< using GasMinChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_GASMIN>, espgui::StaticText<TEXT_GASMIN>,
GasMinAccessor, GasMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GasMaxChangeScreen = espgui::makeComponent< using GasMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_GASMAX>, espgui::StaticText<TEXT_GASMAX>,
GasMaxAccessor, GasMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using BremsMinChangeScreen = espgui::makeComponent< using BremsMinChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BREMSMIN>, espgui::StaticText<TEXT_BREMSMIN>,
BremsMinAccessor, BremsMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using BremsMaxChangeScreen = espgui::makeComponent< using BremsMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BREMSMAX>, espgui::StaticText<TEXT_BREMSMAX>,
BremsMaxAccessor, BremsMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
@ -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) #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< using DPadDebounceChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_DPADDEBOUNCE>, espgui::StaticText<TEXT_DPADDEBOUNCE>,
DPadDebounceAccessor, DPadDebounceAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
@ -103,42 +104,42 @@ public:
}; };
using GametrakXMinChangeScreen = espgui::makeComponent< using GametrakXMinChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKXMIN>, espgui::StaticText<TEXT_SETGAMETRAKXMIN>,
GametrakXMinAccessor, GametrakXMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GametrakXMaxChangeScreen = espgui::makeComponent< using GametrakXMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKXMAX>, espgui::StaticText<TEXT_SETGAMETRAKXMAX>,
GametrakXMaxAccessor, GametrakXMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GametrakYMinChangeScreen = espgui::makeComponent< using GametrakYMinChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKYMIN>, espgui::StaticText<TEXT_SETGAMETRAKYMIN>,
GametrakYMinAccessor, GametrakYMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GametrakYMaxChangeScreen = espgui::makeComponent< using GametrakYMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKYMAX>, espgui::StaticText<TEXT_SETGAMETRAKYMAX>,
GametrakYMaxAccessor, GametrakYMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GametrakDistMinChangeScreen = espgui::makeComponent< using GametrakDistMinChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKDISTMIN>, espgui::StaticText<TEXT_SETGAMETRAKDISTMIN>,
GametrakDistMinAccessor, GametrakDistMinAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu> espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>; >;
using GametrakDistMaxChangeScreen = espgui::makeComponent< using GametrakDistMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SETGAMETRAKDISTMAX>, espgui::StaticText<TEXT_SETGAMETRAKDISTMAX>,
GametrakDistMaxAccessor, GametrakDistMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class BoardcomputerHardwareSettingsMenu : class BoardcomputerHardwareSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS> public espgui::StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>
{ {
public: public:

View File

@ -9,6 +9,7 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "globals.h" #include "globals.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
@ -17,7 +18,7 @@
namespace { namespace {
struct FrontFreqAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.freq; } }; struct FrontFreqAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.freq; } };
using FrontFreqChangeScreen = espgui::makeComponent< using FrontFreqChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_FRONTFREQ>, espgui::StaticText<TEXT_FRONTFREQ>,
FrontFreqAccessor, FrontFreqAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
@ -26,7 +27,7 @@ using FrontFreqChangeScreen = espgui::makeComponent<
struct FrontPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.pattern; } }; struct FrontPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.pattern; } };
using FrontPatternChangeScreen = espgui::makeComponent< using FrontPatternChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_FRONTPATTERN>, espgui::StaticText<TEXT_FRONTPATTERN>,
FrontPatternAccessor, FrontPatternAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
@ -35,7 +36,7 @@ using FrontPatternChangeScreen = espgui::makeComponent<
struct BackFreqAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.freq; } }; struct BackFreqAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.freq; } };
using BackFreqChangeScreen = espgui::makeComponent< using BackFreqChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_BACKFREQ>, espgui::StaticText<TEXT_BACKFREQ>,
BackFreqAccessor, BackFreqAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
@ -44,7 +45,7 @@ using BackFreqChangeScreen = espgui::makeComponent<
struct BackPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.pattern; } }; struct BackPatternAccessor : public espgui::RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.back.command.buzzer.pattern; } };
using BackPatternChangeScreen = espgui::makeComponent< using BackPatternChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_BACKPATTERN>, espgui::StaticText<TEXT_BACKPATTERN>,
BackPatternAccessor, BackPatternAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
@ -52,28 +53,28 @@ using BackPatternChangeScreen = espgui::makeComponent<
>; >;
using ReverseBeepFreq0ChangeScreen = espgui::makeComponent< using ReverseBeepFreq0ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_REVERSEBEEPFREQ0>, espgui::StaticText<TEXT_REVERSEBEEPFREQ0>,
ReverseBeepFreq0Accessor, ReverseBeepFreq0Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::SwitchScreenAction<BuzzerMenu>
>; >;
using ReverseBeepFreq1ChangeScreen = espgui::makeComponent< using ReverseBeepFreq1ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_REVERSEBEEPFREQ1>, espgui::StaticText<TEXT_REVERSEBEEPFREQ1>,
ReverseBeepFreq1Accessor, ReverseBeepFreq1Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::SwitchScreenAction<BuzzerMenu>
>; >;
using ReverseBeepDuration0ChangeScreen = espgui::makeComponent< using ReverseBeepDuration0ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_REVERSEBEEPDURATION0>, espgui::StaticText<TEXT_REVERSEBEEPDURATION0>,
ReverseBeepDuration0Accessor, ReverseBeepDuration0Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,
espgui::SwitchScreenAction<BuzzerMenu> espgui::SwitchScreenAction<BuzzerMenu>
>; >;
using ReverseBeepDuration1ChangeScreen = espgui::makeComponent< using ReverseBeepDuration1ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_REVERSEBEEPDURATION1>, espgui::StaticText<TEXT_REVERSEBEEPDURATION1>,
ReverseBeepDuration1Accessor, ReverseBeepDuration1Accessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<BuzzerMenu>>,

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class BuzzerMenu : class BuzzerMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BUZZER> public espgui::StaticText<TEXT_BUZZER>
{ {
public: public:

View File

@ -11,6 +11,7 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "cloudtexthelpers.h" #include "cloudtexthelpers.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "cloud.h" #include "cloud.h"
@ -20,7 +21,7 @@
namespace { namespace {
using CloudTransmitTimeoutChangeScreen = espgui::makeComponent< using CloudTransmitTimeoutChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>,
CloudTransmitTimeoutAccessor, CloudTransmitTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
@ -37,7 +38,7 @@ public:
}; };
using CloudCollectRateChangeDisplay = espgui::makeComponent< using CloudCollectRateChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDCOLLECTRATE>, espgui::StaticText<TEXT_CLOUDCOLLECTRATE>,
CloudCollectRateAccessor, CloudCollectRateAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
@ -45,7 +46,7 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent<
>; >;
using CloudSendRateChangeDisplay = espgui::makeComponent< using CloudSendRateChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDSENDRATE>, espgui::StaticText<TEXT_CLOUDSENDRATE>,
CloudSendRateAccessor, CloudSendRateAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,

View File

@ -1,14 +1,12 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#ifdef FEATURE_CLOUD #ifdef FEATURE_CLOUD
class CloudSettingsMenu : class CloudSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_CLOUDSETTINGS> public espgui::StaticText<TEXT_CLOUDSETTINGS>
{ {
public: public:

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -15,7 +15,7 @@ using namespace espgui;
namespace { namespace {
template<const char *Ttext, typename Ttexts> template<const char *Ttext, typename Ttexts>
class CommandDebugMenu : class CommandDebugMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<Ttext>, public StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>> public BackActionInterface<SwitchScreenAction<DebugMenu>>
{ {

View File

@ -11,6 +11,7 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "globals.h" #include "globals.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
@ -20,14 +21,14 @@
namespace { namespace {
using WheelDiameterMmChangeScreen = espgui::makeComponent< using WheelDiameterMmChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_WHEELDIAMETERMM>, espgui::StaticText<TEXT_WHEELDIAMETERMM>,
WheelDiameterMmAccessor, WheelDiameterMmAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>
>; >;
using WheelDiameterInchChangeScreen = espgui::makeComponent< using WheelDiameterInchChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<float>, BobbyChangeValueDisplay<float>,
espgui::StaticText<TEXT_WHEELDIAMETERINCH>, espgui::StaticText<TEXT_WHEELDIAMETERINCH>,
WheelDiameterInchAccessor, WheelDiameterInchAccessor,
espgui::RatioNumberStep<float, std::ratio<1,10>>, espgui::RatioNumberStep<float, std::ratio<1,10>>,
@ -35,7 +36,7 @@ using WheelDiameterInchChangeScreen = espgui::makeComponent<
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>
>; >;
using NumMagnetPolesChangeScreen = espgui::makeComponent< using NumMagnetPolesChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NUMMAGNETPOLES>, espgui::StaticText<TEXT_NUMMAGNETPOLES>,
NumMagnetPolesAccessor, NumMagnetPolesAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
@ -43,14 +44,14 @@ using NumMagnetPolesChangeScreen = espgui::makeComponent<
>; >;
#ifdef FEATURE_CAN #ifdef FEATURE_CAN
using CanTransmitTimeoutChangeScreen = espgui::makeComponent< using CanTransmitTimeoutChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>, espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>,
CanTransmitTimeoutAccessor, CanTransmitTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::SwitchScreenAction<ControllerHardwareSettingsMenu> espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>
>; >;
using CanReceiveTimeoutChangeScreen = espgui::makeComponent< using CanReceiveTimeoutChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANRECEIVETIMEOUT>, espgui::StaticText<TEXT_CANRECEIVETIMEOUT>,
CanReceiveTimeoutAccessor, CanReceiveTimeoutAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class ControllerHardwareSettingsMenu : class ControllerHardwareSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_CONTROLLERHARDWARESETTINGS> public espgui::StaticText<TEXT_CONTROLLERHARDWARESETTINGS>
{ {
public: public:

View File

@ -1,13 +1,13 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
using namespace espgui; using namespace espgui;
class CrashMenu : class CrashMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_CRASHMENU> public StaticText<TEXT_CRASHMENU>
{ {
public: public:

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class DebugMenu : class DebugMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_DEBUG> public espgui::StaticText<TEXT_DEBUG>
{ {
public: public:

View File

@ -10,6 +10,7 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay_unifiedmodelmode.h" #include "changevaluedisplay_unifiedmodelmode.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
@ -18,91 +19,91 @@
namespace { namespace {
using DefaultModeModelModeChangeDisplay = espgui::makeComponent< using DefaultModeModelModeChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<UnifiedModelMode>, BobbyChangeValueDisplay<UnifiedModelMode>,
espgui::StaticText<TEXT_MODELMODE>, espgui::StaticText<TEXT_MODELMODE>,
DefaultModeModelModeAccessor, DefaultModeModelModeAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeHybridModelModeChangeDisplay = espgui::makeComponent< using DefaultModeHybridModelModeChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<UnifiedModelMode>, BobbyChangeValueDisplay<UnifiedModelMode>,
espgui::StaticText<TEXT_HYBRIDMODE>, espgui::StaticText<TEXT_HYBRIDMODE>,
DefaultModeHybridModelModeAccessor, DefaultModeHybridModelModeAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeSmoothingChangeDisplay = espgui::makeComponent< using DefaultModeSmoothingChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SMOOTHINGVAL>, espgui::StaticText<TEXT_SMOOTHINGVAL>,
DefaultModeSmoothingAccessor, DefaultModeSmoothingAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeFwSmoothingLowerLimitChangeDisplay = espgui::makeComponent< using DefaultModeFwSmoothingLowerLimitChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_FWSMOOTHING_LIMIT>, espgui::StaticText<TEXT_FWSMOOTHING_LIMIT>,
DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor, DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeFrontPercentageChangeDisplay = espgui::makeComponent< using DefaultModeFrontPercentageChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_FRONTPERCENTAGE>, espgui::StaticText<TEXT_FRONTPERCENTAGE>,
DefaultModeFrontPercentageAccessor, DefaultModeFrontPercentageAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeBackPercentageChangeDisplay = espgui::makeComponent< using DefaultModeBackPercentageChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_BACKPERCENTAGE>, espgui::StaticText<TEXT_BACKPERCENTAGE>,
DefaultModeBackPercentageAccessor, DefaultModeBackPercentageAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeAddSchwelleChangeDisplay = espgui::makeComponent< using DefaultModeAddSchwelleChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ADDSCHWELLE>, espgui::StaticText<TEXT_ADDSCHWELLE>,
DefaultModeAddSchwelleAccessor, DefaultModeAddSchwelleAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeGas1WertChangeDisplay = espgui::makeComponent< using DefaultModeGas1WertChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ADDGASVAL>, espgui::StaticText<TEXT_ADDGASVAL>,
DefaultModeGas1WertAccessor, DefaultModeGas1WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeGas2WertChangeDisplay = espgui::makeComponent< using DefaultModeGas2WertChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SUBGASVAL>, espgui::StaticText<TEXT_SUBGASVAL>,
DefaultModeGas2WertAccessor, DefaultModeGas2WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeBrems1WertChangeDisplay = espgui::makeComponent< using DefaultModeBrems1WertChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_ADDBRAKEVAL>, espgui::StaticText<TEXT_ADDBRAKEVAL>,
DefaultModeBrems1WertAccessor, DefaultModeBrems1WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeBrems2WertChangeDisplay = espgui::makeComponent< using DefaultModeBrems2WertChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_SUBBRAKEVAL>, espgui::StaticText<TEXT_SUBBRAKEVAL>,
DefaultModeBrems2WertAccessor, DefaultModeBrems2WertAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeHybridActivationLimitChangeDisplay = espgui::makeComponent< using DefaultModeHybridActivationLimitChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_HYBRIDACTIVATIONLIMIT>, espgui::StaticText<TEXT_HYBRIDACTIVATIONLIMIT>,
DefaultModeHybridActivationLimitAccessor, DefaultModeHybridActivationLimitAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,
espgui::SwitchScreenAction<DefaultModeSettingsMenu> espgui::SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeHybridDeactivationLimitChangeDisplay = espgui::makeComponent< using DefaultModeHybridDeactivationLimitChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_HYBRIDDEACTIVATIONLIMIT>, espgui::StaticText<TEXT_HYBRIDDEACTIVATIONLIMIT>,
DefaultModeHybridDeactivationLimitAccessor, DefaultModeHybridDeactivationLimitAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<DefaultModeSettingsMenu>>,

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class DefaultModeSettingsMenu : class DefaultModeSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_DEFAULTMODESETTIGNS> public espgui::StaticText<TEXT_DEFAULTMODESETTIGNS>
{ {
public: public:

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class DemosMenu : class DemosMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_DEMOS> public espgui::StaticText<TEXT_DEMOS>
{ {
public: public:

View File

@ -11,7 +11,7 @@
#include <esprandom.h> #include <esprandom.h>
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -125,7 +125,7 @@ constexpr char TEXT_STATICICON[] = "Static icon";
constexpr char TEXT_DEBUGTOGGLE[] = "Toggle"; constexpr char TEXT_DEBUGTOGGLE[] = "Toggle";
class DynamicDebugMenu : class DynamicDebugMenu :
public MenuDisplay, public BobbyMenuDisplay,
public RandomText, public RandomText,
public BackActionInterface<SwitchScreenAction<DebugMenu>> public BackActionInterface<SwitchScreenAction<DebugMenu>>
{ {

View File

@ -1,13 +1,13 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
using namespace espgui; using namespace espgui;
class EnableMenu : class EnableMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_SETENABLED> public StaticText<TEXT_SETENABLED>
{ {
public: public:

View File

@ -2,6 +2,7 @@
#ifdef FEATURE_ESPNOW #ifdef FEATURE_ESPNOW
// 3rdparty lib includes
#include <accessorinterface.h> #include <accessorinterface.h>
#include <actioninterface.h> #include <actioninterface.h>
#include <espchrono.h> #include <espchrono.h>
@ -10,6 +11,8 @@
#include <textinterface.h> #include <textinterface.h>
#include <texts.h> #include <texts.h>
// local includes
#include "displays/bobbymenudisplay.h"
#include "espnowfunctions.h" #include "espnowfunctions.h"
using namespace espgui; using namespace espgui;
@ -31,8 +34,8 @@ public:
} // namespace } // namespace
class EspNowMenu : class EspNowMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_ESPNOW_MENU> public espgui::StaticText<TEXT_ESPNOW_MENU>
{ {
public: public:
EspNowMenu(); EspNowMenu();

View File

@ -2,6 +2,7 @@
#ifdef FEATURE_ESPNOW #ifdef FEATURE_ESPNOW
// 3rdparty lib includes
#include <accessorinterface.h> #include <accessorinterface.h>
#include <actioninterface.h> #include <actioninterface.h>
#include <espchrono.h> #include <espchrono.h>
@ -10,6 +11,8 @@
#include <textinterface.h> #include <textinterface.h>
#include <texts.h> #include <texts.h>
// local includes
#include "displays/bobbymenudisplay.h"
#include "espnowfunctions.h" #include "espnowfunctions.h"
using namespace espgui; using namespace espgui;
@ -18,8 +21,8 @@ namespace espnowsettingsmenu {
} // namespace } // namespace
class EspNowSettingsMenu : class EspNowSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_ESPNOW_SETTINGS> public espgui::StaticText<TEXT_ESPNOW_SETTINGS>
{ {
public: public:
EspNowSettingsMenu(); EspNowSettingsMenu();

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -17,7 +17,7 @@ using namespace espgui;
namespace { namespace {
template<const char *Ttext, typename Ttexts, template<int> class ColorInterface> template<const char *Ttext, typename Ttexts, template<int> class ColorInterface>
class FeedbackDebugMenu : class FeedbackDebugMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<Ttext>, public StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>> public BackActionInterface<SwitchScreenAction<DebugMenu>>
{ {

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -13,7 +13,7 @@ using namespace espgui;
namespace { namespace {
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
class ContainerModeSettingsMenu : class ContainerModeSettingsMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_GAMETRAKMODESETTINGS>, public StaticText<TEXT_GAMETRAKMODESETTINGS>,
public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>> public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>
{ {

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -17,7 +17,7 @@ using namespace espgui;
namespace { namespace {
class GenericWifiSettingsMenu : class GenericWifiSettingsMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_GENERICWIFISETTINGS>, public StaticText<TEXT_GENERICWIFISETTINGS>,
public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>> public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>
{ {

View File

@ -7,34 +7,36 @@
#include "splitgraphdisplay.h" #include "splitgraphdisplay.h"
// local includes // local includes
#include "displays/bobbygraphdisplay.h"
#include "displays/bobbysplitgraphdisplay.h"
#include "utils.h" #include "utils.h"
#include "statistics.h" #include "statistics.h"
#include "displays/menus/mainmenu.h" #include "displays/menus/mainmenu.h"
namespace { namespace {
using GasGraphDisplay = espgui::makeComponent< using GasGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_GAS>, espgui::StaticText<TEXT_GAS>,
espgui::SingleGraphAccessor<GasStatistics>, espgui::SingleGraphAccessor<GasStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using BremsGraphDisplay = espgui::makeComponent< using BremsGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_BREMS>, espgui::StaticText<TEXT_BREMS>,
espgui::SingleGraphAccessor<BremsStatistics>, espgui::SingleGraphAccessor<BremsStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using PotisGraphDisplay = espgui::makeComponent< using PotisGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<2>, BobbyGraphDisplay<2>,
espgui::StaticText<TEXT_POTIS>, espgui::StaticText<TEXT_POTIS>,
espgui::DualGraphAccessor<GasStatistics, BremsStatistics>, espgui::DualGraphAccessor<GasStatistics, BremsStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using PotisSplitGraphDisplay = espgui::makeComponent< using PotisSplitGraphDisplay = espgui::makeComponent<
espgui::SplitGraphDisplay<1, 1>, BobbySplitGraphDisplay<1, 1>,
espgui::StaticText<TEXT_POTIS>, espgui::StaticText<TEXT_POTIS>,
espgui::SingleTopGraphAccessor<GasStatistics>, espgui::SingleTopGraphAccessor<GasStatistics>,
espgui::SingleBottomGraphAccessor<BremsStatistics>, espgui::SingleBottomGraphAccessor<BremsStatistics>,
@ -43,14 +45,14 @@ using PotisSplitGraphDisplay = espgui::makeComponent<
>; >;
using AvgSpeedGraphDisplay = espgui::makeComponent< using AvgSpeedGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_AVGSPEED>, espgui::StaticText<TEXT_AVGSPEED>,
espgui::SingleGraphAccessor<AvgSpeedStatistics>, espgui::SingleGraphAccessor<AvgSpeedStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using AvgSpeedKmhGraphDisplay = espgui::makeComponent< using AvgSpeedKmhGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_AVGSPEEDKMH>, espgui::StaticText<TEXT_AVGSPEEDKMH>,
espgui::SingleGraphAccessor<AvgSpeedKmhStatistics>, espgui::SingleGraphAccessor<AvgSpeedKmhStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
@ -58,7 +60,7 @@ using AvgSpeedKmhGraphDisplay = espgui::makeComponent<
>; >;
using SumCurrentGraphDisplay = espgui::makeComponent< using SumCurrentGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_SUMCURRENT>, espgui::StaticText<TEXT_SUMCURRENT>,
espgui::SingleGraphAccessor<SumCurrentStatistics>, espgui::SingleGraphAccessor<SumCurrentStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
@ -66,28 +68,28 @@ using SumCurrentGraphDisplay = espgui::makeComponent<
>; >;
using FrontVoltageGraphDisplay = espgui::makeComponent< using FrontVoltageGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_FRONTVOLTAGE>, espgui::StaticText<TEXT_FRONTVOLTAGE>,
espgui::SingleGraphAccessor<FrontVoltageStatistics>, espgui::SingleGraphAccessor<FrontVoltageStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using BackVoltageGraphDisplay = espgui::makeComponent< using BackVoltageGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_BACKVOLTAGE>, espgui::StaticText<TEXT_BACKVOLTAGE>,
espgui::SingleGraphAccessor<BackVoltageStatistics>, espgui::SingleGraphAccessor<BackVoltageStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using VoltagesGraphDisplay = espgui::makeComponent< using VoltagesGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<2>, BobbyGraphDisplay<2>,
espgui::StaticText<TEXT_VOLTAGES>, espgui::StaticText<TEXT_VOLTAGES>,
espgui::DualGraphAccessor<FrontVoltageStatistics, BackVoltageStatistics>, espgui::DualGraphAccessor<FrontVoltageStatistics, BackVoltageStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using VoltagesSplitGraphDisplay = espgui::makeComponent< using VoltagesSplitGraphDisplay = espgui::makeComponent<
espgui::SplitGraphDisplay<1, 1>, BobbySplitGraphDisplay<1, 1>,
espgui::StaticText<TEXT_VOLTAGES>, espgui::StaticText<TEXT_VOLTAGES>,
espgui::SingleTopGraphAccessor<FrontVoltageStatistics>, espgui::SingleTopGraphAccessor<FrontVoltageStatistics>,
espgui::SingleBottomGraphAccessor<BackVoltageStatistics>, espgui::SingleBottomGraphAccessor<BackVoltageStatistics>,
@ -97,28 +99,28 @@ using VoltagesSplitGraphDisplay = espgui::makeComponent<
#ifdef FEATURE_BMS #ifdef FEATURE_BMS
using BmsVoltageGraphDisplay = espgui::makeComponent< using BmsVoltageGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_BMSVOLTAGE>, espgui::StaticText<TEXT_BMSVOLTAGE>,
espgui::SingleGraphAccessor<BmsVoltageStatistics>, espgui::SingleGraphAccessor<BmsVoltageStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using BmsCurrentGraphDisplay = espgui::makeComponent< using BmsCurrentGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_BMSCURRENT>, espgui::StaticText<TEXT_BMSCURRENT>,
espgui::SingleGraphAccessor<BmsCurrentStatistics>, espgui::SingleGraphAccessor<BmsCurrentStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using BmsPowerGraphDisplay = espgui::makeComponent< using BmsPowerGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_BMSPOWER>, espgui::StaticText<TEXT_BMSPOWER>,
espgui::SingleGraphAccessor<BmsPowerStatistics>, espgui::SingleGraphAccessor<BmsPowerStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>> espgui::BackActionInterface<espgui::SwitchScreenAction<GraphsMenu>>
>; >;
using SumCurrentsComparisonGraphDisplay = espgui::makeComponent< using SumCurrentsComparisonGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<2>, BobbyGraphDisplay<2>,
espgui::StaticText<TEXT_SUMCURRENTSCOMPARISON>, espgui::StaticText<TEXT_SUMCURRENTSCOMPARISON>,
DualGraphAccessor<SumCurrentStatistics, BmsCurrentStatistics>, DualGraphAccessor<SumCurrentStatistics, BmsCurrentStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
@ -134,7 +136,7 @@ class MotorCurrentsStatistics : public virtual espgui::GraphAccessorInterface<4>
} }
}; };
using MotorCurrentsGraphDisplay = espgui::makeComponent< using MotorCurrentsGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<4>, BobbyGraphDisplay<4>,
espgui::StaticText<TEXT_MOTORCURRENTS>, espgui::StaticText<TEXT_MOTORCURRENTS>,
MotorCurrentsStatistics, MotorCurrentsStatistics,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,
@ -142,7 +144,7 @@ using MotorCurrentsGraphDisplay = espgui::makeComponent<
>; >;
using RssiGraphDisplay = espgui::makeComponent< using RssiGraphDisplay = espgui::makeComponent<
espgui::GraphDisplay<1>, BobbyGraphDisplay<1>,
espgui::StaticText<TEXT_RSSI>, espgui::StaticText<TEXT_RSSI>,
espgui::SingleGraphAccessor<RssiStatistics>, espgui::SingleGraphAccessor<RssiStatistics>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>, espgui::ConfirmActionInterface<espgui::SwitchScreenAction<GraphsMenu>>,

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class GraphsMenu : class GraphsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_GRAPHS> public espgui::StaticText<TEXT_GRAPHS>
{ {
public: public:

View File

@ -1,17 +1,18 @@
#pragma once #pragma once
// 3rdparty lib includes
#include <accessorinterface.h>
#include <qrcode.h> #include <qrcode.h>
// local includes // local includes
#include "accessorinterface.h" #include "displays/bobbymenudisplay.h"
#include "menudisplay.h"
#include "texts.h" #include "texts.h"
class GreenPassMenu : class GreenPassMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_GREENPASS> public espgui::StaticText<TEXT_GREENPASS>
{ {
using Base = espgui::MenuDisplay;
public: public:
GreenPassMenu(); GreenPassMenu();
void back() override; void back() override;

View File

@ -2,36 +2,35 @@
// 3rd party libs // 3rd party libs
#include <fmt/core.h> #include <fmt/core.h>
// local includes
#include "accessors/settingsaccessors.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "changevaluedisplay_handbremsmode.h"
#include "checkboxicon.h" #include "checkboxicon.h"
#include "displays/menus/defaultmodesettingsmenu.h"
#include "icons/back.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" #include "texts.h"
using namespace espgui;
namespace { namespace {
using HandBremsTriggerTimeoutChangeValueDisplay = makeComponent< using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent<
ChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>, espgui::StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>,
HandbremsTimeoutAccessor, HandbremsTimeoutAccessor,
BackActionInterface<SwitchScreenAction<HandbremsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>,
SwitchScreenAction<HandbremsSettingsMenu> espgui::SwitchScreenAction<HandbremsSettingsMenu>
>; >;
using HandBremsModeChangeValueDisplay = makeComponent< using HandBremsModeChangeValueDisplay = espgui::makeComponent<
ChangeValueDisplay<HandbremseMode>, BobbyChangeValueDisplay<HandbremseMode>,
StaticText<TEXT_HANDBREMSE_MODE>, espgui::StaticText<TEXT_HANDBREMSE_MODE>,
HandbremsModeAccessor, HandbremsModeAccessor,
BackActionInterface<SwitchScreenAction<HandbremsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>,
SwitchScreenAction<HandbremsSettingsMenu> espgui::SwitchScreenAction<HandbremsSettingsMenu>
>; >;
class HandBremsModeText : public virtual TextInterface class HandBremsModeText : public virtual espgui::TextInterface
{ {
public: public:
std::string text() const override std::string text() const override
@ -43,6 +42,7 @@ public:
HandbremsSettingsMenu::HandbremsSettingsMenu() HandbremsSettingsMenu::HandbremsSettingsMenu()
{ {
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_ENABLE>, ToggleBoolAction, CheckboxIcon, HandbremsEnabledAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_ENABLE>, ToggleBoolAction, CheckboxIcon, HandbremsEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_AUTOMATIC>, ToggleBoolAction, CheckboxIcon, HandbremsAutomaticAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_AUTOMATIC>, ToggleBoolAction, CheckboxIcon, HandbremsAutomaticAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_VISUALIZE>, ToggleBoolAction, CheckboxIcon, HandbremsVisualizeAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_VISUALIZE>, ToggleBoolAction, CheckboxIcon, HandbremsVisualizeAccessor>>();
@ -53,5 +53,5 @@ HandbremsSettingsMenu::HandbremsSettingsMenu()
void HandbremsSettingsMenu::back() void HandbremsSettingsMenu::back()
{ {
switchScreen<DefaultModeSettingsMenu>(); espgui::switchScreen<DefaultModeSettingsMenu>();
} }

View File

@ -1,10 +1,11 @@
#pragma once #pragma once
#include "menudisplay.h" // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class HandbremsSettingsMenu : class HandbremsSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_DEBUG> public espgui::StaticText<TEXT_DEBUG>
{ {
public: public:

View File

@ -10,6 +10,7 @@
InvertMenu::InvertMenu() InvertMenu::InvertMenu()
{ {
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTLEFT>, ToggleBoolAction, CheckboxIcon, FrontLeftInvertedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTLEFT>, ToggleBoolAction, CheckboxIcon, FrontLeftInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, ToggleBoolAction, CheckboxIcon, BackLeftInvertedAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, ToggleBoolAction, CheckboxIcon, BackLeftInvertedAccessor>>();
@ -20,5 +21,5 @@ InvertMenu::InvertMenu()
void InvertMenu::back() void InvertMenu::back()
{ {
switchScreen<ControllerHardwareSettingsMenu>(); espgui::switchScreen<ControllerHardwareSettingsMenu>();
} }

View File

@ -1,14 +1,12 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
using namespace espgui;
class InvertMenu : class InvertMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_SETINVERTED> public espgui::StaticText<TEXT_SETINVERTED>
{ {
public: public:
InvertMenu(); InvertMenu();

View File

@ -7,6 +7,7 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay_larsmmode_mode.h" #include "changevaluedisplay_larsmmode_mode.h"
#include "changevaluedisplay_unifiedmodelmode.h" #include "changevaluedisplay_unifiedmodelmode.h"
@ -15,21 +16,21 @@
namespace { namespace {
using LarsmModeModelModeChangeDisplay = espgui::makeComponent< using LarsmModeModelModeChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<UnifiedModelMode>, BobbyChangeValueDisplay<UnifiedModelMode>,
espgui::StaticText<TEXT_MODELMODE>, espgui::StaticText<TEXT_MODELMODE>,
LarsmModeModelModeAccessor, LarsmModeModelModeAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>,
espgui::SwitchScreenAction<LarsmModeSettingsMenu> espgui::SwitchScreenAction<LarsmModeSettingsMenu>
>; >;
using LarsmModeModeChangeDisplay = espgui::makeComponent< using LarsmModeModeChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<LarsmModeMode>, BobbyChangeValueDisplay<LarsmModeMode>,
espgui::StaticText<TEXT_SETMODE>, espgui::StaticText<TEXT_SETMODE>,
LarsmModeModeAccessor, LarsmModeModeAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>,
espgui::SwitchScreenAction<LarsmModeSettingsMenu> espgui::SwitchScreenAction<LarsmModeSettingsMenu>
>; >;
using LarsmModeIterationsChangeDisplay = espgui::makeComponent< using LarsmModeIterationsChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_SETITERATIONS>, espgui::StaticText<TEXT_SETITERATIONS>,
LarsmModeIterationsAccessor, LarsmModeIterationsAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LarsmModeSettingsMenu>>,

View File

@ -3,11 +3,11 @@
// 3rdparty lib includes // 3rdparty lib includes
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class LarsmModeSettingsMenu : class LarsmModeSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_LARSMMODESETTINGS> public espgui::StaticText<TEXT_LARSMMODESETTINGS>
{ {
public: public:

View File

@ -12,6 +12,7 @@
#include <menuitem.h> #include <menuitem.h>
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/ledstripcolorsdisplay.h" #include "displays/ledstripcolorsdisplay.h"
#include "displays/menus/ledstripselectotamode.h" #include "displays/menus/ledstripselectotamode.h"
@ -23,82 +24,80 @@
// clang-format off // clang-format off
using namespace espgui;
namespace { namespace {
using LedsCountChangeScreen = makeComponent< using LedsCountChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_LEDSCOUNT>, espgui::StaticText<TEXT_LEDSCOUNT>,
LedsCountAccessor, LedsCountAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using CenterOffsetChangeScreen = makeComponent< using CenterOffsetChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_CENTEROFFSET>, espgui::StaticText<TEXT_CENTEROFFSET>,
CenterOffsetAccessor, CenterOffsetAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using SmallOffsetChangeScreen = makeComponent< using SmallOffsetChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_SMALLOFFSET>, espgui::StaticText<TEXT_SMALLOFFSET>,
SmallOffsetAccessor, SmallOffsetAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using BigOffsetChangeScreen = makeComponent< using BigOffsetChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_BIGOFFSET>, espgui::StaticText<TEXT_BIGOFFSET>,
BigOffsetAccessor, BigOffsetAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using DeziampereChangeScreen = makeComponent< using DeziampereChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_LEDSTRIP_MILLIAMP>, espgui::StaticText<TEXT_LEDSTRIP_MILLIAMP>,
DeziampereAccessor, DeziampereAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using StVOOffsetChangeScreen = makeComponent< using StVOOffsetChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_STVO_FRONTOFFSET>, espgui::StaticText<TEXT_STVO_FRONTOFFSET>,
LedsStVOFrontOffsetAccessor, LedsStVOFrontOffsetAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using StVOLengthChangeScreen = makeComponent< using StVOLengthChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_STVO_FRONTLENGTH>, espgui::StaticText<TEXT_STVO_FRONTLENGTH>,
LedsStVOFrontLengthAccessor, LedsStVOFrontLengthAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using animationMultiplierChangeScreen = makeComponent< using animationMultiplierChangeScreen = espgui::makeComponent<
ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
StaticText<TEXT_ANIMATION_MULTIPLIER>, espgui::StaticText<TEXT_ANIMATION_MULTIPLIER>,
AnimationMultiplierAccessor, AnimationMultiplierAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
using ledstripBrightnessChangeScreen = makeComponent< using ledstripBrightnessChangeScreen = espgui::makeComponent<
ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
StaticText<TEXT_LEDSTRIP_BRIGHTNESS>, espgui::StaticText<TEXT_LEDSTRIP_BRIGHTNESS>,
LedstripBrightnessAccessor, LedstripBrightnessAccessor,
BackActionInterface<SwitchScreenAction<LedstripMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LedstripMenu>>,
SwitchScreenAction<LedstripMenu> espgui::SwitchScreenAction<LedstripMenu>
>; >;
class AllCustomLedsOffAction : public virtual ActionInterface class AllCustomLedsOffAction : public virtual espgui::ActionInterface
{ {
public: public:
void triggered() override void triggered() override
@ -113,35 +112,36 @@ public:
LedstripMenu::LedstripMenu() LedstripMenu::LedstripMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIPCOLORMENU>, SwitchScreenAction<LedstripColorsDisplay>>>(); using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDANIMATION>, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_LEDSTRIPCOLORMENU>, espgui::SwitchScreenAction<LedstripColorsDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BRAKELIGHTS>, ToggleBoolAction, CheckboxIcon, EnableBrakeLightsAccessor>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_LEDANIMATION>, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLINKBEEP>, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_BRAKELIGHTS>, ToggleBoolAction, CheckboxIcon, EnableBrakeLightsAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FULLBLINK>, ToggleBoolAction, CheckboxIcon, EnableFullBlinkAccessor>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_BLINKBEEP>, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>();
constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_FULLBLINK>, ToggleBoolAction, CheckboxIcon, EnableFullBlinkAccessor>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP_STVO>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_LEDSTRIP_STVO>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STVO_ENABLEFRONTLIGHT>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOFrontlight>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_STVO_ENABLEFRONTLIGHT>, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOFrontlight>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP_ALLCUSTOMOFF>, AllCustomLedsOffAction>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_LEDSTRIP_ALLCUSTOMOFF>, AllCustomLedsOffAction>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTOFFSET, LedsStVOFrontOffsetAccessor>, SwitchScreenAction<StVOOffsetChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTOFFSET, LedsStVOFrontOffsetAccessor>, espgui::SwitchScreenAction<StVOOffsetChangeScreen>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTLENGTH, LedsStVOFrontLengthAccessor>, SwitchScreenAction<StVOLengthChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_STVO_FRONTLENGTH, LedsStVOFrontLengthAccessor>, espgui::SwitchScreenAction<StVOLengthChangeScreen>>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECTANIMATION>, SwitchScreenAction<LedstripSelectAnimationMenu>>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_SELECTANIMATION>, espgui::SwitchScreenAction<LedstripSelectAnimationMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BLINKANIMATION>, SwitchScreenAction<LedstripSelectBlinkMenu>>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_BLINKANIMATION>, espgui::SwitchScreenAction<LedstripSelectBlinkMenu>>>();
#ifdef FEATURE_OTA #ifdef FEATURE_OTA
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP_CHANGE_OTA_ANIM>, SwitchScreenAction<ledstripOtaAnimationChangeMenu>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_LEDSTRIP_CHANGE_OTA_ANIM>, espgui::SwitchScreenAction<ledstripOtaAnimationChangeMenu>>>(); }
#endif #endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_MULTIPLIER>, SwitchScreenAction<animationMultiplierChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_ANIMATION_MULTIPLIER>, espgui::SwitchScreenAction<animationMultiplierChangeScreen>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_LEDSCOUNT, LedsCountAccessor>, SwitchScreenAction<LedsCountChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_LEDSCOUNT, LedsCountAccessor>, espgui::SwitchScreenAction<LedsCountChangeScreen>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_CENTEROFFSET, CenterOffsetAccessor>, SwitchScreenAction<CenterOffsetChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_CENTEROFFSET, CenterOffsetAccessor>, espgui::SwitchScreenAction<CenterOffsetChangeScreen>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SMALLOFFSET, SmallOffsetAccessor>, SwitchScreenAction<SmallOffsetChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SMALLOFFSET, SmallOffsetAccessor>, espgui::SwitchScreenAction<SmallOffsetChangeScreen>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BIGOFFSET, BigOffsetAccessor>, SwitchScreenAction<BigOffsetChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BIGOFFSET, BigOffsetAccessor>, espgui::SwitchScreenAction<BigOffsetChangeScreen>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP_BRIGHTNESS>, SwitchScreenAction<ledstripBrightnessChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_LEDSTRIP_BRIGHTNESS>, espgui::SwitchScreenAction<ledstripBrightnessChangeScreen>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_LEDSTRIP_MILLIAMP, DeziampereAccessor>, SwitchScreenAction<DeziampereChangeScreen>>>(); } if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_LEDSTRIP_MILLIAMP, DeziampereAccessor>, espgui::SwitchScreenAction<DeziampereChangeScreen>>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>(); constructMenuItem<makeComponent<MenuItem, espgui::StaticText<TEXT_BACK>, espgui::SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
} }
void LedstripMenu::back() void LedstripMenu::back()
{ {
switchScreen<MainMenu>(); espgui::switchScreen<MainMenu>();
} }
#endif #endif

View File

@ -1,9 +1,7 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "widgets/menudisplaywithtime.h"
// local includes // local includes
#include "displays/menudisplaywithtime.h"
#include "texts.h" #include "texts.h"
#ifdef FEATURE_LEDSTRIP #ifdef FEATURE_LEDSTRIP

View File

@ -10,9 +10,36 @@
using namespace espgui; using namespace espgui;
#ifdef FEATURE_LEDSTRIP #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<makeComponent<MenuItem, CurrentSelectedAnimationText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_DEFAULTRAINBOW>, LedStripSetAnimationAction<LedstripAnimation::DefaultRainbow>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_BETTERRAINBOW>, LedStripSetAnimationAction<LedstripAnimation::BetterRainbow>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_SPEEDSYNCANIMATION>, LedStripSetAnimationAction<LedstripAnimation::SpeedSync>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_CUSTOMCOLOR>, LedStripSetAnimationAction<LedstripAnimation::CustomColor>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void LedstripSelectAnimationMenu::back()
{
switchScreen<LedstripMenu>();
}
namespace {
std::string CurrentSelectedAnimationText::text() const
{ {
switch (animation_type) { switch (animation_type) {
case LedstripAnimation::DefaultRainbow: case LedstripAnimation::DefaultRainbow:
@ -28,19 +55,5 @@ std::string currentSelectedAnimationText::text() const
} }
} }
LedstripSelectAnimationMenu::LedstripSelectAnimationMenu() } // namespace
{
constructMenuItem<makeComponent<MenuItem, currentSelectedAnimationText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_DEFAULTRAINBOW>, LedStripSetAnimationAction<LedstripAnimation::DefaultRainbow>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_BETTERRAINBOW>, LedStripSetAnimationAction<LedstripAnimation::BetterRainbow>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_SPEEDSYNCANIMATION>, LedStripSetAnimationAction<LedstripAnimation::SpeedSync>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ANIMATION_CUSTOMCOLOR>, LedStripSetAnimationAction<LedstripAnimation::CustomColor>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void LedstripSelectAnimationMenu::back()
{
switchScreen<LedstripMenu>();
}
#endif #endif

View File

@ -1,19 +1,13 @@
#pragma once #pragma once
// Local includes // Local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#ifdef FEATURE_LEDSTRIP #ifdef FEATURE_LEDSTRIP
class currentSelectedAnimationText : public virtual espgui::TextInterface {
public:
std::string text() const override;
};
class LedstripSelectAnimationMenu : class LedstripSelectAnimationMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_SELECTANIMATION> public espgui::StaticText<TEXT_SELECTANIMATION>
{ {
public: public:
LedstripSelectAnimationMenu(); LedstripSelectAnimationMenu();

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// Local includes // Local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#include "ledstrip.h" #include "ledstrip.h"
#include "ledstripdefines.h" #include "ledstripdefines.h"
@ -13,8 +13,8 @@ public: std::string text() const override;
}; };
class LedstripSelectBlinkMenu : class LedstripSelectBlinkMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BLINKANIMATION> public espgui::StaticText<TEXT_BLINKANIMATION>
{ {
public: public:
LedstripSelectBlinkMenu(); LedstripSelectBlinkMenu();

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// Local includes // Local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#include "ledstrip.h" #include "ledstrip.h"
#include "globals.h" #include "globals.h"
@ -21,8 +21,8 @@ public:
}; };
class ledstripOtaAnimationChangeMenu : class ledstripOtaAnimationChangeMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_BLINKANIMATION> public espgui::StaticText<TEXT_BLINKANIMATION>
{ {
public: public:
ledstripOtaAnimationChangeMenu(); ledstripOtaAnimationChangeMenu();

View File

@ -7,48 +7,49 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/menus/settingsmenu.h" #include "displays/menus/settingsmenu.h"
namespace { namespace {
using IMotMaxChangeScreen = espgui::makeComponent< using IMotMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_IMOTMAX>, espgui::StaticText<TEXT_IMOTMAX>,
IMotMaxAccessor, IMotMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::SwitchScreenAction<LimitsSettingsMenu>
>; >;
using IDcMaxChangeScreen = espgui::makeComponent< using IDcMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_IDCMAX>, espgui::StaticText<TEXT_IDCMAX>,
IDcMaxAccessor, IDcMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::SwitchScreenAction<LimitsSettingsMenu>
>; >;
using NMotMaxKmhChangeScreen = espgui::makeComponent< using NMotMaxKmhChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NMOTMAXKMH>, espgui::StaticText<TEXT_NMOTMAXKMH>,
NMotMaxKmhAccessor, NMotMaxKmhAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::SwitchScreenAction<LimitsSettingsMenu>
>; >;
using NMotMaxRpmChangeScreen = espgui::makeComponent< using NMotMaxRpmChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NMOTMAX>, espgui::StaticText<TEXT_NMOTMAX>,
NMotMaxRpmAccessor, NMotMaxRpmAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::SwitchScreenAction<LimitsSettingsMenu>
>; >;
using FieldWeakMaxChangeScreen = espgui::makeComponent< using FieldWeakMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_FIELDWEAKMAX>, espgui::StaticText<TEXT_FIELDWEAKMAX>,
FieldWeakMaxAccessor, FieldWeakMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,
espgui::SwitchScreenAction<LimitsSettingsMenu> espgui::SwitchScreenAction<LimitsSettingsMenu>
>; >;
using PhaseAdvMaxChangeScreen = espgui::makeComponent< using PhaseAdvMaxChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int16_t>, BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_PHASEADVMAX>, espgui::StaticText<TEXT_PHASEADVMAX>,
PhaseAdvMaxAccessor, PhaseAdvMaxAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LimitsSettingsMenu>>,

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class LimitsSettingsMenu : class LimitsSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_LIMITSSETTINGS> public espgui::StaticText<TEXT_LIMITSSETTINGS>
{ {
public: public:

View File

@ -9,13 +9,14 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "globals.h" #include "globals.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "displays/menus/boardcomputerhardwaresettingsmenu.h"
namespace { namespace {
using LockscreenPinDigit0ChangeScreen = espgui::makeComponent< using LockscreenPinDigit0ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT0>, espgui::StaticText<TEXT_PINDIGIT0>,
LockscreenPinDigitAccessor<0>, LockscreenPinDigitAccessor<0>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
@ -23,7 +24,7 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent<
>; >;
using LockscreenPinDigit1ChangeScreen = espgui::makeComponent< using LockscreenPinDigit1ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT1>, espgui::StaticText<TEXT_PINDIGIT1>,
LockscreenPinDigitAccessor<1>, LockscreenPinDigitAccessor<1>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
@ -31,7 +32,7 @@ using LockscreenPinDigit1ChangeScreen = espgui::makeComponent<
>; >;
using LockscreenPinDigit2ChangeScreen = espgui::makeComponent< using LockscreenPinDigit2ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT2>, espgui::StaticText<TEXT_PINDIGIT2>,
LockscreenPinDigitAccessor<2>, LockscreenPinDigitAccessor<2>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
@ -39,7 +40,7 @@ using LockscreenPinDigit2ChangeScreen = espgui::makeComponent<
>; >;
using LockscreenPinDigit3ChangeScreen = espgui::makeComponent< using LockscreenPinDigit3ChangeScreen = espgui::makeComponent<
espgui::ChangeValueDisplay<int8_t>, BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT3>, espgui::StaticText<TEXT_PINDIGIT3>,
LockscreenPinDigitAccessor<3>, LockscreenPinDigitAccessor<3>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class LockscreenSettingsMenu : class LockscreenSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_LOCKSCREENSETTINGS> public espgui::StaticText<TEXT_LOCKSCREENSETTINGS>
{ {
public: public:

View File

@ -5,7 +5,7 @@
// local includes // local includes
#include "texts.h" #include "texts.h"
#include "widgets/menudisplaywithtime.h" #include "displays/menudisplaywithtime.h"
#ifdef MAINMENU_PLUGIN #ifdef MAINMENU_PLUGIN
#include MAINMENU_PLUGIN #include MAINMENU_PLUGIN
#endif #endif

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
// local includes
#include "texts.h" #include "texts.h"
class ModesSettingsMenu : class ModesSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_MODESSETTINGS> public espgui::StaticText<TEXT_MODESSETTINGS>
{ {
public: public:

View File

@ -1,8 +1,11 @@
#pragma once #pragma once
#ifdef FEATURE_MOSFETS #ifdef FEATURE_MOSFETS
#include "menudisplay.h" // 3rdparty lib includes
#include "accessorinterface.h" #include "accessorinterface.h"
// local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#include "types.h" #include "types.h"
@ -19,7 +22,7 @@ using Mosfet1Accessor = GPIOAccessor<PINS_MOSFET1>;
using Mosfet2Accessor = GPIOAccessor<PINS_MOSFET2>; using Mosfet2Accessor = GPIOAccessor<PINS_MOSFET2>;
class MosfetsMenu : class MosfetsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_MOSFETS> public espgui::StaticText<TEXT_MOSFETS>
{ {
public: public:

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -11,18 +11,17 @@
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
#include "debugcolorhelpers.h" #include "debugcolorhelpers.h"
using namespace espgui;
namespace {
template<const char *Ttext, typename Ttexts, template<int> class ColorInterface> template<const char *Ttext, typename Ttexts, template<int> class ColorInterface>
class MotorFeedbackDebugMenu : class MotorFeedbackDebugMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<Ttext>, public espgui::StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>> public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>>
{ {
public: public:
MotorFeedbackDebugMenu() MotorFeedbackDebugMenu()
{ {
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, typename Ttexts::AngleText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::AngleText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
//constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); //constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedKmhText, ColorInterface<TFT_DARKGREY>, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::SpeedKmhText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
@ -45,5 +44,3 @@ class FrontLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONT
class FrontRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONTRIGHTFEEDBACK, FrontTexts::RightFeedback, FrontFeedbackColor> {}; class FrontRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONTRIGHTFEEDBACK, FrontTexts::RightFeedback, FrontFeedbackColor> {};
class BackLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKLEFTFEEDBACK, BackTexts::LeftFeedback, BackFeedbackColor> {}; class BackLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKLEFTFEEDBACK, BackTexts::LeftFeedback, BackFeedbackColor> {};
class BackRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKRIGHTFEEDBACK, BackTexts::RightFeedback, BackFeedbackColor> {}; class BackRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKRIGHTFEEDBACK, BackTexts::RightFeedback, BackFeedbackColor> {};
} // namespace

View File

@ -1,27 +1,27 @@
#pragma once #pragma once
// local includes // 3rdparty lib includes
#include "menudisplay.h"
#include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
// local includes
#include "displays/bobbymenudisplay.h"
#include "utils.h"
#include "texts.h" #include "texts.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
using namespace espgui;
namespace {
template<const char *Ttext, typename Ttexts> template<const char *Ttext, typename Ttexts>
class MotorStateDebugMenu : class MotorStateDebugMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<Ttext>, public espgui::StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>> public espgui::BackActionInterface<espgui::SwitchScreenAction<DebugMenu>>
{ {
public: public:
MotorStateDebugMenu() MotorStateDebugMenu()
{ {
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, typename Ttexts::EnableText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::EnableText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::PwmText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::PwmText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, typename Ttexts::CtrlTypText, DisabledColor, DummyAction>>(); constructMenuItem<makeComponent<MenuItem, typename Ttexts::CtrlTypText, DisabledColor, DummyAction>>();
@ -41,5 +41,3 @@ class FrontLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTLEFTCO
class FrontRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTRIGHTCOMMAND, FrontTexts::RightCommand> {}; class FrontRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTRIGHTCOMMAND, FrontTexts::RightCommand> {};
class BackLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKLEFTCOMMAND, BackTexts::LeftCommand> {}; class BackLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKLEFTCOMMAND, BackTexts::LeftCommand> {};
class BackRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKRIGHTCOMMAND, BackTexts::RightCommand> {}; class BackRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKRIGHTCOMMAND, BackTexts::RightCommand> {};
} // namespace

View File

@ -7,13 +7,14 @@
#include "icons/back.h" #include "icons/back.h"
// local includes // local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h" #include "utils.h"
#include "accessors/settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "displays/menus/modessettingsmenu.h" #include "displays/menus/modessettingsmenu.h"
namespace { namespace {
using MotortestMultiplikatorChangeDisplay = espgui::makeComponent< using MotortestMultiplikatorChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<uint8_t>, BobbyChangeValueDisplay<uint8_t>,
espgui::StaticText<TEXT_MOTORTESTMULTIPLIKATOR>, espgui::StaticText<TEXT_MOTORTESTMULTIPLIKATOR>,
MotortestModeMultiplikatorAccessor, MotortestModeMultiplikatorAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>,
@ -21,7 +22,7 @@ using MotortestMultiplikatorChangeDisplay = espgui::makeComponent<
>; >;
using MotortestMaxPwmChangeDisplay = espgui::makeComponent< using MotortestMaxPwmChangeDisplay = espgui::makeComponent<
espgui::ChangeValueDisplay<uint16_t>, BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_MOTORTESTMAXPWM>, espgui::StaticText<TEXT_MOTORTESTMAXPWM>,
MotortestMaxPwmAccessor, MotortestMaxPwmAccessor,
espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>, espgui::BackActionInterface<espgui::SwitchScreenAction<MotortestModeSettingsMenu>>,

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class MotortestModeSettingsMenu : class MotortestModeSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_MOTORTESTMODESETTINGS> public espgui::StaticText<TEXT_MOTORTESTMODESETTINGS>
{ {
public: public:

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class OtaMenu : class OtaMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_UPDATE> public espgui::StaticText<TEXT_UPDATE>
{ {
public: public:

View File

@ -1,14 +1,12 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
using namespace espgui;
class PresetsMenu : class PresetsMenu :
public MenuDisplay, public BobbyMenuDisplay,
public StaticText<TEXT_PRESETS> public espgui::StaticText<TEXT_PRESETS>
{ {
public: public:
PresetsMenu(); PresetsMenu();

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class ProfilesMenu : class ProfilesMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_PROFILES> public espgui::StaticText<TEXT_PROFILES>
{ {
public: public:

View File

@ -1,19 +1,19 @@
#pragma once #pragma once
// 3rdparty lib includes // 3rdparty lib includes
#include <menudisplay.h>
#include <menuitem.h> #include <menuitem.h>
#include <icons/back.h> #include <icons/back.h>
#include <actions/switchscreenaction.h> #include <actions/switchscreenaction.h>
#include <actioninterface.h> #include <actioninterface.h>
// Local includes // Local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#include "batterymenu.h" #include "batterymenu.h"
#include "displays/menus/mainmenu.h" #include "displays/menus/mainmenu.h"
class BatteryTypeMenu : class BatteryTypeMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_SELECT_CELL_TYPE> public espgui::StaticText<TEXT_SELECT_CELL_TYPE>
{ {
public: public:

View File

@ -21,9 +21,34 @@
using namespace espgui; using namespace espgui;
using namespace buildserver; 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 std::string CurrentBranch::text() const
{ {
return stringSettings.otaServerBranch.empty() ? "All builds" : stringSettings.otaServerBranch; return stringSettings.otaServerBranch.empty() ? "All builds" : stringSettings.otaServerBranch;
@ -59,8 +84,6 @@ void ClearBranchAction::triggered()
SelectBuildserverBranchMenu::SelectBuildserverBranchMenu() SelectBuildserverBranchMenu::SelectBuildserverBranchMenu()
{ {
using namespace SelectBuildServerBranch;
if (count_available_buildserver() < 1) if (count_available_buildserver() < 1)
{ {
ERR_MESSAGE(TEXT_OTA_NOBUILDSERVERAVAILABLE); // E:No server saved. ERR_MESSAGE(TEXT_OTA_NOBUILDSERVERAVAILABLE); // E:No server saved.

View File

@ -1,43 +1,19 @@
#pragma once #pragma once
// 3rd party includes // local includes
#include <menudisplay.h> #include "displays/bobbymenudisplay.h"
#include <texts.h> #include "texts.h"
#ifdef FEATURE_OTA #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 : class SelectBuildserverBranchMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_SELECT_BRANCH> public espgui::StaticText<TEXT_SELECT_BRANCH>
{ {
using Base = espgui::MenuDisplay; using Base = espgui::MenuDisplay;
public: public:
SelectBuildserverBranchMenu(); SelectBuildserverBranchMenu();
void buildMenuRequestError(std::string error); void buildMenuRequestError(std::string error);
void update() override; void update() override;
void back() override; void back() override;

View File

@ -6,9 +6,10 @@
// 3rdparty lib includes // 3rdparty lib includes
#include <actions/switchscreenaction.h> #include <actions/switchscreenaction.h>
#include <fmt/core.h> #include <fmt/core.h>
#include <icons/back.h>
#include <actions/dummyaction.h>
// local includes // local includes
#include "actions/dummyaction.h"
#include "buildserver.h" #include "buildserver.h"
#include "displays/menus/otamenu.h" #include "displays/menus/otamenu.h"
#include "utils.h" #include "utils.h"

View File

@ -1,16 +1,15 @@
#pragma once #pragma once
// 3rdparty lib includes // 3rdparty lib includes
#include <menudisplay.h>
#include <icons/back.h>
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#ifdef FEATURE_OTA #ifdef FEATURE_OTA
class SelectBuildServerMenu : class SelectBuildServerMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_SELECTBUILDSERVERMENU> public espgui::StaticText<TEXT_SELECTBUILDSERVERMENU>
{ {
public: public:

View File

@ -1,16 +1,14 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class SelectModeMenu : class SelectModeMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_SELECTMODE> public espgui::StaticText<TEXT_SELECTMODE>
{ {
using Base = espgui::MenuDisplay; using Base = BobbyMenuDisplay;
public: public:
SelectModeMenu(); SelectModeMenu();

View File

@ -1,20 +1,23 @@
#pragma once #pragma once
// local includes // local includes
#include "menudisplay.h" #include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
#ifdef FEATURE_OTA #ifdef FEATURE_OTA
class SelectBuildMenu : class SelectBuildMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_SELECTBUILD> public espgui::StaticText<TEXT_SELECTBUILD>
{ {
using Base = MenuDisplay; using Base = BobbyMenuDisplay;
public: public:
SelectBuildMenu(); SelectBuildMenu();
void update() override; void update() override;
void back() override; void back() override;
private:
void buildMenuFromJson(); void buildMenuFromJson();
void buildMenuRequestError(std::string error); void buildMenuRequestError(std::string error);
}; };

View File

@ -1,9 +1,7 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "widgets/menudisplaywithtime.h"
// local includes // local includes
#include "displays/menudisplaywithtime.h"
#include "texts.h" #include "texts.h"
class SettingsMenu : class SettingsMenu :

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
// 3rdparty lib includes
#include "menudisplay.h"
// local includes // local includes
#include "displays/bobbymenudisplay.h"
#include "texts.h" #include "texts.h"
class StationWifiSettingsMenu : class StationWifiSettingsMenu :
public espgui::MenuDisplay, public BobbyMenuDisplay,
public espgui::StaticText<TEXT_STATIONWIFISETTINGS> public espgui::StaticText<TEXT_STATIONWIFISETTINGS>
{ {
public: public:

View File

@ -1,10 +1,10 @@
#pragma once #pragma once
// 3rdparty lib includes // 3rdparty lib includes
#include "widgets/menudisplaywithtime.h"
#include <menuitem.h> #include <menuitem.h>
// Local includes // Local includes
#include "displays/menudisplaywithtime.h"
#include "texts.h" #include "texts.h"
class StatisticsMenu : class StatisticsMenu :

Some files were not shown because too many files have changed in this diff Show More