diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-03-22 19:47:40 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-03-24 10:33:47 +0200 |
commit | 15273b38dff309af52eb0b9454ade5f5cbb18ac0 (patch) | |
tree | 14a6eacee84cbb5b367dbe36fabaa369f7d71fae /src/qcam/main_window.cpp | |
parent | 77ea51820acccfcd3aebe6aa27ad26af21e82a7a (diff) |
qcam: main_window: Replace start and stop actions with a toggle action
The main window toolbar contains a start button and a stop button. This
allows starting an already started camera (which is currently not
handled and results in an error) or stopping an already stopped camera.
Replace the two actions with a single start/stop toggle action,
preventing UI misuse and reducing confusion.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/qcam/main_window.cpp')
-rw-r--r-- | src/qcam/main_window.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp index 805690d5..74b8748c 100644 --- a/src/qcam/main_window.cpp +++ b/src/qcam/main_window.cpp @@ -15,7 +15,6 @@ #include <QComboBox> #include <QCoreApplication> #include <QFileDialog> -#include <QIcon> #include <QImage> #include <QImageWriter> #include <QInputDialog> @@ -63,11 +62,10 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options) adjustSize(); ret = openCamera(); - if (!ret) - ret = startCapture(); - if (ret < 0) quit(); + + startStopAction_->setChecked(true); } MainWindow::~MainWindow() @@ -113,11 +111,13 @@ int MainWindow::createToolbars() toolbar_->addSeparator(); - action = toolbar_->addAction(QIcon(":play-circle.svg"), "start"); - connect(action, &QAction::triggered, this, &MainWindow::startCapture); + iconPlay_ = QIcon(":play-circle.svg"); + iconStop_ = QIcon(":stop-circle.svg"); - action = toolbar_->addAction(QIcon(":stop-circle.svg"), "stop"); - connect(action, &QAction::triggered, this, &MainWindow::stopCapture); + action = toolbar_->addAction(iconPlay_, "Start Capture"); + action->setCheckable(true); + connect(action, &QAction::toggled, this, &MainWindow::toggleCapture); + startStopAction_ = action; action = toolbar_->addAction(QIcon(":save.svg"), "saveAs"); connect(action, &QAction::triggered, this, &MainWindow::saveImageAs); @@ -159,12 +159,12 @@ void MainWindow::switchCamera(int index) std::cout << "Switching to camera " << cam->name() << std::endl; - stopCapture(); + startStopAction_->setChecked(false); camera_->release(); camera_ = cam; - startCapture(); + startStopAction_->setChecked(true); } std::string MainWindow::chooseCamera() @@ -217,6 +217,19 @@ int MainWindow::openCamera() return 0; } +void MainWindow::toggleCapture(bool start) +{ + if (start) { + startCapture(); + startStopAction_->setIcon(iconStop_); + startStopAction_->setText("Stop Capture"); + } else { + stopCapture(); + startStopAction_->setIcon(iconPlay_); + startStopAction_->setText("Start Capture"); + } +} + int MainWindow::startCapture() { int ret; @@ -322,6 +335,7 @@ int MainWindow::startCapture() } isCapturing_ = true; + return 0; error_disconnect: |