From e1df1cf15c5c7987f85c4a6b4450ce5ec3fbbf8d Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 18 Sep 2023 06:20:21 +0800 Subject: [PATCH] cabana: add button to skip to the end of stream (#29953) old-commit-hash: 6f9798745c73e82fa4ed396e697d44947b527e68 --- tools/cabana/videowidget.cc | 20 +++++++++++++++++--- tools/cabana/videowidget.h | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index 098f26841c..e7845bca47 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -35,13 +35,24 @@ VideoWidget::VideoWidget(QWidget *parent) : QFrame(parent) { } // btn controls + QButtonGroup *group = new QButtonGroup(this); + group->setExclusive(true); + QHBoxLayout *control_layout = new QHBoxLayout(); play_btn = new QPushButton(); play_btn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); control_layout->addWidget(play_btn); + if (can->liveStreaming()) { + control_layout->addWidget(skip_to_end_btn = new QPushButton(utils::icon("skip-end-fill"), {})); + skip_to_end_btn->setToolTip(tr("Skip to the end")); + QObject::connect(skip_to_end_btn, &QPushButton::clicked, [group]() { + // set speed to 1.0 + group->buttons()[2]->click(); + can->pause(false); + can->seekTo(can->totalSeconds() + 1); + }); + } - QButtonGroup *group = new QButtonGroup(this); - group->setExclusive(true); for (float speed : {0.1, 0.5, 1., 2.}) { QPushButton *btn = new QPushButton(QString("%1x").arg(speed), this); btn->setCheckable(true); @@ -121,7 +132,10 @@ void VideoWidget::setMaximumTime(double sec) { } void VideoWidget::updateTimeRange(double min, double max, bool is_zoomed) { - if (can->liveStreaming()) return; + if (can->liveStreaming()) { + skip_to_end_btn->setEnabled(!is_zoomed); + return; + } if (!is_zoomed) { min = 0; diff --git a/tools/cabana/videowidget.h b/tools/cabana/videowidget.h index c17dd67e2a..bece039a21 100644 --- a/tools/cabana/videowidget.h +++ b/tools/cabana/videowidget.h @@ -81,6 +81,7 @@ protected: QLabel *end_time_label; QLabel *time_label; QPushButton *play_btn; + QPushButton *skip_to_end_btn = nullptr; InfoLabel *alert_label; Slider *slider; };