#include "WarehouseGUI.h" #include "M5Stack.h" using namespace gui; WarehouseGUI::WarehouseGUI() { this->screens = std::vector(); } WarehouseGUI::~WarehouseGUI() = default; int WarehouseGUI::addScreens(gui::AGUIScreen *screen) { this->screens.push_back(screen); return 0; } int WarehouseGUI::removeScreens(gui::AGUIScreen *screen) { for (int i = 0; i < this->screens.size(); ++i) { if (this->screens[i] == screen) { this->screens.erase(this->screens.begin() + i); return 0; } } return -1; } int WarehouseGUI::removeScreens(int index) { if (index < 0 || index >= this->screens.size()) { return -1; } this->screens.erase(this->screens.begin() + index); return 0; } int WarehouseGUI::removeScreens(const char *name) { for (int i = 0; i < this->screens.size(); ++i) { if (this->screens[i]->getName() == name) { this->screens.erase(this->screens.begin() + i); return 0; } } return -1; } int WarehouseGUI::update() { return this->current_screen->update(); } int WarehouseGUI::setup() { if (this->current_screen == nullptr) { return -1; } return this->current_screen->setup(); } int WarehouseGUI::changeCurrentScreen(const char *name) { for (auto *screen : this->screens) { if (screen->getName() == name) { this->current_screen = screen; this->current_screen->setup(); return 0; } } return -1; } int WarehouseGUI::changeCurrentScreen(int index) { if (index < 0 || index >= this->screens.size()) { return -1; } this->current_screen = this->screens[index]; this->current_screen->setup(); return 0; } std::vector gui::WarehouseGUI::getAllScreens() { return this->screens; } AGUIScreen *gui::WarehouseGUI::getCurrentScreen() { return this->current_screen; }