diff --git a/selfdrive/ui/qt/home.cc b/selfdrive/ui/qt/home.cc index 648f3685c7..9f179e0a38 100644 --- a/selfdrive/ui/qt/home.cc +++ b/selfdrive/ui/qt/home.cc @@ -33,11 +33,6 @@ HomeWindow::HomeWindow(QWidget* parent) : QWidget(parent) { body = new BodyWindow(this); slayout->addWidget(body); - driver_view = new DriverViewWindow(this); - connect(driver_view, &DriverViewWindow::done, [=] { - showDriverView(false); - }); - slayout->addWidget(driver_view); setAttribute(Qt::WA_NoSystemBackground); QObject::connect(uiState(), &UIState::uiUpdate, this, &HomeWindow::updateState); QObject::connect(uiState(), &UIState::offroadTransition, this, &HomeWindow::offroadTransition); @@ -68,16 +63,6 @@ void HomeWindow::offroadTransition(bool offroad) { } } -void HomeWindow::showDriverView(bool show) { - if (show) { - emit closeSettings(); - slayout->setCurrentWidget(driver_view); - } else { - slayout->setCurrentWidget(home); - } - sidebar->setVisible(show == false); -} - void HomeWindow::mousePressEvent(QMouseEvent* e) { // Handle sidebar collapsing if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) { diff --git a/selfdrive/ui/qt/home.h b/selfdrive/ui/qt/home.h index a19b70ac3f..55bc706c0d 100644 --- a/selfdrive/ui/qt/home.h +++ b/selfdrive/ui/qt/home.h @@ -8,7 +8,6 @@ #include #include "common/params.h" -#include "selfdrive/ui/qt/offroad/driverview.h" #include "selfdrive/ui/qt/body.h" #include "selfdrive/ui/qt/onroad/onroad_home.h" #include "selfdrive/ui/qt/sidebar.h" @@ -53,7 +52,6 @@ signals: public slots: void offroadTransition(bool offroad); - void showDriverView(bool show); void showSidebar(bool show); protected: @@ -65,7 +63,6 @@ private: OffroadHome *home; OnroadWindow *onroad; BodyWindow *body; - DriverViewWindow *driver_view; QStackedLayout *slayout; private slots: diff --git a/selfdrive/ui/qt/offroad/driverview.cc b/selfdrive/ui/qt/offroad/driverview.cc index 9010227f18..a8d3151627 100644 --- a/selfdrive/ui/qt/offroad/driverview.cc +++ b/selfdrive/ui/qt/offroad/driverview.cc @@ -6,24 +6,6 @@ #include "selfdrive/ui/qt/util.h" DriverViewWindow::DriverViewWindow(QWidget* parent) : CameraWidget("camerad", VISION_STREAM_DRIVER, parent) { - QObject::connect(this, &CameraWidget::clicked, this, &DriverViewWindow::done); - QObject::connect(device(), &Device::interactiveTimeout, this, [this]() { - if (isVisible()) { - emit done(); - } - }); -} - -void DriverViewWindow::showEvent(QShowEvent* event) { - params.putBool("IsDriverViewEnabled", true); - device()->resetInteractiveTimeout(60); - CameraWidget::showEvent(event); -} - -void DriverViewWindow::hideEvent(QHideEvent* event) { - params.putBool("IsDriverViewEnabled", false); - stopVipcThread(); - CameraWidget::hideEvent(event); } void DriverViewWindow::paintGL() { @@ -80,3 +62,20 @@ mat4 DriverViewWindow::calcFrameMatrix() { 0.0, 0.0, 0.0, 1.0, }}; } + +DriverViewDialog::DriverViewDialog(QWidget *parent) : DialogBase(parent) { + Params().putBool("IsDriverViewEnabled", true); + device()->resetInteractiveTimeout(60); + + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->setContentsMargins(0, 0, 0, 0); + auto camera = new DriverViewWindow(this); + main_layout->addWidget(camera); + QObject::connect(camera, &DriverViewWindow::clicked, this, &DialogBase::accept); + QObject::connect(device(), &Device::interactiveTimeout, this, &DialogBase::accept); +} + +void DriverViewDialog::done(int r) { + Params().putBool("IsDriverViewEnabled", false); + QDialog::done(r); +} diff --git a/selfdrive/ui/qt/offroad/driverview.h b/selfdrive/ui/qt/offroad/driverview.h index f6eb752fe6..10a97c1da8 100644 --- a/selfdrive/ui/qt/offroad/driverview.h +++ b/selfdrive/ui/qt/offroad/driverview.h @@ -2,22 +2,20 @@ #include "selfdrive/ui/qt/widgets/cameraview.h" #include "selfdrive/ui/qt/onroad/driver_monitoring.h" +#include "selfdrive/ui/qt/widgets/input.h" class DriverViewWindow : public CameraWidget { Q_OBJECT - public: explicit DriverViewWindow(QWidget *parent); - -signals: - void done(); - -protected: - mat4 calcFrameMatrix() override; - void showEvent(QShowEvent *event) override; - void hideEvent(QHideEvent *event) override; void paintGL() override; - - Params params; + mat4 calcFrameMatrix() override; DriverMonitorRenderer driver_monitor; }; + +class DriverViewDialog : public DialogBase { + Q_OBJECT +public: + DriverViewDialog(QWidget *parent); + void done(int r) override; +}; diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index c1f26c950e..29ff9807a1 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -8,6 +8,7 @@ #include "common/watchdog.h" #include "common/util.h" +#include "selfdrive/ui/qt/offroad/driverview.h" #include "selfdrive/ui/qt/network/networking.h" #include "selfdrive/ui/qt/offroad/settings.h" #include "selfdrive/ui/qt/qt_window.h" @@ -203,7 +204,12 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { auto dcamBtn = new ButtonControl(tr("Driver Camera"), tr("PREVIEW"), tr("Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)")); - connect(dcamBtn, &ButtonControl::clicked, [=]() { emit showDriverView(); }); + connect(dcamBtn, &ButtonControl::clicked, [this, dcamBtn]() { + dcamBtn->setEnabled(false); + DriverViewDialog driver_view(this); + driver_view.exec(); + dcamBtn->setEnabled(true); + }); addItem(dcamBtn); auto resetCalibBtn = new ButtonControl(tr("Reset Calibration"), tr("RESET"), ""); @@ -375,7 +381,6 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { // setup panels DevicePanel *device = new DevicePanel(this); QObject::connect(device, &DevicePanel::reviewTrainingGuide, this, &SettingsWindow::reviewTrainingGuide); - QObject::connect(device, &DevicePanel::showDriverView, this, &SettingsWindow::showDriverView); TogglesPanel *toggles = new TogglesPanel(this); QObject::connect(this, &SettingsWindow::expandToggleDescription, toggles, &TogglesPanel::expandToggleDescription); diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index 68ba0d1898..de0528ee0a 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -28,7 +28,6 @@ protected: signals: void closeSettings(); void reviewTrainingGuide(); - void showDriverView(); void expandToggleDescription(const QString ¶m); private: @@ -45,7 +44,6 @@ public: signals: void reviewTrainingGuide(); - void showDriverView(); private slots: void poweroff(); diff --git a/selfdrive/ui/qt/window.cc b/selfdrive/ui/qt/window.cc index 6b579fcc5d..e1ec916c6f 100644 --- a/selfdrive/ui/qt/window.cc +++ b/selfdrive/ui/qt/window.cc @@ -20,9 +20,6 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { onboardingWindow->showTrainingGuide(); main_layout->setCurrentWidget(onboardingWindow); }); - QObject::connect(settingsWindow, &SettingsWindow::showDriverView, [=] { - homeWindow->showDriverView(true); - }); onboardingWindow = new OnboardingWindow(this); main_layout->addWidget(onboardingWindow);