Fixed featureflagsmenu
This commit is contained in:
@@ -18,10 +18,21 @@ constexpr const char * const TAG = "FEATUREFLAGSMENU";
|
|||||||
constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags";
|
constexpr char TEXT_FEATUREFLAGS[] = "Feature Flags";
|
||||||
constexpr char TEXT_BACK[] = "Back";
|
constexpr char TEXT_BACK[] = "Back";
|
||||||
|
|
||||||
class FeatureFlagMenuItem : public MenuItem, public BobbyCheckbox {
|
class FeatureFlagMenuItem : public MenuItem, public virtual BobbyErrorHandler {
|
||||||
public:
|
public:
|
||||||
explicit FeatureFlagMenuItem(ConfigWrapper<bool> *config) : m_config{*config} {}
|
explicit FeatureFlagMenuItem(ConfigWrapper<bool> &config) : m_config{config} {}
|
||||||
std::string text() const override { return m_config.nvsName(); }
|
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:
|
private:
|
||||||
ConfigWrapper<bool> &m_config;
|
ConfigWrapper<bool> &m_config;
|
||||||
};
|
};
|
||||||
@@ -30,7 +41,7 @@ private:
|
|||||||
FeatureFlagsMenu::FeatureFlagsMenu()
|
FeatureFlagsMenu::FeatureFlagsMenu()
|
||||||
{
|
{
|
||||||
configs.callForEveryFeature([&](ConfigWrapper<bool> &feature){
|
configs.callForEveryFeature([&](ConfigWrapper<bool> &feature){
|
||||||
constructMenuItem<FeatureFlagMenuItem>(&feature);
|
constructMenuItem<FeatureFlagMenuItem>(feature);
|
||||||
});
|
});
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>>>();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user