[libcamera-devel] [RFC/PATCH 3/5] qcam: Add an option to allow specifying output path

Niklas Söderlund niklas.soderlund at ragnatech.se
Thu Apr 30 02:36:02 CEST 2020


Add a command line option to specify an output path for files captured.
This will become more useful when JPEG capture is turned into an quick
operation instead of using a QFileDialog and when RAW capture support is
added.

Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
---
 src/qcam/main.cpp        | 3 +++
 src/qcam/main_window.cpp | 8 ++++++--
 src/qcam/main_window.h   | 2 ++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/qcam/main.cpp b/src/qcam/main.cpp
index cd73fa764614e7e7..2999e4959d8ecff8 100644
--- a/src/qcam/main.cpp
+++ b/src/qcam/main.cpp
@@ -34,6 +34,9 @@ OptionsParser::Options parseOptions(int argc, char *argv[])
 			 "help");
 	parser.addOption(OptStream, &streamKeyValue,
 			 "Set configuration of a camera stream", "stream", true);
+	parser.addOption(OptSavePath, OptionString,
+			 "Path to qcam picture storage",
+			 "output-dir", ArgumentRequired, "path");
 
 	OptionsParser::Options options = parser.parse(argc, argv);
 	if (options.isSet(OptHelp))
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index e77bc01df8f3edfe..470f78162cabffe5 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -75,6 +75,11 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
 		return;
 	}
 
+	if (options_.isSet(OptSavePath))
+		defaultPath_ = QString::fromUtf8(options_[OptSavePath].toString().c_str());
+	else
+		defaultPath_ = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
+
 	startStopAction_->setChecked(true);
 }
 
@@ -507,9 +512,8 @@ void MainWindow::stopCapture()
 void MainWindow::saveImageAs()
 {
 	QImage image = viewfinder_->getCurrentImage();
-	QString defaultPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
 
-	QString filename = QFileDialog::getSaveFileName(this, "Save Image", defaultPath,
+	QString filename = QFileDialog::getSaveFileName(this, "Save Image", defaultPath_,
 							"Image Files (*.png *.jpg *.jpeg)");
 	if (filename.isEmpty())
 		return;
diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
index c2040c0ebcd61bfa..7b8a185511e17a8f 100644
--- a/src/qcam/main_window.h
+++ b/src/qcam/main_window.h
@@ -33,6 +33,7 @@ class QAction;
 enum {
 	OptCamera = 'c',
 	OptHelp = 'h',
+	OptSavePath = 'o',
 	OptStream = 's',
 };
 
@@ -83,6 +84,7 @@ private:
 
 	/* Options */
 	const OptionsParser::Options &options_;
+	QString defaultPath_;
 
 	/* Camera manager, camera, configuration and buffers */
 	CameraManager *cm_;
-- 
2.26.0



More information about the libcamera-devel mailing list