diff --git a/main/displays/menus/featureflagsmenu.cpp b/main/displays/menus/featureflagsmenu.cpp index 1b59429..6ccab7f 100644 --- a/main/displays/menus/featureflagsmenu.cpp +++ b/main/displays/menus/featureflagsmenu.cpp @@ -18,10 +18,21 @@ constexpr const char * const TAG = "FEATUREFLAGSMENU"; constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags"; constexpr char TEXT_BACK[] = "Back"; -class FeatureFlagMenuItem : public MenuItem, public BobbyCheckbox { +class FeatureFlagMenuItem : public MenuItem, public virtual BobbyErrorHandler { public: - explicit FeatureFlagMenuItem(ConfigWrapper *config) : m_config{*config} {} + explicit FeatureFlagMenuItem(ConfigWrapper &config) : m_config{config} {} std::string text() const override { return m_config.nvsName(); } + + void triggered() override + { + if (auto result = m_config.write(configs.nvs_handle_user, !m_config.value); !result) + errorOccured(std::move(result).error()); + } + + const MenuItemIcon *icon() const override + { + return m_config.value ? &icons::checked : &icons::unchecked; + } private: ConfigWrapper &m_config; }; @@ -30,7 +41,7 @@ private: FeatureFlagsMenu::FeatureFlagsMenu() { configs.callForEveryFeature([&](ConfigWrapper &feature){ - constructMenuItem(&feature); + constructMenuItem(feature); }); constructMenuItem, SwitchScreenAction>>(); }