openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.

97 lines
1.8 KiB

#pragma once
#include <QLabel>
#include <QOpenGLFunctions>
#include <QOpenGLWidget>
#include <QPushButton>
#include <QStackedLayout>
#include <QStackedWidget>
#include <QTimer>
#include <QWidget>
#include "qt_sound.hpp"
#include "ui/ui.hpp"
#include "widgets/offroad_alerts.hpp"
// container window for onroad NVG UI
class GLWindow : public QOpenGLWidget, protected QOpenGLFunctions {
Q_OBJECT
public:
using QOpenGLWidget::QOpenGLWidget;
explicit GLWindow(QWidget* parent = 0);
void wake();
~GLWindow();
inline static UIState ui_state = {0};
signals:
void offroadTransition(bool offroad);
void screen_shutoff();
protected:
void initializeGL() override;
void resizeGL(int w, int h) override;
void paintGL() override;
private:
QTimer* timer;
QTimer* backlight_timer;
QtSound sound;
bool onroad = true;
double prev_draw_t = 0;
// TODO: make a nice abstraction to handle embedded device stuff
float brightness_b = 0;
float brightness_m = 0;
float smooth_brightness = 0;
float last_brightness = 0;
public slots:
void timerUpdate();
void backlightUpdate();
};
// offroad home screen
class OffroadHome : public QWidget {
Q_OBJECT
public:
explicit OffroadHome(QWidget* parent = 0);
private:
QTimer* timer;
QLabel* date;
QStackedLayout* center_layout;
OffroadAlert* alerts_widget;
QPushButton* alert_notification;
public slots:
void closeAlerts();
void openAlerts();
void refresh();
};
class HomeWindow : public QWidget {
Q_OBJECT
public:
explicit HomeWindow(QWidget* parent = 0);
GLWindow* glWindow;
signals:
void openSettings();
void closeSettings();
void offroadTransition(bool offroad);
protected:
void mousePressEvent(QMouseEvent* e) override;
private:
OffroadHome* home;
QStackedLayout* layout;
};