implement left/right with callback
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -1,28 +1,31 @@
|
||||
#include "ui/LightMenu.h"
|
||||
|
||||
LightMenu::LightMenu(menu_options_t *options) : PSMenu(options), m_options(options)
|
||||
#include "ui/LightSettingsMenu.h"
|
||||
|
||||
namespace LightMenuItem
|
||||
{
|
||||
constexpr uint8_t MODE = 1;
|
||||
constexpr uint8_t TOGGLE = 2;
|
||||
constexpr uint8_t LED_SETTINGS = 3;
|
||||
}
|
||||
|
||||
LightMenu::LightMenu(menu_options_t *options) : Menu(options), m_options(options)
|
||||
{
|
||||
std::vector<std::string> values;
|
||||
values.emplace_back("Tag");
|
||||
values.emplace_back("Nacht");
|
||||
addSelection(1, "Modus", values.front(), values, [this](const uint8_t id, const ButtonType button) {
|
||||
onButtonPressed(id, button);
|
||||
});
|
||||
addSelection(LightMenuItem::MODE, "Modus", values, 0);
|
||||
|
||||
addText(2, "LED Einstellungen", [this](const uint8_t id, const ButtonType button) {
|
||||
onButtonPressed(id, button);
|
||||
});
|
||||
|
||||
addToggle(3, "Toggle", false, nullptr);
|
||||
addText(LightMenuItem::LED_SETTINGS, "LED Einstellungen");
|
||||
}
|
||||
|
||||
void LightMenu::onButtonPressed(const uint8_t id, const ButtonType button) const
|
||||
void LightMenu::onButtonPressed(const MenuItem &menuItem, const ButtonType button)
|
||||
{
|
||||
std::shared_ptr<Widget> widget;
|
||||
switch (id)
|
||||
switch (menuItem.getId())
|
||||
{
|
||||
case 2:
|
||||
widget = std::make_shared<LightMenu>(m_options);
|
||||
case LightMenuItem::LED_SETTINGS:
|
||||
widget = std::make_shared<LightSettingsMenu>(m_options);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
65
components/insa/src/ui/LightSettingsMenu.cpp
Normal file
65
components/insa/src/ui/LightSettingsMenu.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
#include "ui/LightSettingsMenu.h"
|
||||
|
||||
namespace LightSettingsMenuItem
|
||||
{
|
||||
constexpr uint8_t SECTION_COUNTER = 0;
|
||||
}
|
||||
|
||||
LightSettingsMenu::LightSettingsMenu(menu_options_t *options) : Menu(options), m_options(options)
|
||||
{
|
||||
std::vector<std::string> values;
|
||||
for (size_t i = 1; i <= 99; i++)
|
||||
{
|
||||
values.emplace_back(std::to_string(i));
|
||||
}
|
||||
addSelection(LightSettingsMenuItem::SECTION_COUNTER, "Sektionen", values, 0);
|
||||
|
||||
addSelection(1, "Sektion 1", values, 0);
|
||||
}
|
||||
|
||||
void LightSettingsMenu::onButtonPressed(const MenuItem &menuItem, const ButtonType button)
|
||||
{
|
||||
/// change visible counter
|
||||
switch (button)
|
||||
{
|
||||
case ButtonType::LEFT:
|
||||
if (menuItem.getIndex() > 0)
|
||||
{
|
||||
const auto item = menuItem.copyWith(menuItem.getIndex() - 1);
|
||||
replaceItem(menuItem.getId(), item);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto item = menuItem.copyWith(menuItem.getItemCount() - 1);
|
||||
replaceItem(menuItem.getId(), item);
|
||||
}
|
||||
break;
|
||||
|
||||
case ButtonType::RIGHT:
|
||||
if (menuItem.getIndex() < menuItem.getItemCount() - 1)
|
||||
{
|
||||
const auto item = menuItem.copyWith(menuItem.getIndex() + 1);
|
||||
replaceItem(menuItem.getId(), item);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto item = menuItem.copyWith(0);
|
||||
replaceItem(menuItem.getId(), item);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/// change section list
|
||||
setItemSize(std::stoull(getItem(0).getValue()));
|
||||
|
||||
/// persist section values
|
||||
if (m_options && m_options->persistence && m_options->persistence->save)
|
||||
{
|
||||
const auto key = "section_" + std::to_string(menuItem.getId());
|
||||
const auto &value = getItem(menuItem.getId()).getValue();
|
||||
m_options->persistence->save(key.c_str(), value.c_str());
|
||||
}
|
||||
}
|
@@ -4,23 +4,17 @@
|
||||
#include "ui/LightMenu.h"
|
||||
#include "ui/SettingsMenu.h"
|
||||
|
||||
MainMenu::MainMenu(menu_options_t *options) : PSMenu(options), m_options(options)
|
||||
MainMenu::MainMenu(menu_options_t *options) : Menu(options), m_options(options)
|
||||
{
|
||||
addText(1, "Lichtsteuerung", [this](const uint8_t id, const ButtonType button) {
|
||||
onButtonPressed(id, button);
|
||||
});
|
||||
addText(2, "externe Geraete", [this](const uint8_t id, const ButtonType button) {
|
||||
onButtonPressed(id, button);
|
||||
});
|
||||
addText(3, "Einstellungen", [this](const uint8_t id, const ButtonType button) {
|
||||
onButtonPressed(id, button);
|
||||
});
|
||||
addText(1, "Lichtsteuerung");
|
||||
addText(2, "externe Geraete");
|
||||
addText(3, "Einstellungen");
|
||||
}
|
||||
|
||||
void MainMenu::onButtonPressed(const uint8_t id, const ButtonType button) const
|
||||
void MainMenu::onButtonPressed(const MenuItem &menuItem, const ButtonType button)
|
||||
{
|
||||
std::shared_ptr<Widget> widget;
|
||||
switch (id)
|
||||
switch (menuItem.getId())
|
||||
{
|
||||
case 1:
|
||||
widget = std::make_shared<LightMenu>(m_options);
|
||||
|
@@ -1,11 +1,6 @@
|
||||
#include "ui/SettingsMenu.h"
|
||||
|
||||
void demo(uint8_t id, ButtonType button)
|
||||
SettingsMenu::SettingsMenu(menu_options_t *options) : Menu(options)
|
||||
{
|
||||
///
|
||||
}
|
||||
|
||||
SettingsMenu::SettingsMenu(menu_options_t *options) : PSMenu(options)
|
||||
{
|
||||
addText(1, "OTA Einspielen", demo);
|
||||
addText(1, "OTA Einspielen");
|
||||
}
|
Reference in New Issue
Block a user