From df6a4b5e92f70c50ce4c245cfcefc6d1f80adf82 Mon Sep 17 00:00:00 2001 From: Alexander Klein Date: Thu, 11 May 2023 08:39:06 +0200 Subject: [PATCH] integrated menuInformationsSites to driveMenu items --- .../driveModi/Autopilot/menuAutopilot.cpp | 7 ++-- .../driveModi/Autopilot/menuAutopilot.h | 4 +-- .../CaptureRoute/menuCaptureRoute.cpp | 34 ++++++++++++++----- .../driveModi/CaptureRoute/menuCaptureRoute.h | 5 ++- .../driveModi/ManualDrive/menuManualDrive.cpp | 30 +++++++++++++--- .../driveModi/ManualDrive/menuManualDrive.h | 6 ++-- src/SpecialMenus/driveModi/menuDriveMode.cpp | 4 ++- src/SpecialMenus/driveModi/menuDriveMode.h | 12 ++----- 8 files changed, 64 insertions(+), 38 deletions(-) diff --git a/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.cpp b/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.cpp index d7fa953..3cad3e6 100644 --- a/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.cpp +++ b/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.cpp @@ -11,10 +11,7 @@ #include "menuAutopilot.h" -void MenuAutopilot::printMenu() { - if (this->firstPrint) - this->init(); - +void MenuAutopilot::printPage() const { char buf1[17]; char buf2[17]; char unit[3]; @@ -72,7 +69,7 @@ void MenuAutopilot::update() { } void MenuAutopilot::init() { - this->firstPrint = false; + this->setCountPages(4); this->driveManager->changeModus(Modi::Autopilot); this->autopilot = (Autopilot*) this->driveManager->getDriveModiPtr(); this->routeInfo = this->autopilot->getRouteInfo(); diff --git a/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.h b/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.h index af88ecb..7781e06 100644 --- a/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.h +++ b/src/SpecialMenus/driveModi/Autopilot/menuAutopilot.h @@ -36,7 +36,7 @@ class MenuAutopilot : public MenuDriveMode { * Changes the DriveModi to Autopilot if it is the first time called * and save the Autopilot object. */ - void printMenu(); + void printPage() const override; /** * @brief can be called to update shown data @@ -44,7 +44,7 @@ class MenuAutopilot : public MenuDriveMode { void update() override; private: - void init(); + void init() override; Autopilot* autopilot; RouteInfo routeInfo; diff --git a/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.cpp b/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.cpp index 74d3239..a93ab2b 100644 --- a/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.cpp +++ b/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.cpp @@ -10,16 +10,32 @@ */ #include "menuCaptureRoute.h" -void MenuCaptureRoute::printMenu() { - if (this->firstPrint) - this->init(); +void MenuCaptureRoute::printPage() const { + RouteInfo routeInfo = this->captureRoute->getRouteInfo(); + uint8_t currentPage = this->getCurrentPage(); + + String lineOne = ""; + String lineTwo = ""; - this->routeInfo = this->captureRoute->getRouteInfo(); + switch (currentPage) + { + case 0: + lineOne = "Points: "; + lineOne.concat(routeInfo.totalPoints); + lineTwo = "You can drive."; + break; - String lineOne = "Points: "; - String lineTwo = "You can drive."; - - lineOne.concat(this->routeInfo.totalPoints); + case 1: + lineOne = "Average distance"; + lineTwo = "xxx meters"; + break; + + default: + lineOne = "Unkown page"; + lineTwo = "Number: "; + lineTwo.concat(currentPage); + break; + } this->print(lineOne, lineTwo); } @@ -31,7 +47,7 @@ void MenuCaptureRoute::update() { } void MenuCaptureRoute::init() { - this->firstPrint = false; + this->setCountPages(4); this->driveManager->changeModus(Modi::CaptureRoute); this->captureRoute = (CaptureRoute*) this->driveManager->getDriveModiPtr(); diff --git a/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.h b/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.h index cf6b2f5..c29dfe0 100644 --- a/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.h +++ b/src/SpecialMenus/driveModi/CaptureRoute/menuCaptureRoute.h @@ -35,7 +35,7 @@ class MenuCaptureRoute : public MenuDriveMode { * Changes the DriveModi to CaptureRoute if it is the first time called * and save the CaptureRoute object. */ - void printMenu(); + void printPage() const override; /** * @brief can be called to update shown data @@ -43,10 +43,9 @@ class MenuCaptureRoute : public MenuDriveMode { void update() override; private: - void init(); + void init() override; CaptureRoute* captureRoute; - RouteInfo routeInfo; }; #endif // MENU_MANUAL_DRIVE_H diff --git a/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.cpp b/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.cpp index 32cf837..1558ffb 100644 --- a/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.cpp +++ b/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.cpp @@ -10,14 +10,34 @@ */ #include "menuManualDrive.h" -void MenuManualControl::printMenu() { - if (this->firstPrint) - this->init(); +void MenuManualControl::printPage() const { + String lineOne = ""; + String lineTwo = ""; - this->print("Now you can", "drive. :)"); + uint8_t currentPage = this->getCurrentPage(); + + switch (currentPage) { + case 0: + lineOne = "-Ready to drive-"; + break; + + case 0: + lineOne = "Speed:"; + lineTwo = "Warp 3"; + break; + + default: + lineOne = "Unkown page"; + lineTwo = "Number: "; + lineTwo.concat(currentPage); + break; + } + + this->print(lineOne, lineTwo); } void MenuManualControl::init() { this->firstPrint = false; - this->driveManager->changeModus(Modi::ManualControl); + this->driveManager->changeModus(Modi::ManualControl); + this->setCountPages(4); } diff --git a/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.h b/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.h index 6ab8ece..bdfbd8e 100644 --- a/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.h +++ b/src/SpecialMenus/driveModi/ManualDrive/menuManualDrive.h @@ -35,10 +35,10 @@ class MenuManualControl : public MenuDriveMode { * * Changes the DriveModi to Autopilot if it is the first time called. */ - void printMenu(); + void printPage() const override; - private: - void init(); + protected: + void init() override; }; #endif // MENU_MANUAL_DRIVE_H diff --git a/src/SpecialMenus/driveModi/menuDriveMode.cpp b/src/SpecialMenus/driveModi/menuDriveMode.cpp index 4fe9cc7..bc9a6c2 100644 --- a/src/SpecialMenus/driveModi/menuDriveMode.cpp +++ b/src/SpecialMenus/driveModi/menuDriveMode.cpp @@ -18,8 +18,10 @@ MenuDriveMode::MenuDriveMode(DriveManager* driveManager) { void MenuDriveMode::left() { this->firstPrint = true; this->driveManager->changeModus(Modi::Off); - if (parentMenu) + if (parentMenu) { this->parentMenu->printMenu(); + this->leaved = true; + } } void MenuDriveMode::no() { diff --git a/src/SpecialMenus/driveModi/menuDriveMode.h b/src/SpecialMenus/driveModi/menuDriveMode.h index 50e9b26..10c78c9 100644 --- a/src/SpecialMenus/driveModi/menuDriveMode.h +++ b/src/SpecialMenus/driveModi/menuDriveMode.h @@ -11,14 +11,14 @@ #ifndef MENU_DRIVE_MODI_H #define MENU_DRIVE_MODI_H -#include "menuControl.h" +#include "menuInformationSites.h" #include "driveModi/driveManager.h" /** * @brief A base class for Menus about DriveModi * */ -class MenuDriveMode : public MenuControl { +class MenuDriveMode : public MenuInformationSites { public: /** * @brief Construct a new Menu Drive Mode object @@ -27,10 +27,6 @@ class MenuDriveMode : public MenuControl { */ MenuDriveMode(DriveManager* driveManager); - void down() override {} - void up() override {} - void right() override {} - /** * @brief Goes back to the parentMenu. */ @@ -40,10 +36,6 @@ class MenuDriveMode : public MenuControl { * @brief Calls left. */ void no() override; - - void yes() override {} - - virtual void printMenu() = 0; protected: DriveManager* driveManager;