/** * @file menuDriveMode.h * @author Alexander Klein (alex@kleiax.de) * @brief Contains a base class for Menus about DriveModi * @version 0.1 * @date 2022-01-31 * * @copyright Copyright (c) 2022 * */ #ifndef MENU_DRIVE_MODI_H #define MENU_DRIVE_MODI_H #include "menuInformationSites.h" #include "driveModi/driveManager.h" #include "SpecialMenus/SensorData/menuSensorData.h" #include "SpecialMenus/Speed/menuSpeed.h" /** * @brief A base class for Menus about DriveModi * */ class MenuDriveMode : public MenuInformationSites { public: /** * @brief Construct a new Menu Drive Mode object * * @param driveManager */ MenuDriveMode(DriveManager* driveManager); void addSensorMenu(MenuSensorData* menuSensor) { this->menuSensor = menuSensor; } void addSpeedMenu(MenuIntInput* menuSpeed) { this->menuSpeed = menuSpeed; } /** * @brief Goes back to the parentMenu. */ void left() override; void right() override; void up() override; void down() override; void yes() override; void no() override; void prepareReenterMenu() override; void printMenu() override; protected: void init() override; virtual void configureOnLeave() {} void activateSpeedMenu(); void enterSpeedMenu(); void enterSensorMenu(); DriveManager* driveManager; bool firstPrint = true; private: void enterMenu(); MenuControl* activeMenu = nullptr; MenuSensorData* menuSensor = nullptr; MenuIntInput* menuSpeed = nullptr; }; #endif // MENU_DRIVE_MODI_H