#pragma once #include #include #include #include #include "cereal/gen/cpp/log.capnp.h" #include "selfdrive/ui/qt/qt_window.h" #include "selfdrive/ui/ui.h" typedef cereal::CarControl::HUDControl::AudibleAlert AudibleAlert; // ***** onroad widgets ***** class OnroadAlerts : public QWidget { Q_OBJECT public: OnroadAlerts(QWidget *parent = 0) {}; protected: void paintEvent(QPaintEvent*) override; private: QColor bg; Alert alert; void updateAlert(Alert a); public slots: void updateState(const UIState &s); void offroadTransition(bool offroad); }; // container window for the NVG UI class NvgWindow : public QOpenGLWidget, protected QOpenGLFunctions { Q_OBJECT public: using QOpenGLWidget::QOpenGLWidget; explicit NvgWindow(QWidget* parent = 0); ~NvgWindow(); protected: void paintGL() override; void initializeGL() override; void resizeGL(int w, int h) override; private: double prev_draw_t = 0; public slots: void update(const UIState &s); }; // container for all onroad widgets class OnroadWindow : public QWidget { Q_OBJECT public: OnroadWindow(QWidget* parent = 0); QWidget *map = nullptr; private: OnroadAlerts *alerts; NvgWindow *nvg; QStackedLayout *main_layout; QHBoxLayout* split; signals: void update(const UIState &s); void offroadTransitionSignal(bool offroad); private slots: void offroadTransition(bool offroad); };