From f5c0509aaaf1e2747ad25459c470fa09a9bc7edd Mon Sep 17 00:00:00 2001 From: Alexander Klein Date: Wed, 4 Jan 2023 02:32:37 +0100 Subject: [PATCH] added clearRoute --- src/SpecialMenus/Route/menuRoute.cpp | 41 +++++++++++++++++----------- src/SpecialMenus/Route/menuRoute.h | 28 +++++++++---------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/SpecialMenus/Route/menuRoute.cpp b/src/SpecialMenus/Route/menuRoute.cpp index 439d6c1..6cd6226 100644 --- a/src/SpecialMenus/Route/menuRoute.cpp +++ b/src/SpecialMenus/Route/menuRoute.cpp @@ -11,17 +11,14 @@ #include "menuRoute.h" -// MenuActionData::MenuActionData(MenuRoute* menuRoute, MenuActionDataChoose choose) { -// this->menuRoute = menuRoute; -// this->choose = choose; -// } +MenuActionRoute::MenuActionRoute(MenuRoute* menuRoute, DataFunction dataFunction) { + this->menuRoute = menuRoute; + this->dataFunction = dataFunction; +} -// void MenuActionData::action() { -// if (this->choose == MenuActionDataChoose::importRoute) -// this->menuRoute->importRoute(); -// else if (this->choose == MenuActionDataChoose::exportRoute) -// this->menuRoute->exportRoute(); -// } +void MenuActionRoute::action() { + (this->menuRoute->*this->dataFunction)(0); +} MenuRoute::MenuRoute(Route* route) { this->route = route; @@ -88,33 +85,37 @@ void MenuRoute::init() { MenuRoutePoints* pointsMenu = new MenuRoutePoints(this->route); Menu* importMenu = new Menu; Menu* exportMenu = new Menu; + Menu* clearMenu = new Menu; this->mainMenu->setLcd(this->lcd); pointsMenu->setLcd(this->lcd); importMenu->setLcd(this->lcd); exportMenu->setLcd(this->lcd); - - // MenuActionData* importWrapper = new MenuActionData(this, MenuActionData::MenuActionDataChoose::importRoute); - // MenuActionData* exportWrapper = new MenuActionData(this, MenuActionData::MenuActionDataChoose::exportRoute); + clearMenu->setLcd(this->lcd); MenuIntInput* importWrapper = new MenuIntInput(1, new MenuRouteWrapper(this, &MenuRoute::importRoute)); MenuIntInput* exportWrapper = new MenuIntInput(1, new MenuRouteWrapper(this, &MenuRoute::exportRoute)); + MenuActionRoute* clearWrapper = new MenuActionRoute(this, &MenuRoute::clearRoute); importWrapper->setLcd(this->lcd); importWrapper->setMinMax(0, 100); + importWrapper->setPrintParentMenu(false); importWrapper->setEntry(0, "Import Route"); exportWrapper->setLcd(this->lcd); exportWrapper->setMinMax(0, 100); + exportWrapper->setPrintParentMenu(false); exportWrapper->setEntry(0, "Export Route"); MenuAction* pointsAction = new MenuAction("Points", pointsMenu); MenuAction* importAction = new MenuAction("Import", importWrapper); MenuAction* exportAction = new MenuAction("Export", exportWrapper); + MenuAction* clearAction = new MenuAction("Clear", clearWrapper); this->mainMenu->addEntry(pointsAction); this->mainMenu->addEntry(importAction); this->mainMenu->addEntry(exportAction); + this->mainMenu->addEntry(clearAction); } void MenuRoute::importRoute(uint8_t routeNumber) { @@ -148,10 +149,10 @@ void MenuRoute::importRoute(uint8_t routeNumber) { http.begin(client, host); int httpResponseCode = http.GET(); - lineOne = "HTTP Response"; + lineOne = "Import complete"; lineTwo = "Code: "; - if (httpResponseCode > 0) + if (httpResponseCode == 202) deserializeJson(doc, http.getStream()); else lineOne = "HTTP Error"; @@ -223,7 +224,10 @@ void MenuRoute::exportRoute(uint8_t routeNumber) { http.addHeader("Content-Type", "application/json"); int httpResponseCode = http.POST(jsonData); - lineOne = "HTTP Response"; + if (httpResponseCode == 201) + lineOne = "Export complete"; + else + lineOne = "HTTP Error"; lineTwo = "Code: "; lineTwo.concat(httpResponseCode); this->print(lineOne, lineTwo); @@ -232,6 +236,11 @@ void MenuRoute::exportRoute(uint8_t routeNumber) { http.end(); } +void MenuRoute::clearRoute(uint8_t none) { + this->route->clear(); + this->print("Currente route", "deleted..."); +} + MenuRouteWrapper::MenuRouteWrapper(MenuRoute* menuRoute, DataFunction dataFunction) { this->menuRoute = menuRoute; this->dataFunction = dataFunction; diff --git a/src/SpecialMenus/Route/menuRoute.h b/src/SpecialMenus/Route/menuRoute.h index f5d2e6f..0828f43 100644 --- a/src/SpecialMenus/Route/menuRoute.h +++ b/src/SpecialMenus/Route/menuRoute.h @@ -25,22 +25,18 @@ #define JSON_DOCUMENT_SIZE_ROUTE 4096 -// class MenuRoute; -// -// class MenuActionData : public MenuActionWrapper { -// public: -// enum MenuActionDataChoose { -// importRoute, -// exportRoute -// }; +class MenuRoute; +typedef void (MenuRoute::*DataFunction)(uint8_t); -// MenuActionData(MenuRoute* menuRoute, MenuActionDataChoose choose); -// void action() override; +class MenuActionRoute : public MenuActionWrapper { + public: + MenuActionRoute(MenuRoute* menuRoute, DataFunction dataFunction); + void action() override; -// private: -// MenuRoute* menuRoute; -// MenuActionDataChoose choose; -// }; + private: + MenuRoute* menuRoute; + DataFunction dataFunction; +}; class MenuRoute : public MenuControl { public: @@ -57,6 +53,8 @@ class MenuRoute : public MenuControl { void importRoute(uint8_t routeNumber); void exportRoute(uint8_t routeNumber); + void clearRoute(uint8_t none); + private: void init(); @@ -67,7 +65,7 @@ class MenuRoute : public MenuControl { bool blockInput = false; }; -typedef void (MenuRoute::*DataFunction)(uint8_t); + class MenuRouteWrapper : public MenuIntInputWrapper { public: MenuRouteWrapper(MenuRoute* menuRoute, DataFunction dataFunction);