mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-09-15 02:13:43 +08:00
dcd22dda7a
* draft
* draft
* before qpushbutton
* icon, clean up button, clicked goes to toggles
* fix icon
* add imgs
* img
* make square
* works with layouts!
* fix gradient
* this looks good
* clean up
* clean up
* remove padding around couch
* use scene's experimental_model, new onroad design
* rename widget
* def want 3
* update translations
* add img
* add 25px of padding!
* make 300px (no change)
* clean up old images
* 5 px smaller
* add white img
* fix from merge
* no style sheets
* see how this looks on device
* aliased vertical line (clean up)
* clean up
* imgs
* couch
* delete
* bye bye
* expand toggle support
* clean up
* fix dynamic icon
* make exp icon dynamic
* order
* move to offroad
old-commit-hash: 58b84fb401
114 lines
3.2 KiB
C++
114 lines
3.2 KiB
C++
#pragma once
|
|
|
|
#include <QStackedLayout>
|
|
#include <QWidget>
|
|
|
|
#include "common/util.h"
|
|
#include "selfdrive/ui/qt/widgets/cameraview.h"
|
|
#include "selfdrive/ui/ui.h"
|
|
|
|
|
|
// ***** onroad widgets *****
|
|
class OnroadAlerts : public QWidget {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {};
|
|
void updateAlert(const Alert &a, const QColor &color);
|
|
|
|
protected:
|
|
void paintEvent(QPaintEvent*) override;
|
|
|
|
private:
|
|
QColor bg;
|
|
Alert alert = {};
|
|
};
|
|
|
|
// container window for the NVG UI
|
|
class AnnotatedCameraWidget : public CameraWidget {
|
|
Q_OBJECT
|
|
Q_PROPERTY(float speed MEMBER speed);
|
|
Q_PROPERTY(QString speedUnit MEMBER speedUnit);
|
|
Q_PROPERTY(float setSpeed MEMBER setSpeed);
|
|
Q_PROPERTY(float speedLimit MEMBER speedLimit);
|
|
Q_PROPERTY(bool is_cruise_set MEMBER is_cruise_set);
|
|
Q_PROPERTY(bool has_eu_speed_limit MEMBER has_eu_speed_limit);
|
|
Q_PROPERTY(bool has_us_speed_limit MEMBER has_us_speed_limit);
|
|
Q_PROPERTY(bool is_metric MEMBER is_metric);
|
|
|
|
Q_PROPERTY(bool engageable MEMBER engageable);
|
|
Q_PROPERTY(bool dmActive MEMBER dmActive);
|
|
Q_PROPERTY(bool hideDM MEMBER hideDM);
|
|
Q_PROPERTY(bool rightHandDM MEMBER rightHandDM);
|
|
Q_PROPERTY(int status MEMBER status);
|
|
|
|
public:
|
|
explicit AnnotatedCameraWidget(VisionStreamType type, QWidget* parent = 0);
|
|
void updateState(const UIState &s);
|
|
|
|
private:
|
|
void drawIcon(QPainter &p, int x, int y, QPixmap &img, QBrush bg, float opacity);
|
|
void drawText(QPainter &p, int x, int y, const QString &text, int alpha = 255);
|
|
|
|
QPixmap engage_img;
|
|
QPixmap experimental_img;
|
|
QPixmap dm_img;
|
|
const int radius = 192;
|
|
const int img_size = (radius / 2) * 1.5;
|
|
float speed;
|
|
QString speedUnit;
|
|
float setSpeed;
|
|
float speedLimit;
|
|
bool is_cruise_set = false;
|
|
bool is_metric = false;
|
|
bool engageable = false;
|
|
bool dmActive = false;
|
|
bool hideDM = false;
|
|
bool rightHandDM = false;
|
|
bool has_us_speed_limit = false;
|
|
bool has_eu_speed_limit = false;
|
|
bool v_ego_cluster_seen = false;
|
|
int status = STATUS_DISENGAGED;
|
|
std::unique_ptr<PubMaster> pm;
|
|
|
|
int skip_frame_count = 0;
|
|
bool wide_cam_requested = false;
|
|
|
|
protected:
|
|
void paintGL() override;
|
|
void initializeGL() override;
|
|
void showEvent(QShowEvent *event) override;
|
|
void updateFrameMat() override;
|
|
void drawLaneLines(QPainter &painter, const UIState *s);
|
|
void drawLead(QPainter &painter, const cereal::ModelDataV2::LeadDataV3::Reader &lead_data, const QPointF &vd);
|
|
void drawHud(QPainter &p);
|
|
inline QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); }
|
|
inline QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); }
|
|
inline QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); }
|
|
|
|
double prev_draw_t = 0;
|
|
FirstOrderFilter fps_filter;
|
|
};
|
|
|
|
// container for all onroad widgets
|
|
class OnroadWindow : public QWidget {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
OnroadWindow(QWidget* parent = 0);
|
|
bool isMapVisible() const { return map && map->isVisible(); }
|
|
|
|
private:
|
|
void paintEvent(QPaintEvent *event);
|
|
void mousePressEvent(QMouseEvent* e) override;
|
|
OnroadAlerts *alerts;
|
|
AnnotatedCameraWidget *nvg;
|
|
QColor bg = bg_colors[STATUS_DISENGAGED];
|
|
QWidget *map = nullptr;
|
|
QHBoxLayout* split;
|
|
|
|
private slots:
|
|
void offroadTransition(bool offroad);
|
|
void updateState(const UIState &s);
|
|
};
|