#pragma once #include #include #include #include #include #include #include "selfdrive/ui/qt/home.h" #include "selfdrive/ui/qt/offroad/onboarding.h" #include "selfdrive/ui/qt/offroad/settings.h" class StatusWindow : public QFrame { Q_OBJECT public: explicit StatusWindow(QWidget *parent = 0); struct StatusData { QString time, storage, ram, load, temp, fan, ip, wifi; QString vpn_status, vpn_ip, gps, telemetry; QString dashcam_status, dashcam_size; float temp_c = 0; }; protected: void mousePressEvent(QMouseEvent *e) override; signals: void closeStatus(); private slots: void kickRefresh(); void applyResults(); private: QFutureWatcher watcher; bool collecting = false; QLabel *storage_label; QLabel *ram_label; QLabel *load_label; QLabel *temp_label; QLabel *fan_label; QLabel *ip_label; QLabel *wifi_label; QLabel *vpn_label; QLabel *gps_label; QLabel *time_label; QLabel *telemetry_label; QLabel *dashcam_label; QLabel *panda_label; }; class MainWindow : public QWidget { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); private: bool eventFilter(QObject *obj, QEvent *event) override; void openSettings(int index = 0, const QString ¶m = ""); void openStatus(); void closeSettings(); QString dumpWidgetTree(QWidget *w, int depth = 0); QStackedLayout *main_layout; HomeWindow *homeWindow; SettingsWindow *settingsWindow; StatusWindow *statusWindow; OnboardingWindow *onboardingWindow; // CLEARPILOT: UI introspection RPC void *zmq_ctx = nullptr; void *zmq_sock = nullptr; QSocketNotifier *rpc_notifier = nullptr; // FrogPilot variables Params params; private slots: void handleRpcRequest(); };