[libcamera-devel] [PATCH] qcam: Don't ask for a camera when only one exists
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Oct 25 12:35:43 CEST 2019
If there is only one camera exposed by libcamera, there is little value
in asking the user to choose it.
Automatically select it, and remove the need to ask the user to select
'ok' from a Dialog box.
Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
src/qcam/main_window.cpp | 33 +++++++++++++++++++++++----------
src/qcam/main_window.h | 1 +
2 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index ef4ad4a22dca..19a8801eafac 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -66,27 +66,40 @@ void MainWindow::updateTitle()
setWindowTitle(title_ + " : " + QString::number(fps, 'f', 2) + " fps");
}
-int MainWindow::openCamera(CameraManager *cm)
+std::string MainWindow::chooseCamera(CameraManager *cm)
{
- std::string cameraName;
+ QString name;
+ bool result;
- if (!options_.isSet(OptCamera)) {
+ if (cm->cameras().size() == 1)
+ return cm->cameras()[0]->name();
+
+ for (const std::shared_ptr<Camera> &cam : cm->cameras()) {
QStringList cameras;
- bool result;
- for (const std::shared_ptr<Camera> &cam : cm->cameras())
- cameras.append(QString::fromStdString(cam->name()));
+ cameras.append(QString::fromStdString(cam->name()));
QString name = QInputDialog::getItem(this, "Select Camera",
"Camera:", cameras, 0,
false, &result);
if (!result)
- return -EINVAL;
+ return "";
+ }
- cameraName = name.toStdString();
- } else {
+ return name.toStdString();
+}
+
+int MainWindow::openCamera(CameraManager *cm)
+{
+ std::string cameraName;
+
+ if (options_.isSet(OptCamera))
cameraName = static_cast<std::string>(options_[OptCamera]);
- }
+ else
+ cameraName = chooseCamera(cm);
+
+ if (cameraName == "")
+ return -EINVAL;
camera_ = cm->get(cameraName);
if (!camera_) {
diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
index 6873155aaa03..30dd8743104d 100644
--- a/src/qcam/main_window.h
+++ b/src/qcam/main_window.h
@@ -43,6 +43,7 @@ private Q_SLOTS:
void updateTitle();
private:
+ std::string chooseCamera(CameraManager *cm);
int openCamera(CameraManager *cm);
int startCapture();
--
2.20.1
More information about the libcamera-devel
mailing list