summaryrefslogtreecommitdiff
path: root/src/qcam/main_window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qcam/main_window.cpp')
-rw-r--r--src/qcam/main_window.cpp22
1 files changed, 5 insertions, 17 deletions
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index addf0d96..3bddb1f1 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -19,7 +19,6 @@
#include <QFileDialog>
#include <QImage>
#include <QImageWriter>
-#include <QInputDialog>
#include <QMutexLocker>
#include <QStandardPaths>
#include <QStringList>
@@ -30,6 +29,7 @@
#include "../cam/image.h"
+#include "cam_select_dialog.h"
#include "dng_writer.h"
#ifndef QT_NO_OPENGL
#include "viewfinder_gl.h"
@@ -144,6 +144,8 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
cm_->cameraAdded.connect(this, &MainWindow::addCamera);
cm_->cameraRemoved.connect(this, &MainWindow::removeCamera);
+ cameraSelectorDialog_ = new CameraSelectorDialog(cm_, this);
+
/* Open the camera and start capture. */
ret = openCamera();
if (ret < 0) {
@@ -290,24 +292,10 @@ void MainWindow::switchCamera(int index)
std::string MainWindow::chooseCamera()
{
- QStringList cameras;
- bool result;
-
- /* If only one camera is available, use it automatically. */
- if (cm_->cameras().size() == 1)
- return cm_->cameras()[0]->id();
-
- /* Present a dialog box to pick a camera. */
- for (const std::shared_ptr<Camera> &cam : cm_->cameras())
- cameras.append(QString::fromStdString(cam->id()));
-
- QString id = QInputDialog::getItem(this, "Select Camera",
- "Camera:", cameras, 0,
- false, &result);
- if (!result)
+ if (cameraSelectorDialog_->exec() != QDialog::Accepted)
return std::string();
- return id.toStdString();
+ return cameraSelectorDialog_->getCameraId();
}
int MainWindow::openCamera()