Files
sunnypilot/tools/cabana/videowidget.h
Dean Lee 972e91463c cabana: add support for load&save extra dbc info (#27203)
* support extra info

* support undo/redo

* fix undo/redo

* cleanup

* fix regexp

* refactor dbcmanager

* replace text in headerview

* fix binary::refresh

* cleanup

* use QRegularExpression

* add desc validation

* edit val description in table

* cleanup
old-commit-hash: ac0dbf74bc
2023-02-17 19:31:54 -08:00

63 lines
1.5 KiB
C++

#pragma once
#include <atomic>
#include <mutex>
#include <QHBoxLayout>
#include <QFuture>
#include <QLabel>
#include <QPushButton>
#include <QSlider>
#include "selfdrive/ui/qt/widgets/cameraview.h"
#include "selfdrive/ui/qt/widgets/controls.h"
#include "tools/cabana/dbcmanager.h"
#include "tools/cabana/streams/abstractstream.h"
using namespace dbcmanager;
class Slider : public QSlider {
Q_OBJECT
public:
Slider(QWidget *parent);
~Slider();
private:
void mousePressEvent(QMouseEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override;
void sliderChange(QAbstractSlider::SliderChange change) override;
void paintEvent(QPaintEvent *ev) override;
void streamStarted();
void loadThumbnails();
QString getThumbnailString(const capnp::Data::Reader &data);
int slider_x = -1;
std::vector<std::tuple<int, int, TimelineType>> timeline;
std::mutex thumbnail_lock;
std::atomic<bool> abort_load_thumbnail = false;
QMap<uint64_t, QString> thumbnails;
QFuture<void> thumnail_future;
QSize thumbnail_size = {};
};
class VideoWidget : public QWidget {
Q_OBJECT
public:
VideoWidget(QWidget *parnet = nullptr);
void rangeChanged(double min, double max, bool is_zommed);
protected:
void updateState();
void updatePlayBtnState();
void timeLabelClicked();
QWidget *createCameraWidget();
CameraWidget *cam_widget;
QLabel *end_time_label;
ElidedLabel *time_label;
QHBoxLayout *slider_layout;
QPushButton *play_btn;
Slider *slider;
};