diff --git a/tools/cabana/canmessages.cc b/tools/cabana/canmessages.cc index ad3ee80e3d..6e19eb440f 100644 --- a/tools/cabana/canmessages.cc +++ b/tools/cabana/canmessages.cc @@ -91,6 +91,11 @@ void CANMessages::seekTo(double ts) { emit updated(); } +void CANMessages::pause(bool pause) { + replay->pause(pause); + emit (pause ? paused() : resume()); +} + void CANMessages::settingChanged() { replay->setSegmentCacheLimit(settings.cached_segment_limit); } diff --git a/tools/cabana/canmessages.h b/tools/cabana/canmessages.h index 4dac4fe9df..ea43933565 100644 --- a/tools/cabana/canmessages.h +++ b/tools/cabana/canmessages.h @@ -38,10 +38,12 @@ public: inline const std::vector *events() const { return replay->events(); } inline void setSpeed(float speed) { replay->setSpeed(speed); } inline bool isPaused() const { return replay->isPaused(); } - inline void pause(bool pause) { replay->pause(pause); } + void pause(bool pause); inline const std::vector> getTimeline() { return replay->getTimeline(); } signals: + void paused(); + void resume(); void seekedTo(double sec); void streamStarted(); void eventsMerged(); diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index 7e40ba2adb..ed4354ce65 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -63,22 +63,19 @@ VideoWidget::VideoWidget(QWidget *parent) : QFrame(parent) { } main_layout->addLayout(control_layout); - QObject::connect(can, &CANMessages::updated, this, &VideoWidget::updateState); QObject::connect(slider, &QSlider::sliderReleased, [this]() { can->seekTo(slider->value() / 1000.0); }); QObject::connect(slider, &QSlider::valueChanged, [=](int value) { time_label->setText(formatTime(value / 1000)); }); - QObject::connect(cam_widget, &CameraWidget::clicked, [this]() { pause(!can->isPaused()); }); - QObject::connect(play_btn, &QPushButton::clicked, [=]() { pause(!can->isPaused()); }); + QObject::connect(cam_widget, &CameraWidget::clicked, []() { can->pause(!can->isPaused()); }); + QObject::connect(play_btn, &QPushButton::clicked, []() { can->pause(!can->isPaused()); }); + QObject::connect(can, &CANMessages::updated, this, &VideoWidget::updateState); + QObject::connect(can, &CANMessages::paused, [this]() { play_btn->setText("▶"); }); + QObject::connect(can, &CANMessages::resume, [this]() { play_btn->setText("⏸"); }); QObject::connect(can, &CANMessages::streamStarted, [this]() { end_time_label->setText(formatTime(can->totalSeconds())); slider->setRange(0, can->totalSeconds() * 1000); }); } -void VideoWidget::pause(bool pause) { - play_btn->setText(!pause ? "⏸" : "▶"); - can->pause(pause); -} - void VideoWidget::rangeChanged(double min, double max, bool is_zoomed) { if (!is_zoomed) { min = 0; diff --git a/tools/cabana/videowidget.h b/tools/cabana/videowidget.h index 86cdc6f114..ec8bc4bec4 100644 --- a/tools/cabana/videowidget.h +++ b/tools/cabana/videowidget.h @@ -44,7 +44,6 @@ public: protected: void updateState(); - void pause(bool pause); CameraWidget *cam_widget; QLabel *end_time_label;