From fa4aeac27d5d40e5e9b38e9f08171d2f8f16554c Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Mon, 17 Jan 2022 15:38:04 +0100 Subject: [PATCH] Added featureflags menu --- main/CMakeLists.txt | 2 + main/displays/menus/featureflagsmenu.cpp | 53 ++++++++++++++++++++++++ main/displays/menus/featureflagsmenu.h | 14 +++++++ main/displays/menus/settingsmenu.cpp | 3 ++ 4 files changed, 72 insertions(+) create mode 100644 main/displays/menus/featureflagsmenu.cpp create mode 100644 main/displays/menus/featureflagsmenu.h diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 55fc0b2..8eba682 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -97,6 +97,7 @@ set(headers displays/menus/espnowmenu.h displays/menus/espnowsettingsmenu.h displays/menus/extrabuttoncalibratemenu.h + displays/menus/featureflagsmenu.h displays/menus/feedbackdebugmenu.h displays/menus/gametrakmodesettingsmenu.h displays/menus/garagenmenu.h @@ -326,6 +327,7 @@ set(sources displays/menus/espnowmenu.cpp displays/menus/espnowsettingsmenu.cpp displays/menus/extrabuttoncalibratemenu.cpp + displays/menus/featureflagsmenu.cpp displays/menus/feedbackdebugmenu.cpp displays/menus/gametrakmodesettingsmenu.cpp displays/menus/garagenmenu.cpp diff --git a/main/displays/menus/featureflagsmenu.cpp b/main/displays/menus/featureflagsmenu.cpp new file mode 100644 index 0000000..df9aa92 --- /dev/null +++ b/main/displays/menus/featureflagsmenu.cpp @@ -0,0 +1,53 @@ +#include "featureflagsmenu.h" + +constexpr const char * const TAG = "FEATUREFLAGSMENU"; + +// 3rdparty lib includes +#include +#include +#include + +// local includes +#include "displays/menus/settingsmenu.h" +#include "bobbycheckbox.h" +#include "newsettings.h" + +using namespace espgui; + +namespace { + +constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags"; +constexpr char TEXT_BACK[] = "Back"; + +class FeatureFlagMenuItem : public MenuItem { +public: + FeatureFlagMenuItem(ConfigWrapper *config) : m_config{*config} {} + + std::string text() const override { return m_config.nvsName(); } + + void triggered() override + { + ESP_LOGI(TAG, "changed value of %s", m_config.nvsName()); + } +private: + ConfigWrapper &m_config; +}; +} // namespace + +FeatureFlagsMenu::FeatureFlagsMenu() +{ + configs.callForEveryFeature([&](ConfigWrapper &feature){ + constructMenuItem(&feature); + }); + constructMenuItem, SwitchScreenAction>>(); +} + +std::string FeatureFlagsMenu::text() const +{ + return TEXT_FEATUREFLAGS; +} + +void FeatureFlagsMenu::back() +{ + switchScreen(); +} diff --git a/main/displays/menus/featureflagsmenu.h b/main/displays/menus/featureflagsmenu.h new file mode 100644 index 0000000..b2e72ba --- /dev/null +++ b/main/displays/menus/featureflagsmenu.h @@ -0,0 +1,14 @@ +#pragma once + +// local includes +#include "displays/menudisplaywithtime.h" + +class FeatureFlagsMenu : public bobbygui::MenuDisplayWithTime +{ +public: + FeatureFlagsMenu(); + + std::string text() const override; + + void back() override; +}; diff --git a/main/displays/menus/settingsmenu.cpp b/main/displays/menus/settingsmenu.cpp index 8ee2aa0..e786b05 100644 --- a/main/displays/menus/settingsmenu.cpp +++ b/main/displays/menus/settingsmenu.cpp @@ -41,6 +41,7 @@ #include "displays/menus/crashmenu.h" #include "displays/menus/aboutmenu.h" #include "displays/menus/mainmenu.h" +#include "displays/menus/featureflagsmenu.h" #include "bobbycheckbox.h" namespace { @@ -58,6 +59,7 @@ constexpr char TEXT_TIME[] = "Time"; constexpr char TEXT_MODESSETTINGS[] = "Modes settings"; constexpr char TEXT_CONTROLLERHARDWARESETTINGS[] = "Controller H/W settings"; constexpr char TEXT_BOARDCOMPUTERHARDWARESETTINGS[] = "Boardcomputer H/W settings"; +constexpr char TEXT_FEATUREFLAGS[] = "Feature flags"; constexpr char TEXT_AUTOCONNECTBMS[] = "Auto connect BMS"; constexpr char TEXT_BUZZER[] = "Buzzer"; constexpr char TEXT_FRONTLED[] = "Front LED"; @@ -110,6 +112,7 @@ SettingsMenu::SettingsMenu() constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::hardware>>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::hardware>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::demos>>>(); //#if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) // constructMenuItem, BobbyCheckbox, AutoConnectBmsAccessor>>(); //#endif