#pragma once #include #include #include #include #include "tools/cabana/routes.h" #include "tools/cabana/ui/util.h" class RoutesDialog { public: void open(std::function on_done); void draw(); private: void setDeviceList(const std::vector &devices, bool success, int error_code); void setRouteList(const std::vector &list, bool success); void fetchRoutes(); void finish(bool accepted); struct RouteItem { std::string label; std::string name; }; struct State { bool devices_loaded = false; std::vector devices; int device_index = 0; int period_index = 0; std::vector routes; int route_index = -1; std::string empty_text = "No items"; int fetch_id = 0; }; bool open_ = false; PopupOwner popup_; State s_; std::function on_done_; std::shared_ptr alive_; };