From patchwork Fri Oct 25 10:35:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 2218 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 2716061378 for ; Fri, 25 Oct 2019 12:35:47 +0200 (CEST) Received: from Q.local (cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A0EDF33A; Fri, 25 Oct 2019 12:35:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1571999746; bh=tL58pRxk3XESZCbHWQSNWvI/NLkq9ncDrmErhl8lyqw=; h=From:To:Cc:Subject:Date:From; b=tNI1tAj656mynVUv4bdt2Fyh/a0Hr03IC1FH5f+2vkpqY0icdXREeHGOJSbZ3sX1i DLTaYcqOBa4KH+cVurk6id6NTS4/uU/s6VbUyuaVuUqt0yrrLOrRXbg3D7W/REDhwC gwjgKMS2rKLV3gH3lfab8ApVSXODFTLHTwlgxZBE= From: Kieran Bingham To: LibCamera Devel Date: Fri, 25 Oct 2019 11:35:43 +0100 Message-Id: <20191025103543.23058-1-kieran.bingham@ideasonboard.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] qcam: Don't ask for a camera when only one exists X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2019 10:35:47 -0000 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 Reviewed-by: Laurent Pinchart --- 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 &cam : cm->cameras()) { QStringList cameras; - bool result; - for (const std::shared_ptr &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(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();