[libcamera-devel] [PATCH] qcam: Use standard PicturesLocation path for capture

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Feb 18 10:02:18 CET 2020


Hi Laurent,

On 18/02/2020 01:05, Laurent Pinchart wrote:
> Hi Kieran,
> 
> Thank you for the patch.
> 
> On Mon, Feb 17, 2020 at 03:39:41PM +0000, Kieran Bingham wrote:
>> Utilise the QStandardPaths::PicturesLocation as a starting point for
>> saving images from qcam.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>> ---
>>  src/qcam/main_window.cpp | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
>> index 29eaba8454f8..09e4bfc11300 100644
>> --- a/src/qcam/main_window.cpp
>> +++ b/src/qcam/main_window.cpp
>> @@ -17,6 +17,7 @@
>>  #include <QImage>
>>  #include <QImageWriter>
>>  #include <QInputDialog>
>> +#include <QStandardPaths>
>>  #include <QTimer>
>>  #include <QToolBar>
>>  #include <QToolButton>
>> @@ -348,8 +349,9 @@ void MainWindow::stopCapture()
>>  void MainWindow::saveImageAs()
>>  {
>>  	QImage image = viewfinder_->getCurrentImage();
>> +	QString defaultPath = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last();
> 
> QStandardPaths::standardLocations() sorts the result from high to low
> priority, shouldn't we thus pick the first entry ? How about using
> QStandardPaths::writableLocation() instead ?


Ok, indeed I see it returns arrays like the following on Linux:

> FontsLocation	"~/.fonts", "~/.local/share/fonts", "/usr/local/share/fonts", "/usr/share/fonts"
> ApplicationsLocation	"~/.local/share/applications", "/usr/local/share/applications", "/usr/share/applications"
> MusicLocation	"~/Music"
> MoviesLocation	"~/Videos"
> PicturesLocation	"~/Pictures"


So for PicturesLocation first() == last() anyway :-)

But I'm fine with QStandardPaths::writableLocation(), and that reduces
the line length.


> 
>>  
>> -	QString filename = QFileDialog::getSaveFileName(this, "Save Image", "",
>> +	QString filename = QFileDialog::getSaveFileName(this, "Save Image", defaultPath,
>>  							"Image Files (*.png *.jpg *.jpeg)");
>>  
>>  	std::cout << "Save image to " << filename.toStdString() << std::endl;
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list