nopenpilot/selfdrive/ui/qt/onroad.h

78 lines
1.4 KiB
C++

#pragma once
#include <QOpenGLFunctions>
#include <QOpenGLWidget>
#include <QStackedLayout>
#include <QWidget>
#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);
};