Merge pull request #324 from bobbycar-graz/refactoring

This commit is contained in:
CommanderRedYT
2022-05-25 03:07:57 +02:00
committed by GitHub
37 changed files with 412 additions and 266 deletions

BIN
icons/git.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -105,6 +105,7 @@ set(headers
displays/menus/feedbackdebugmenu.h
displays/menus/gametrakmodesettingsmenu.h
displays/menus/garagemenu.h
displays/menus/gitmenu.h
displays/menus/graphsmenu.h
displays/menus/greenpassmenu.h
displays/menus/handbremssettingsmenu.h
@ -179,6 +180,7 @@ set(headers
icons/buzzer.h
icons/close.h
icons/demos.h
icons/git.h
icons/graph.h
icons/greenpass.h
icons/hardware.h
@ -344,6 +346,7 @@ set(sources
displays/menus/feedbackdebugmenu.cpp
displays/menus/gametrakmodesettingsmenu.cpp
displays/menus/garagemenu.cpp
displays/menus/gitmenu.cpp
displays/menus/graphsmenu.cpp
displays/menus/greenpassmenu.cpp
displays/menus/handbremssettingsmenu.cpp
@ -418,6 +421,7 @@ set(sources
icons/buzzer.cpp
icons/close.cpp
icons/demos.cpp
icons/git.cpp
icons/graph.cpp
icons/greenpass.cpp
icons/hardware.cpp
@ -504,6 +508,24 @@ idf_component_register(
${dependencies}
)
execute_process(COMMAND git rev-parse HEAD
OUTPUT_VARIABLE GIT_REV ERROR_QUIET
)
execute_process(
COMMAND git log -1 --pretty=%B
OUTPUT_VARIABLE GIT_MESSAGE ERROR_QUIET
)
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE GIT_BRANCH
)
string(STRIP "${GIT_REV}" GIT_REV)
string(SUBSTRING "${GIT_REV}" 1 7 GIT_SHORT_REV)
string(STRIP "${GIT_MESSAGE}" GIT_MESSAGE)
string(SUBSTRING "${GIT_MESSAGE}" 0 100 GIT_MESSAGE)
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
target_compile_options(${COMPONENT_TARGET}
PRIVATE
-fstack-reuse=all
@ -513,5 +535,9 @@ target_compile_options(${COMPONENT_TARGET}
-Wno-deprecated-declarations
-Wno-missing-field-initializers
-Wno-parentheses
-DGIT_REV="${GIT_REV}"
-DGIT_SHORT_REV="${GIT_SHORT_REV}"
-DGIT_MESSAGE="${GIT_MESSAGE}"
-DGIT_BRANCH="${GIT_BRANCH}"
${BOBBYCAR_BUILDFLAGS}
)

View File

@ -18,27 +18,26 @@ struct QrMenu {
};
} // namespace
template<typename TMenu>
class SwitchQrDisplayAction : public virtual espgui::ActionInterface
class PushQrDisplayAction : public virtual espgui::ActionInterface
{
public:
explicit SwitchQrDisplayAction(const qraction::QrMenu &qrmenu) : m_msg{qrmenu.message} {}
explicit SwitchQrDisplayAction(qraction::QrMenu &&qrmenu) : m_msg{std::move(qrmenu.message)} {}
explicit PushQrDisplayAction(const qraction::QrMenu &qrmenu) : m_msg{qrmenu.message} {}
explicit PushQrDisplayAction(qraction::QrMenu &&qrmenu) : m_msg{std::move(qrmenu.message)} {}
void triggered() override
{
espgui::pushScreen<QrDisplay<TMenu>>(m_msg);
espgui::pushScreen<QrDisplay>(m_msg);
}
private:
std::string m_msg;
};
template<typename TMenu>
class SwitchQrImportDisplayAction : public virtual espgui::ActionInterface
class PushQrImportDisplayAction : public virtual espgui::ActionInterface
{
public:
explicit SwitchQrImportDisplayAction(const std::string &nvskey) : m_nvskey{nvskey} {}
explicit SwitchQrImportDisplayAction(std::string &&nvskey) : m_nvskey{std::move(nvskey)} {}
explicit PushQrImportDisplayAction(const std::string &nvskey) : m_nvskey{nvskey} {}
explicit PushQrImportDisplayAction(std::string &&nvskey) : m_nvskey{std::move(nvskey)} {}
void triggered() override
{

View File

@ -6,9 +6,7 @@
#include "actions/popscreenaction.h"
#include "icons/back.h"
#include "esptexthelpers.h"
#include "displays/menus/settingsmenu.h"
#include <espasyncota.h>
#include <esp_ota_ops.h>
#include "fmt/core.h"

View File

@ -4,7 +4,8 @@
#include <fmt/core.h>
#include "menuitem.h"
#include "changevaluedisplay.h"
#include "actions/switchscreenaction.h"
#include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
@ -28,8 +29,8 @@ using CloudTransmitTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>,
CloudTransmitTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
struct CloudBufferLengthText : public virtual espgui::TextInterface
@ -45,16 +46,16 @@ using CloudCollectRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDCOLLECTRATE>,
CloudCollectRateAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using CloudSendRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CLOUDSENDRATE>,
CloudSendRateAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
} // namespace
@ -63,14 +64,14 @@ using namespace espgui;
CloudSettingsMenu::CloudSettingsMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDENABLED>, BobbyCheckbox, CloudEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, SwitchScreenAction<CloudTransmitTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, PushScreenAction<CloudTransmitTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, CloudCreatedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CloudStartedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CloudConnectedText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CloudBufferLengthText, DisabledColor, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDCOLLECTRATE>, SwitchScreenAction<CloudCollectRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDSENDRATE>, SwitchScreenAction<CloudSendRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDCOLLECTRATE>, PushScreenAction<CloudCollectRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDSENDRATE>, PushScreenAction<CloudSendRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string CloudSettingsMenu::text() const
@ -80,5 +81,5 @@ std::string CloudSettingsMenu::text() const
void CloudSettingsMenu::back()
{
switchScreen<SettingsMenu>();
popScreen();
}

View File

@ -4,8 +4,9 @@
#include <ratio>
// 3rdparty lib includes
#include "actions/popscreenaction.h"
#include "actions/pushscreenaction.h"
#include "changevaluedisplay.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h"
// local includes
@ -40,38 +41,38 @@ using WheelDiameterMmChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_WHEELDIAMETERMM>,
WheelDiameterMmAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using WheelDiameterInchChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<float>,
espgui::StaticText<TEXT_WHEELDIAMETERINCH>,
WheelDiameterInchAccessor,
espgui::RatioNumberStep<float, std::ratio<1,10>>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using NumMagnetPolesChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_NUMMAGNETPOLES>,
NumMagnetPolesAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
#ifdef FEATURE_CAN
using CanTransmitTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANTRANSMITTIMEOUT>,
CanTransmitTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using CanReceiveTimeoutChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_CANRECEIVETIMEOUT>,
CanReceiveTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<ControllerHardwareSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
#endif
} // namespace
@ -79,21 +80,21 @@ using CanReceiveTimeoutChangeScreen = espgui::makeComponent<
ControllerHardwareSettingsMenu::ControllerHardwareSettingsMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETENABLED>, SwitchScreenAction<EnableMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETINVERTED>, SwitchScreenAction<InvertMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, SwitchScreenAction<WheelDiameterMmChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, SwitchScreenAction<WheelDiameterInchChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, SwitchScreenAction<NumMagnetPolesChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETENABLED>, PushScreenAction<EnableMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETINVERTED>, PushScreenAction<InvertMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, PushScreenAction<WheelDiameterMmChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, PushScreenAction<WheelDiameterInchChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, PushScreenAction<NumMagnetPolesChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, BobbyCheckbox, SwapFrontBackAccessor>>();
#ifdef FEATURE_CAN
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_FRONTSENDCAN>, BobbyCheckbox, SendFrontCanCmdAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKSENDCAN>, BobbyCheckbox, SendBackCanCmdAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANTRANSMITTIMEOUT>, SwitchScreenAction<CanTransmitTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRECEIVETIMEOUT>, SwitchScreenAction<CanReceiveTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANTRANSMITTIMEOUT>, PushScreenAction<CanTransmitTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRECEIVETIMEOUT>, PushScreenAction<CanReceiveTimeoutChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRESETONERROR>, BobbyCheckbox, CanResetOnErrorAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANREINSTALLDRIVER>, BobbyCheckbox, CanReinstallDriverAccessor>>();
#endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string ControllerHardwareSettingsMenu::text() const
@ -103,5 +104,5 @@ std::string ControllerHardwareSettingsMenu::text() const
void ControllerHardwareSettingsMenu::back()
{
espgui::switchScreen<SettingsMenu>();
espgui::popScreen();
}

View File

@ -1,13 +1,10 @@
#include "enablemenu.h"
// 3rdparty lib includes
#include "actions/switchscreenaction.h"
#include "icons/back.h"
// local includes
#include "displays/menus/controllerhardwaresettingsmenu.h"
#include "accessors/settingsaccessors.h"
#include "actions/popscreenaction.h"
#include "bobbycheckbox.h"
#include "icons/back.h"
namespace {
constexpr char TEXT_SETENABLED[] = "Set enabled";
@ -25,7 +22,7 @@ EnableMenu::EnableMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTRIGHT>, BobbyCheckbox, FrontRightEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKLEFT>, BobbyCheckbox, BackLeftEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKRIGHT>, BobbyCheckbox, BackRightEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string EnableMenu::text() const
@ -35,5 +32,5 @@ std::string EnableMenu::text() const
void EnableMenu::back()
{
espgui::switchScreen<ControllerHardwareSettingsMenu>();
espgui::popScreen();
}

View File

@ -2,7 +2,7 @@
// 3rdparty lib includes
#include "actions/dummyaction.h"
#include "actions/switchscreenaction.h"
#include "actions/pushscreenaction.h"
#include "icons/back.h"
#include <accessorinterface.h>
#include <actioninterface.h>
@ -61,8 +61,8 @@ EspNowMenu::EspNowMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SENDTSMSG>, SendBobbycarTimesyncMessageAction, StaticMenuItemIcon<&bobbyicons::time>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_RECEIVETS>, BobbyCheckbox, ReceiveTimeStampAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_RECEIVETSFROMBOBBY>, BobbyCheckbox, ReceiveTsFromOtherBobbycarsAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SETTINGS>, SwitchScreenAction<EspNowSettingsMenu>, StaticMenuItemIcon<&bobbyicons::settings>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SETTINGS>, PushScreenAction<EspNowSettingsMenu>, StaticMenuItemIcon<&bobbyicons::settings>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PushScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string EspNowMenu::text() const
@ -72,5 +72,5 @@ std::string EspNowMenu::text() const
void EspNowMenu::back()
{
espgui::switchScreen<SettingsMenu>();
espgui::popScreen();
}

View File

@ -1,22 +1,13 @@
#include "espnowsettingsmenu.h"
// 3rdparty lib includes
#include "actions/dummyaction.h"
#include "actions/switchscreenaction.h"
#include "actions/popscreenaction.h"
#include "icons/back.h"
#include <accessorinterface.h>
#include <actioninterface.h>
#include <espchrono.h>
#include <fmt/core.h>
#include <menudisplay.h>
#include <textinterface.h>
// local includes
#include "accessors/settingsaccessors.h"
#include "icons/time.h"
#include "espnowmenu.h"
#include "bobbycheckbox.h"
#include "espnowfunctions.h"
namespace {
constexpr char TEXT_ESPNOW_SETTINGS[] = "ESP-Now settings";
@ -29,10 +20,11 @@ constexpr char TEXT_BACK[] = "Back";
EspNowSettingsMenu::EspNowSettingsMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCTIME>, BobbyCheckbox, ESPNowSyncTimeEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCWITHOTHERS>, BobbyCheckbox, ESPNowSyncTimeWithOthersEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ESPNOW_SYNCBLINK>, BobbyCheckbox, ESPNowSyncBlinkEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<EspNowMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string EspNowSettingsMenu::text() const
@ -42,5 +34,5 @@ std::string EspNowSettingsMenu::text() const
void EspNowSettingsMenu::back()
{
espgui::switchScreen<EspNowMenu>();
espgui::popScreen();
}

View File

@ -9,7 +9,7 @@
// local includes
#include "esp_log.h"
#include "accessors/settingsaccessors.h"
#include "actions/switchscreenaction.h"
#include "actions/popscreenaction.h"
#include "bobbyerrorhandler.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "globals.h"
@ -92,7 +92,7 @@ ExtraButtonCalibrateMenu::ExtraButtonCalibrateMenu()
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA3, ButtonExtra3Accessor, Status::WaitingExtra3>>();
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA4, ButtonExtra4Accessor, Status::WaitingExtra4>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void ExtraButtonCalibrateMenu::start()
@ -249,7 +249,7 @@ std::string ExtraButtonCalibrateMenu::text() const
void ExtraButtonCalibrateMenu::back()
{
switchScreen<BoardcomputerHardwareSettingsMenu>();
espgui::popScreen();
}
bool ExtraButtonCalibrateMenu::validateNewButton(uint8_t button)

View File

@ -2,7 +2,8 @@
// 3rdparty lib includes
#include <TFT_eSPI.h>
#include <actions/switchscreenaction.h>
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <fmt/core.h>
#include <icons/back.h>
#include <strutils.h>
@ -10,19 +11,38 @@
// local includes
#include "bobbycheckbox.h"
#include "displays/bobbypopupdisplay.h"
#include "displays/menus/settingsmenu.h"
#include "newsettings.h"
#include "taskmanager.h"
using namespace espgui;
#include "bobbyerrorhandler.h"
namespace {
constexpr const char * const TAG = "FEATUREFLAGSMENU";
constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags";
constexpr char TEXT_BACK[] = "Back";
constexpr char TEXT_POPUP[] = "Feature flags have been changed. Please restart the device to apply the changes.";
class FeatureFlagMenuItem : public MenuItem, public virtual BobbyErrorHandler {
bool isDirty{false};
void exitFeatureFlagsMenu()
{
espgui::popScreen();
if (isDirty)
{
BobbyErrorHandler{}.errorOccured(TEXT_POPUP);
}
}
class ExitFeatureFlagsMenuAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
exitFeatureFlagsMenu();
}
};
class FeatureFlagMenuItem : public espgui::MenuItem, public virtual BobbyErrorHandler {
public:
explicit FeatureFlagMenuItem(ConfiguredFeatureFlag &flag, bool isInitialized) : m_flag{flag}, m_isInitialized{isInitialized} {}
std::string text() const override
@ -58,32 +78,24 @@ public:
{
if (auto result = m_flag.isEnabled.write(configs.nvs_handle_user, !m_flag.isEnabled.value()); !result)
errorOccured(std::move(result).error());
else
isDirty = true;
}
const MenuItemIcon *icon() const override
const espgui::MenuItemIcon *icon() const override
{
return m_flag.isEnabled.value() ? &icons::checked : &icons::unchecked;
return m_flag.isEnabled.value() ? &espgui::icons::checked : &espgui::icons::unchecked;
}
private:
ConfiguredFeatureFlag &m_flag;
const bool m_isInitialized;
};
// TODO: Replace SwitchScreenAction / switchScreen with this action. Needs: BobbyPopupDisplayWithCustomExitAction => pass SwitchScreenAction<SettingsMenu> into it
class ExitFeatureFlagsMenuAction : public virtual ActionInterface {
public:
void triggered() override {
auto newDisplay = std::make_unique<BobbyPopupDisplay>(std::move("Please reboot if you have changed something"), std::move(espgui::currentDisplay));
newDisplay->initOverlay();
espgui::currentDisplay = std::move(newDisplay);
}
};
} // namespace
FeatureFlagsMenu::FeatureFlagsMenu()
{
using namespace espgui;
configs.callForEveryFeature([&](ConfiguredFeatureFlag &feature){
const std::string name = feature.getTaskName();
if (const auto err = checkInitializedByName(name); err)
@ -93,7 +105,13 @@ FeatureFlagsMenu::FeatureFlagsMenu()
else
constructMenuItem<FeatureFlagMenuItem>(feature, true);
});
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, ExitFeatureFlagsMenuAction>>();
}
void FeatureFlagsMenu::start()
{
Base::start();
isDirty = false;
}
std::string FeatureFlagsMenu::text() const
@ -103,5 +121,6 @@ std::string FeatureFlagsMenu::text() const
void FeatureFlagsMenu::back()
{
switchScreen<SettingsMenu>();
exitFeatureFlagsMenu();
}

View File

@ -5,8 +5,10 @@
class FeatureFlagsMenu : public bobbygui::MenuDisplayWithTime
{
using Base = bobbygui::MenuDisplayWithTime;
public:
FeatureFlagsMenu();
void start() override;
std::string text() const override;

View File

@ -0,0 +1,70 @@
#include "gitmenu.h"
// 3rdparty lib includes
#include <actions/dummyaction.h>
#include <actions/popscreenaction.h>
#include <fmt/core.h>
#include <icons/back.h>
// local includes
#include "bobbyerrorhandler.h"
#include "displays/qrdisplay.h"
#include "icons/info.h"
#include "icons/modes.h"
namespace {
constexpr char TEXT_GIT[] = "Git";
constexpr char TEXT_GIT_BRANCH_TITLE[] = "Branch";
constexpr char TEXT_GIT_BRANCH[] = GIT_BRANCH;
constexpr char TEXT_GIT_COMMIT_TITLE[] = "Commit";
constexpr char TEXT_GIT_COMMIT[] = GIT_REV;
constexpr char TEXT_GIT_COMMIT_SHORT[] = GIT_SHORT_REV;
constexpr char TEXT_GIT_MESSAGE_TITLE[] = "Commit Message";
constexpr char TEXT_GIT_MESSAGE[] = GIT_MESSAGE;
constexpr char TEXT_GITHUB_URL[] = "Github URL";
constexpr char TEXT_BACK[] = "Back";
class OpenPopupAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
BobbyErrorHandler{}.errorOccured(TEXT_GIT_MESSAGE);
}
};
class GitQrAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
// ToDo: Fix qr library and remove spaces, also, why is "`" at the end of string in qr code but not when logging?
const std::string qr_text = fmt::format("https://github.com/bobbycar-graz/bobbycar-boardcomputer-firmware/commit/{} ", GIT_REV);
espgui::pushScreen<QrDisplay>(qr_text);
}
};
} // namespace
GitMenu::GitMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_BRANCH_TITLE>, StaticColor<TFT_GREY>, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_BRANCH>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT_TITLE>, StaticColor<TFT_GREY>, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT>, DummyAction, StaticFont<2>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT_SHORT>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_MESSAGE_TITLE>, OpenPopupAction, StaticMenuItemIcon<&bobbyicons::info>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GITHUB_URL>, GitQrAction, StaticMenuItemIcon<&bobbyicons::modes>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string GitMenu::text() const
{
return TEXT_GIT;
}
void GitMenu::back()
{
espgui::popScreen();
}

View File

@ -0,0 +1,14 @@
#pragma once
// local includes
#include "displays/menudisplaywithtime.h"
class GitMenu : public bobbygui::MenuDisplayWithTime
{
public:
GitMenu();
std::string text() const override;
void back() override;
};

View File

@ -1,22 +1,19 @@
#include "greenpassmenu.h"
// 3rd party includes
// 3rdparty lib includes
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <esp_err.h>
#include <esp_log.h>
// 3rdparty lib includes
#include <fmt/core.h>
#include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
#include <icons/back.h>
// local includes
#include "actions/qraction.h"
#include "bobbycheckbox.h"
#include "displays/qrdisplay.h"
#include "displays/qrimportdisplay.h"
#include "qrimport.h"
#include "bobbycheckbox.h"
namespace {
constexpr char TEXT_GREENPASS[] = "Green Pass";
@ -53,7 +50,7 @@ public:
}
else
{
espgui::pushScreen<QrDisplay<GreenPassMenu>>(m_qrmenu.message);
espgui::pushScreen<QrDisplay>(m_qrmenu.message);
}
}
private:
@ -84,7 +81,7 @@ GreenPassMenu::GreenPassMenu()
}
else
{
constructMenuItem<makeComponentArgs<MenuItem, SwitchQrImportDisplayAction<GreenPassMenu>, StaticText<TEXT_ADDCERT>>>(std::move(nvs_key));
constructMenuItem<makeComponentArgs<MenuItem, PushQrImportDisplayAction<GreenPassMenu>, StaticText<TEXT_ADDCERT>>>(std::move(nvs_key));
}
}

View File

@ -1,19 +1,19 @@
#include "handbremssettingsmenu.h"
// 3rd party libs
#include <fmt/core.h>
#include <actions/switchscreenaction.h>
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <changevaluedisplay.h>
#include <fmt/core.h>
#include <icons/back.h>
#include <textwithvaluehelper.h>
// local includes
#include "accessors/settingsaccessors.h"
#include "bobbycheckbox.h"
#include "changevaluedisplay_handbremsmode.h"
#include "displays/bobbychangevaluedisplay.h"
#include "displays/menus/typesafeenumchangemenu.h"
#include "accessors/settingsaccessors.h"
#include "changevaluedisplay_handbremsmode.h"
#include "displays/menus/defaultmodesettingsmenu.h"
#include "bobbycheckbox.h"
namespace {
constexpr char TEXT_HANDBREMSE_ENABLE[] = "Enable Handbremse";
@ -28,8 +28,8 @@ using HandBremsTriggerTimeoutChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_HANDBREMSE_TRIGGERTIMEOUT>,
HandbremsTimeoutAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<HandbremsSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
}
@ -40,8 +40,8 @@ HandbremsSettingsMenu::HandbremsSettingsMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_AUTOMATIC>, BobbyCheckbox, HandbremsAutomaticAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_HANDBREMSE_VISUALIZE>, BobbyCheckbox, HandbremsVisualizeAccessor>>();
constructMenuItem<PushScreenTypeSafeChangeMenuItem<HandbremseMode, TEXT_HANDBREMSE_MODE>>(&configs.handbremse.mode);
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_HANDBREMSE_TRIGGERTIMEOUT, HandbremsTimeoutAccessor>, SwitchScreenAction<HandBremsTriggerTimeoutChangeValueDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DefaultModeSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_HANDBREMSE_TRIGGERTIMEOUT, HandbremsTimeoutAccessor>, PushScreenAction<HandBremsTriggerTimeoutChangeValueDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string HandbremsSettingsMenu::text() const
@ -51,5 +51,5 @@ std::string HandbremsSettingsMenu::text() const
void HandbremsSettingsMenu::back()
{
espgui::switchScreen<DefaultModeSettingsMenu>();
espgui::popScreen();
}

View File

@ -1,13 +1,10 @@
#include "invertmenu.h"
// 3rdparty lib includes
#include "actions/switchscreenaction.h"
#include "icons/back.h"
// local includes
#include "accessors/settingsaccessors.h"
#include "displays/menus/controllerhardwaresettingsmenu.h"
#include "actions/popscreenaction.h"
#include "bobbycheckbox.h"
#include "icons/back.h"
namespace {
constexpr char TEXT_SETINVERTED[] = "Set inverted";
@ -25,7 +22,7 @@ InvertMenu::InvertMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, BobbyCheckbox, FrontRightInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, BobbyCheckbox, BackLeftInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKRIGHT>, BobbyCheckbox, BackRightInvertedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string InvertMenu::text() const
@ -35,5 +32,5 @@ std::string InvertMenu::text() const
void InvertMenu::back()
{
espgui::switchScreen<ControllerHardwareSettingsMenu>();
espgui::popScreen();
}

View File

@ -1,18 +1,18 @@
#include "lockscreensettingsmenu.h"
// 3rdparty lib includes
#include <menuitem.h>
#include <actions/switchscreenaction.h>
#include <icons/back.h>
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <changevaluedisplay.h>
#include <icons/back.h>
#include <menuitem.h>
#include <textwithvaluehelper.h>
// local includes
#include "accessors/settingsaccessors.h"
#include "bobbycheckbox.h"
#include "displays/bobbychangevaluedisplay.h"
#include "globals.h"
#include "accessors/settingsaccessors.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "bobbycheckbox.h"
namespace {
constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings";
@ -28,32 +28,32 @@ using LockscreenPinDigit0ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT0>,
LockscreenPinDigitAccessor<0>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using LockscreenPinDigit1ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT1>,
LockscreenPinDigitAccessor<1>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using LockscreenPinDigit2ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT2>,
LockscreenPinDigitAccessor<2>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using LockscreenPinDigit3ChangeScreen = espgui::makeComponent<
BobbyChangeValueDisplay<int8_t>,
espgui::StaticText<TEXT_PINDIGIT3>,
LockscreenPinDigitAccessor<3>,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<LockscreenSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
} // namespace
@ -62,11 +62,11 @@ LockscreenSettingsMenu::LockscreenSettingsMenu()
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ALLOWPRESETSWITCH>, BobbyCheckbox, LockscreenAllowPresetSwitchAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_KEEPLOCKED>, BobbyCheckbox, LockscreenKeepLockedAccessor>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT0, LockscreenPinDigitAccessor<0>>, SwitchScreenAction<LockscreenPinDigit0ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT1, LockscreenPinDigitAccessor<1>>, SwitchScreenAction<LockscreenPinDigit1ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT2, LockscreenPinDigitAccessor<2>>, SwitchScreenAction<LockscreenPinDigit2ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT3, LockscreenPinDigitAccessor<3>>, SwitchScreenAction<LockscreenPinDigit3ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT0, LockscreenPinDigitAccessor<0>>, PushScreenAction<LockscreenPinDigit0ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT1, LockscreenPinDigitAccessor<1>>, PushScreenAction<LockscreenPinDigit1ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT2, LockscreenPinDigitAccessor<2>>, PushScreenAction<LockscreenPinDigit2ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT3, LockscreenPinDigitAccessor<3>>, PushScreenAction<LockscreenPinDigit3ChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string LockscreenSettingsMenu::text() const
@ -76,5 +76,5 @@ std::string LockscreenSettingsMenu::text() const
void LockscreenSettingsMenu::back()
{
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>();
espgui::popScreen();
}

View File

@ -5,7 +5,8 @@
#include <TFT_eSPI.h>
// local includes
#include "actions/switchscreenaction.h"
#include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "bobbyerrorhandler.h"
#include "globals.h"
#include "mainmenu.h"
@ -220,7 +221,7 @@ ManageProfilesMenu::ManageProfilesMenu()
constructMenuItem<ManageProfileMenuItem>(*this, i);
}
constructMenuItem<ManageProfileModeMenuItem>(*this);
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, espgui::PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
void ManageProfilesMenu::start()
@ -246,7 +247,7 @@ void ManageProfilesMenu::back()
{
if (!m_locked && m_firstIndex == -1)
{
switchScreen<MainMenu>();
espgui::popScreen();
return;
}

View File

@ -1,17 +1,16 @@
#include "mickmodesettingsmenu.h"
// 3rdparty lib includes
#include "changevaluedisplay.h"
#include "menuitem.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h"
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <changevaluedisplay.h>
#include <icons/back.h>
#include <menuitem.h>
// local includes
#include "displays/bobbychangevaluedisplay.h"
#include "utils.h"
#include "changevaluedisplay_unifiedmodelmode.h"
#include "accessors/settingsaccessors.h"
#include "displays/menus/modessettingsmenu.h"
#include "changevaluedisplay_unifiedmodelmode.h"
#include "displays/bobbychangevaluedisplay.h"
namespace {
constexpr char TEXT_MICKMODESETTINGS[] = "Mick mode settings";
@ -23,25 +22,25 @@ using MickModeModelModeChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<UnifiedModelMode>,
espgui::StaticText<TEXT_MODELMODE>,
MickModeModelModeAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using MickModeSmoothingChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<uint16_t>,
espgui::StaticText<TEXT_MICKMODE_SMOOTHING>,
MickModeSmoothingAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<MickModeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
} // namespace
using namespace espgui;
MickModeSettingsMenu::MickModeSettingsMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<MickModeModelModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICKMODE_SMOOTHING>, SwitchScreenAction<MickModeSmoothingChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, PushScreenAction<MickModeModelModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICKMODE_SMOOTHING>, PushScreenAction<MickModeSmoothingChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string MickModeSettingsMenu::text() const
@ -51,5 +50,5 @@ std::string MickModeSettingsMenu::text() const
void MickModeSettingsMenu::back()
{
switchScreen<ModesSettingsMenu>();
espgui::popScreen();
}

View File

@ -1,16 +1,15 @@
#include "modessettingsmenu.h"
// 3rdparty lib includes
#include "menuitem.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h"
#include <actions/pushscreenaction.h>
#include <icons/back.h>
#include <menuitem.h>
// local includes
#include "displays/menus/defaultmodesettingsmenu.h"
#include "displays/menus/tempomatmodesettingsmenu.h"
#include "displays/menus/larsmmodesettingsmenu.h"
#include "displays/menus/gametrakmodesettingsmenu.h"
#include "displays/menus/settingsmenu.h"
#include "displays/menus/larsmmodesettingsmenu.h"
#include "displays/menus/tempomatmodesettingsmenu.h"
namespace {
constexpr char TEXT_MODESSETTINGS[] = "Modes settings";
@ -24,13 +23,13 @@ constexpr char TEXT_BACK[] = "Back";
ModesSettingsMenu::ModesSettingsMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, SwitchScreenAction<DefaultModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, SwitchScreenAction<TempomatModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, SwitchScreenAction<LarsmModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, PushScreenAction<DefaultModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, PushScreenAction<TempomatModeSettingsMenu>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, PushScreenAction<LarsmModeSettingsMenu>>>();
#ifdef FEATURE_GAMETRAK
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>>();
#endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string ModesSettingsMenu::text() const
@ -40,5 +39,5 @@ std::string ModesSettingsMenu::text() const
void ModesSettingsMenu::back()
{
espgui::switchScreen<SettingsMenu>();
espgui::popScreen();
}

View File

@ -2,10 +2,8 @@
// 3rdparty lib includes
#include <actions/dummyaction.h>
#include <actions/pushscreenaction.h>
#include <actions/popscreenaction.h>
#include <icons/back.h>
#include <screenmanager.h>
#include <actions/pushscreenaction.h>
#include <fmt/format.h>
#include <icons/back.h>
#include <menuitem.h>
@ -14,11 +12,8 @@
// local includes
#include "displays/qrdisplay.h"
#include "globals.h"
#include "utils.h"
#include "settingsmenu.h"
#include "wifistasettingsmenu.h"
#include "wifiapsettingsmenu.h"
#include "texthelpers/networktexthelpers.h"
#include "utils.h"
#include "wifiapsettingsmenu.h"
#include "wifistasettingsmenu.h"
@ -58,5 +53,5 @@ void NetworkSettingsMenu::back()
void NetworkAccessPointQRAction::triggered()
{
std::string qr = fmt::format("WIFI:T:{};S:{};P:{};H:;", get_wifi_security_string(configs.wifiApAuthmode.value()), configs.wifiApName.value(), configs.wifiApKey.value());
espgui::switchScreen<QrDisplay<NetworkSettingsMenu>>(qr);
espgui::pushScreen<QrDisplay>(qr);
}

View File

@ -61,19 +61,19 @@ using namespace espgui;
SelectModeMenu::SelectModeMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, PushScreenAction<MainMenu>>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_TEMPOMAT, AvgSpeedAccessor>, MultiAction<SetTempomatModeAction, PushScreenAction<MainMenu>>>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, PushScreenAction<MainMenu>>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICK>, MultiAction<SetMickModeAction, PushScreenAction<MainMenu>>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_REMOTECONTROL>, MultiAction<SetRemoteControlModeAction, PushScreenAction<MainMenu>>>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, PopScreenAction>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_TEMPOMAT, AvgSpeedAccessor>, MultiAction<SetTempomatModeAction, PopScreenAction>>>(); }
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, PopScreenAction>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MICK>, MultiAction<SetMickModeAction, PopScreenAction>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_REMOTECONTROL>, MultiAction<SetRemoteControlModeAction, PopScreenAction>>>(); }
#ifdef FEATURE_GAMETRAK
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, PopScreenAction>>>();
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, PopScreenAction>>>(); }
#endif
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MOTORTEST>, MultiAction<SetMotorTestModeAction, PushScreenAction<MainMenu>>>>(); }
if (!simplified) { constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MOTORTEST>, MultiAction<SetMotorTestModeAction, PopScreenAction>>>(); }
#ifdef FEATURE_JOYSTICK
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELCHAIR>, MultiAction<SetWheelchairModeAction, PushScreenAction<MainMenu>>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_WHEELCHAIR>, MultiAction<SetWheelchairModeAction, PopScreenAction>>>();
#endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PushScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string SelectModeMenu::text() const
@ -114,5 +114,5 @@ void SelectModeMenu::start()
void SelectModeMenu::back()
{
popScreen();
espgui::popScreen();
}

View File

@ -1,24 +1,22 @@
#include "selectotabuildmenu.h"
#include <espwifistack.h>
// 3rdparty lib includes
#include <fmt/core.h>
#include <TFT_eSPI.h>
#include "esp_log.h"
#include "fmt/core.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
#include <espwifistack.h>
// local includes
#include "actions/dummyaction.h"
#include "actions/switchscreenaction.h"
#include "actions/popscreenaction.h"
#include "actions/pushscreenaction.h"
#include "bobbyerrorhandler.h"
#include "buildserver.h"
#include "displays/menus/otamenu.h"
#include "icons/back.h"
#include "buildserver.h"
#include "utils.h"
#include "displays/menus/otamenu.h"
#include "globals.h"
#include "icons/back.h"
#include "newsettings.h"
#include "utils.h"
#define MESSAGE(text) constructMenuItem<makeComponent<MenuItem, StaticText<text>, DefaultFont, StaticColor<TFT_RED>, DummyAction>>()

View File

@ -22,6 +22,7 @@
#include "displays/menus/crashmenu.h"
#include "displays/menus/espnowmenu.h"
#include "displays/menus/featureflagsmenu.h"
#include "displays/menus/gitmenu.h"
#include "displays/menus/limitssettingsmenu.h"
#include "displays/menus/mainmenu.h"
#include "displays/menus/modessettingsmenu.h"
@ -33,6 +34,7 @@
#include "icons/bluetooth.h"
#include "icons/buzzer.h"
#include "icons/demos.h"
#include "icons/git.h"
#include "icons/hardware.h"
#include "icons/info.h"
#include "icons/time.h"
@ -64,6 +66,7 @@ constexpr char TEXT_FRONTLED[] = "Front LED";
constexpr char TEXT_BACKLED[] = "Back LED";
constexpr char TEXT_CRASHMENU[] = "Crash Menu";
constexpr char TEXT_ABOUT[] = "About";
constexpr char TEXT_GIT[] = "Git";
constexpr char TEXT_BACK[] = "Back";
#ifdef FEATURE_LEDBACKLIGHT
@ -126,6 +129,7 @@ SettingsMenu::SettingsMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLED>, BobbyCheckbox, BackLedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CRASHMENU>, PushScreenAction<CrashMenu>, StaticMenuItemIcon<&bobbyicons::demos>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ABOUT>, PushScreenAction<AboutMenu>, StaticMenuItemIcon<&bobbyicons::info>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT>, PushScreenAction<GitMenu>, StaticMenuItemIcon<&bobbyicons::git>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}

View File

@ -4,15 +4,13 @@
#include <textwithvaluehelper.h>
// local includes
#include "actions/switchscreenaction.h"
#include "accessors/settingsaccessors.h"
#include "displays/bobbychangevaluedisplay.h"
#include "changevaluedisplay_bobbyquickactions.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "icons/back.h"
#include "actions/popscreenaction.h"
#include "actions/pushscreenaction.h"
#include "bobbyquickactions.h"
using namespace espgui;
#include "changevaluedisplay_bobbyquickactions.h"
#include "displays/bobbychangevaluedisplay.h"
#include "icons/back.h"
namespace {
constexpr char TEXT_SETUPQUICKACTIONS[] = "Setup QuickActions";
@ -26,27 +24,29 @@ constexpr char TEXT_SETUPEXTRA3[] = "&sSetup Extra3";
constexpr char TEXT_SETUPEXTRA4[] = "&sSetup Extra4";
constexpr char TEXT_BACK[] = "Back";
template<typename Tvalue, const char* TEXT, typename Accessor, typename Screen>
template<typename Tvalue, const char* TEXT, typename Accessor>
using QuickActionChangeValueDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<Tvalue>,
espgui::StaticText<TEXT>,
Accessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<Screen>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<Screen>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
} // namespace
SetupQuickActionsMenu::SetupQuickActionsMenu()
{
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPLEFT2, QuickActionLeft2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPLEFT2, QuickActionLeft2Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPRIGHT2, QuickActionRight2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPRIGHT2, QuickActionRight2Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPUP2, QuickActionUp2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPUP2, QuickActionUp2Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPDOWN2, QuickActionDown2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPDOWN2, QuickActionDown2Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA1, QuickActionExtra1Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA2, QuickActionExtra2Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA3, QuickActionExtra3Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA4, QuickActionExtra4Accessor, SetupQuickActionsMenu>>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPLEFT2, QuickActionLeft2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPLEFT2, QuickActionLeft2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPRIGHT2, QuickActionRight2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPRIGHT2, QuickActionRight2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPUP2, QuickActionUp2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPUP2, QuickActionUp2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPDOWN2, QuickActionDown2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPDOWN2, QuickActionDown2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>, PushScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string SetupQuickActionsMenu::text() const
@ -56,5 +56,5 @@ std::string SetupQuickActionsMenu::text() const
void SetupQuickActionsMenu::back()
{
switchScreen<BoardcomputerHardwareSettingsMenu>();
espgui::popScreen();
}

View File

@ -1,7 +1,8 @@
#include "timersmenu.h"
// 3rdparty lib includes
#include "actions/switchscreenaction.h"
#include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "changevaluedisplay.h"
#include "icons/back.h"
@ -19,16 +20,16 @@ using StatsUpdateRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_STATSUPDATERATE>,
StatsUpdateRateAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimersMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimersMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
} // namespace
TimersMenu::TimersMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, SwitchScreenAction<StatsUpdateRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, espgui::PushScreenAction<StatsUpdateRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, espgui::PushScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string TimersMenu::text() const
@ -38,5 +39,5 @@ std::string TimersMenu::text() const
void TimersMenu::back()
{
espgui::switchScreen<BoardcomputerHardwareSettingsMenu>();
espgui::popScreen();
}

View File

@ -9,7 +9,8 @@
#include "changevaluedisplay_daylightsavingmode.h"
#include "changevaluedisplay_sntp_sync_mode_t.h"
#include "changevaluedisplay_string.h"
#include "actions/switchscreenaction.h"
#include "actions/pushscreenaction.h"
#include "actions/popscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
#include "espstrutils.h"
@ -71,40 +72,40 @@ using TimezoneOffsetChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int32_t>,
espgui::StaticText<TEXT_OFFSET>,
TimezoneOffsetAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using DaylightSavingModeChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<espchrono::DayLightSavingMode>,
espgui::StaticText<TEXT_DAYLIGHTSAVINGMODE>,
DaylightSavingModeAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using TimeServerChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<std::string>,
espgui::StaticText<TEXT_NTPSERVER>,
TimeServerAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using TimeSyncModeChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<sntp_sync_mode_t>,
espgui::StaticText<TEXT_NTPMODE>,
TimeSyncModeAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
using TimeSyncIntervalChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int32_t>,
espgui::StaticText<TEXT_NTPINTERVAL>,
TimeSyncIntervalAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<TimeSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
class NtpSyncStatusText : public virtual espgui::TextInterface
@ -123,17 +124,17 @@ TimeSettingsMenu::TimeSettingsMenu()
constructMenuItem<makeComponent<MenuItem, CurrentUtcDateTimeText, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, CurrentLocalDateTimeText, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, SuntimeText, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_OFFSET>, SwitchScreenAction<TimezoneOffsetChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DAYLIGHTSAVINGMODE>, SwitchScreenAction<DaylightSavingModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_OFFSET>, PushScreenAction<TimezoneOffsetChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DAYLIGHTSAVINGMODE>, PushScreenAction<DaylightSavingModeChangeDisplay>>>();
if (configs.feature.ntp.isEnabled.value())
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPENABLED>, BobbyCheckbox, TimeServerEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPSERVER>, SwitchScreenAction<TimeServerChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPMODE>, SwitchScreenAction<TimeSyncModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPINTERVAL>, SwitchScreenAction<TimeSyncIntervalChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPSERVER>, PushScreenAction<TimeServerChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPMODE>, PushScreenAction<TimeSyncModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_NTPINTERVAL>, PushScreenAction<TimeSyncIntervalChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, NtpSyncStatusText, DummyAction>>();
}
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string TimeSettingsMenu::text() const
@ -143,5 +144,5 @@ std::string TimeSettingsMenu::text() const
void TimeSettingsMenu::back()
{
espgui::switchScreen<SettingsMenu>();
espgui::popScreen();
}

View File

@ -5,7 +5,7 @@
#include <fmt/core.h>
#include <icons/back.h>
#include <actions/dummyaction.h>
#include <actions/switchscreenaction.h>
#include <actions/pushscreenaction.h>
#include <actions/popscreenaction.h>
// local includes
@ -89,7 +89,7 @@ private:
};
} // namespace typesafeenumchangemenu
template<typename TEnum, typename TMenu, const char *Ttext>
template<typename TEnum, const char *Ttext>
class SwitchScreenTypeSafeChangeMenuItem : public espgui::MenuItem
{
public:
@ -103,7 +103,7 @@ public:
void triggered() override
{
espgui::switchScreen<typesafeenumchangemenu::TypeSafeChangeMenu<TEnum>>(m_config);
espgui::pushScreen<typesafeenumchangemenu::TypeSafeChangeMenu<TEnum>>(m_config);
}
private:
ConfigWrapper<TEnum>* m_config;

View File

@ -1,18 +1,17 @@
#include "udpcloudsettingsmenu.h"
// 3rdparty lib includes
#include <actions/popscreenaction.h>
#include <actions/pushscreenaction.h>
#include <changevaluedisplay.h>
#include <fmt/core.h>
#include "menuitem.h"
#include "changevaluedisplay.h"
#include "actions/switchscreenaction.h"
#include "actions/dummyaction.h"
#include "icons/back.h"
#include <icons/back.h>
#include <menuitem.h>
// local includes
#include "displays/bobbychangevaluedisplay.h"
#include "accessors/settingsaccessors.h"
#include "displays/menus/settingsmenu.h"
#include "bobbycheckbox.h"
#include "displays/bobbychangevaluedisplay.h"
namespace {
constexpr char TEXT_UDPCLOUDSETTINGS[] = "UDP Cloud settings";
@ -25,8 +24,8 @@ using UdpCloudSendRateChangeDisplay = espgui::makeComponent<
BobbyChangeValueDisplay<int16_t>,
espgui::StaticText<TEXT_UDPSENDRATE>,
UdpCloudSendIntervalAccessor,
espgui::ConfirmActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>,
espgui::BackActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>
espgui::ConfirmActionInterface<espgui::PopScreenAction>,
espgui::BackActionInterface<espgui::PopScreenAction>
>;
} // namespace
@ -36,8 +35,8 @@ UdpCloudSettingsMenu::UdpCloudSettingsMenu()
{
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPCLOUDENABLED>, BobbyCheckbox, UdpCloudEnabledAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPUSESTRING>, BobbyCheckbox, UdpUseStdStringAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPSENDRATE>, SwitchScreenAction<UdpCloudSendRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPSENDRATE>, PushScreenAction<UdpCloudSendRateChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string UdpCloudSettingsMenu::text() const
@ -47,5 +46,5 @@ std::string UdpCloudSettingsMenu::text() const
void UdpCloudSettingsMenu::back()
{
switchScreen<SettingsMenu>();
espgui::popScreen();
}

View File

@ -2,15 +2,15 @@
// 3rdparty lib includes
#include <tftinstance.h>
#include <screenmanager.h>
// local includes
#include "actions/switchscreenaction.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "displays/menus/mainmenu.h"
#include "displays/statusdisplay.h"
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
#include "globals.h"
#include "newsettings.h"
#include "utils.h"
#include "globals.h"
namespace {
constexpr char TEXT_CALIBRATE[] = "Potis Calibrate";

View File

@ -3,11 +3,11 @@
// system includes
#include <array>
#include <string>
#include <optional>
// 3rdparty lib includes
#include <fmt/core.h>
#include <cpputils.h>
#include <actions/switchscreenaction.h>
#include <widgets/label.h>
#include <widgets/progressbar.h>

View File

@ -1,16 +1,15 @@
#pragma once
// 3rd party includes
#include <tftinstance.h>
#include <qrcode.h>
#include <screenmanager.h>
#include <tftinstance.h>
// local includes
#include "bobbydisplay.h"
#include "screenmanager.h"
uint16_t get_qrver_from_strlen(std::string_view str);
template<typename TMenu>
class QrDisplay : public BobbyDisplay
{
using Base = BobbyDisplay;
@ -46,14 +45,13 @@ public:
void buttonPressed(espgui::Button button) override
{
using namespace espgui;
Base::buttonPressed(button);
switch (button)
{
case espgui::Button::Left:
case espgui::Button::Right:
switchScreen<TMenu>();
espgui::popScreen();
break;
default:;
}

30
main/icons/git.cpp Normal file
View File

@ -0,0 +1,30 @@
#include "git.h"
namespace bobbyicons {
const espgui::Icon<24, 24> git{{
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xEA66,0xE246,0xD225,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xEA66,0xE246,0xCA25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xCA25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xDA25,0xDA45,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE246,0xD225,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0xDA25,0xDA45,0xEA66,0xEA66,0xDA45,0xE245,0xEA86,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xDA45,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0xDA25,0xDA45,0xEA66,0xF286,0xEA86,0xEA66,0xDA45,0xE246,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xDA45,0xDA45,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0xD225,0xDA45,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xE266,0xC1E5,0xDA45,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xE245,0xD225,0x0000,0x0000,0x0000,
0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xD225,0x0000,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE246,0xCA25,0x0000,0x0000,
0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA66,0xDA45,0xD225,0xD225,0xE266,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xCA25,0x0000,
0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xE266,0xEA66,0xD225,0xE266,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE246,0xD225,
0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xEA66,0xEA66,0xD225,0xE246,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xE246,
0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xEA66,0xEA66,0x0000,0xD225,0xE266,0xF286,0xF286,0xF286,0xF286,0xEA66,
0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xEA86,0xEA66,0x2882,0xD225,0xE266,0xF286,0xF286,0xF286,0xF286,0xEA66,
0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xF286,0xEA66,0xE266,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xE266,
0xD225,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xDA45,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE266,
0x0000,0xCA25,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA66,0xDA45,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,
0x0000,0x0000,0xCA25,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA66,0xE245,0xE266,0xEA66,0xEA86,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,
0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xCA05,0xCA05,0xEA66,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0xDA45,0xDA45,0xEA66,0xF286,0xF286,0xF286,0xEA66,0xEA66,0xE266,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE266,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0xDA45,0xE245,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE266,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE246,0xEA66,0xF286,0xF286,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xCA25,0xE245,0xEA66,0xF286,0xF286,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xD225,0xE245,0xEA66,0xF286,0xF286,0xEA86,0xEA66,0xE246,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xCA05,0xE245,0xEA66,0xEA66,0xE266,0xE266,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
}, "git"};
} // namespace bobbyicons

7
main/icons/git.h Normal file
View File

@ -0,0 +1,7 @@
#pragma once
#include "icon.h"
namespace bobbyicons {
extern const espgui::Icon<24, 24> git;
} // namespace bobbyicons

View File

@ -14,6 +14,7 @@ constexpr const char * const TAG = "BOBBY";
using namespace std::chrono_literals;
#include <espwifistack.h>
#include <schedulertask.h>
#include <screenmanager.h>
// local includes
#include "bobbycar-common.h"