/** * @file menuIntInput.h * @author Alexander Klein (alex@kleiax.de) * @brief * @version 0.1 * @date 2022-09-12 * * @copyright Copyright (c) 2022 * */ #ifndef MENU_INT_INPUT_H #define MENU_INT_INPUT_H #include "menuControl.h" #include #define MAX_NAME_LENGTH 12 class MenuIntInputWrapper { public: virtual ~MenuIntInputWrapper() {} virtual void action(int16_t* values, uint8_t length) = 0; }; class MenuIntInput : public MenuControl { public: MenuIntInput(int16_t values[], char *names, uint8_t length, MenuIntInputWrapper* wrapper); MenuIntInput(uint8_t length, MenuIntInputWrapper *wrapper); ~MenuIntInput(); void setEntry(uint8_t valueNumber, const char* name, int16_t startValue = 0); void setMin(uint8_t valueNumber, int16_t min); void setMin(int16_t min); void setMax(uint8_t valueNumber, int16_t max); void setMax(int16_t max); void setMinMax(uint8_t valueNumber, int16_t min, int16_t max); void setMinMax(int16_t min, int16_t max); void setMinMaxSteps(uint8_t valueNumber, int16_t min, int16_t max, uint8_t steps); void setMinMaxSteps(int16_t min, int16_t max, uint8_t steps); void setPrintParentMenu(bool b) { this->printParentMenu = b; } void setStepsPerInput(uint8_t valueNumber, uint8_t steps); void setStepsPerInput(uint8_t steps); /** * @brief Decrement selected value */ void down() override; /** * @brief Increment selected value */ void up() override; /** * @brief Select next value */ void right() override; /** * @brief Select previous value */ void left() override; /** * @brief Leave menu without saving */ void no() override; /** * @brief Leave menu with saving */ void yes() override; /** * @brief Prints the Information to display and console * * The informations are only printed to the display if it * set. */ void printMenu() override; void update() override {}; private: MenuIntInputWrapper* wrapper; bool printParentMenu = true; uint8_t currentPosition = 0; uint8_t length; uint8_t *stepsPerInput; uint8_t countSameActions = 0; int16_t *values; int16_t *originalValues; int16_t *min; int16_t *max; char *names; }; #endif // MENU_INT_INPUT_H