added clearRoute

This commit is contained in:
2023-01-04 02:32:37 +01:00
parent 498221c9d3
commit f5c0509aaa
2 changed files with 38 additions and 31 deletions
+25 -16
View File
@@ -11,17 +11,14 @@
#include "menuRoute.h" #include "menuRoute.h"
// MenuActionData::MenuActionData(MenuRoute* menuRoute, MenuActionDataChoose choose) { MenuActionRoute::MenuActionRoute(MenuRoute* menuRoute, DataFunction dataFunction) {
// this->menuRoute = menuRoute; this->menuRoute = menuRoute;
// this->choose = choose; this->dataFunction = dataFunction;
// } }
// void MenuActionData::action() { void MenuActionRoute::action() {
// if (this->choose == MenuActionDataChoose::importRoute) (this->menuRoute->*this->dataFunction)(0);
// this->menuRoute->importRoute(); }
// else if (this->choose == MenuActionDataChoose::exportRoute)
// this->menuRoute->exportRoute();
// }
MenuRoute::MenuRoute(Route* route) { MenuRoute::MenuRoute(Route* route) {
this->route = route; this->route = route;
@@ -88,33 +85,37 @@ void MenuRoute::init() {
MenuRoutePoints* pointsMenu = new MenuRoutePoints(this->route); MenuRoutePoints* pointsMenu = new MenuRoutePoints(this->route);
Menu* importMenu = new Menu; Menu* importMenu = new Menu;
Menu* exportMenu = new Menu; Menu* exportMenu = new Menu;
Menu* clearMenu = new Menu;
this->mainMenu->setLcd(this->lcd); this->mainMenu->setLcd(this->lcd);
pointsMenu->setLcd(this->lcd); pointsMenu->setLcd(this->lcd);
importMenu->setLcd(this->lcd); importMenu->setLcd(this->lcd);
exportMenu->setLcd(this->lcd); exportMenu->setLcd(this->lcd);
clearMenu->setLcd(this->lcd);
// MenuActionData* importWrapper = new MenuActionData(this, MenuActionData::MenuActionDataChoose::importRoute);
// MenuActionData* exportWrapper = new MenuActionData(this, MenuActionData::MenuActionDataChoose::exportRoute);
MenuIntInput* importWrapper = new MenuIntInput(1, new MenuRouteWrapper(this, &MenuRoute::importRoute)); MenuIntInput* importWrapper = new MenuIntInput(1, new MenuRouteWrapper(this, &MenuRoute::importRoute));
MenuIntInput* exportWrapper = new MenuIntInput(1, new MenuRouteWrapper(this, &MenuRoute::exportRoute)); MenuIntInput* exportWrapper = new MenuIntInput(1, new MenuRouteWrapper(this, &MenuRoute::exportRoute));
MenuActionRoute* clearWrapper = new MenuActionRoute(this, &MenuRoute::clearRoute);
importWrapper->setLcd(this->lcd); importWrapper->setLcd(this->lcd);
importWrapper->setMinMax(0, 100); importWrapper->setMinMax(0, 100);
importWrapper->setPrintParentMenu(false);
importWrapper->setEntry(0, "Import Route"); importWrapper->setEntry(0, "Import Route");
exportWrapper->setLcd(this->lcd); exportWrapper->setLcd(this->lcd);
exportWrapper->setMinMax(0, 100); exportWrapper->setMinMax(0, 100);
exportWrapper->setPrintParentMenu(false);
exportWrapper->setEntry(0, "Export Route"); exportWrapper->setEntry(0, "Export Route");
MenuAction* pointsAction = new MenuAction("Points", pointsMenu); MenuAction* pointsAction = new MenuAction("Points", pointsMenu);
MenuAction* importAction = new MenuAction("Import", importWrapper); MenuAction* importAction = new MenuAction("Import", importWrapper);
MenuAction* exportAction = new MenuAction("Export", exportWrapper); MenuAction* exportAction = new MenuAction("Export", exportWrapper);
MenuAction* clearAction = new MenuAction("Clear", clearWrapper);
this->mainMenu->addEntry(pointsAction); this->mainMenu->addEntry(pointsAction);
this->mainMenu->addEntry(importAction); this->mainMenu->addEntry(importAction);
this->mainMenu->addEntry(exportAction); this->mainMenu->addEntry(exportAction);
this->mainMenu->addEntry(clearAction);
} }
void MenuRoute::importRoute(uint8_t routeNumber) { void MenuRoute::importRoute(uint8_t routeNumber) {
@@ -148,10 +149,10 @@ void MenuRoute::importRoute(uint8_t routeNumber) {
http.begin(client, host); http.begin(client, host);
int httpResponseCode = http.GET(); int httpResponseCode = http.GET();
lineOne = "HTTP Response"; lineOne = "Import complete";
lineTwo = "Code: "; lineTwo = "Code: ";
if (httpResponseCode > 0) if (httpResponseCode == 202)
deserializeJson(doc, http.getStream()); deserializeJson(doc, http.getStream());
else else
lineOne = "HTTP Error"; lineOne = "HTTP Error";
@@ -223,7 +224,10 @@ void MenuRoute::exportRoute(uint8_t routeNumber) {
http.addHeader("Content-Type", "application/json"); http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(jsonData); int httpResponseCode = http.POST(jsonData);
lineOne = "HTTP Response"; if (httpResponseCode == 201)
lineOne = "Export complete";
else
lineOne = "HTTP Error";
lineTwo = "Code: "; lineTwo = "Code: ";
lineTwo.concat(httpResponseCode); lineTwo.concat(httpResponseCode);
this->print(lineOne, lineTwo); this->print(lineOne, lineTwo);
@@ -232,6 +236,11 @@ void MenuRoute::exportRoute(uint8_t routeNumber) {
http.end(); http.end();
} }
void MenuRoute::clearRoute(uint8_t none) {
this->route->clear();
this->print("Currente route", "deleted...");
}
MenuRouteWrapper::MenuRouteWrapper(MenuRoute* menuRoute, DataFunction dataFunction) { MenuRouteWrapper::MenuRouteWrapper(MenuRoute* menuRoute, DataFunction dataFunction) {
this->menuRoute = menuRoute; this->menuRoute = menuRoute;
this->dataFunction = dataFunction; this->dataFunction = dataFunction;
+13 -15
View File
@@ -25,22 +25,18 @@
#define JSON_DOCUMENT_SIZE_ROUTE 4096 #define JSON_DOCUMENT_SIZE_ROUTE 4096
// class MenuRoute; class MenuRoute;
// typedef void (MenuRoute::*DataFunction)(uint8_t);
// class MenuActionData : public MenuActionWrapper {
// public:
// enum MenuActionDataChoose {
// importRoute,
// exportRoute
// };
// MenuActionData(MenuRoute* menuRoute, MenuActionDataChoose choose); class MenuActionRoute : public MenuActionWrapper {
// void action() override; public:
MenuActionRoute(MenuRoute* menuRoute, DataFunction dataFunction);
void action() override;
// private: private:
// MenuRoute* menuRoute; MenuRoute* menuRoute;
// MenuActionDataChoose choose; DataFunction dataFunction;
// }; };
class MenuRoute : public MenuControl { class MenuRoute : public MenuControl {
public: public:
@@ -57,6 +53,8 @@ class MenuRoute : public MenuControl {
void importRoute(uint8_t routeNumber); void importRoute(uint8_t routeNumber);
void exportRoute(uint8_t routeNumber); void exportRoute(uint8_t routeNumber);
void clearRoute(uint8_t none);
private: private:
void init(); void init();
@@ -67,7 +65,7 @@ class MenuRoute : public MenuControl {
bool blockInput = false; bool blockInput = false;
}; };
typedef void (MenuRoute::*DataFunction)(uint8_t);
class MenuRouteWrapper : public MenuIntInputWrapper { class MenuRouteWrapper : public MenuIntInputWrapper {
public: public:
MenuRouteWrapper(MenuRoute* menuRoute, DataFunction dataFunction); MenuRouteWrapper(MenuRoute* menuRoute, DataFunction dataFunction);