[libcamera-devel] [PATCH v2 6/7] qcam: Provide initial icon buttons "Play/Stop"

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Feb 14 01:28:46 CET 2020


Hi Kieran,

Thank you for the patch.

On Fri, Feb 14, 2020 at 12:18:09AM +0000, Kieran Bingham wrote:
> Provide Quit, Play, Stop icons.
> 
> Create a Qt resource to compile icons into the binary and present them
> on the toolbar.
> 
> Update the Quit button with a 'cross', and implement Play/Stop buttons.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> ---
> v2
>  - Remove pause button
> 
>  src/qcam/assets/feathericons/feathericons.qrc | 7 +++++++
>  src/qcam/main_window.cpp                      | 9 ++++++++-
>  src/qcam/main_window.h                        | 6 +++---
>  src/qcam/meson.build                          | 9 +++++++--
>  4 files changed, 25 insertions(+), 6 deletions(-)
>  create mode 100644 src/qcam/assets/feathericons/feathericons.qrc
> 
> diff --git a/src/qcam/assets/feathericons/feathericons.qrc b/src/qcam/assets/feathericons/feathericons.qrc
> new file mode 100644
> index 000000000000..b8e5c2266408
> --- /dev/null
> +++ b/src/qcam/assets/feathericons/feathericons.qrc
> @@ -0,0 +1,7 @@
> +<!DOCTYPE RCC><RCC version="1.0">
> +<qresource>
> +<file>./play-circle.svg</file>
> +<file>./stop-circle.svg</file>
> +<file>./x-circle.svg</file>
> +</qresource>
> +</RCC>
> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
> index 0e9e717b7e1a..ec93e0177b41 100644
> --- a/src/qcam/main_window.cpp
> +++ b/src/qcam/main_window.cpp
> @@ -12,6 +12,7 @@
>  
>  #include <QComboBox>
>  #include <QCoreApplication>
> +#include <QIcon>
>  #include <QInputDialog>
>  #include <QTimer>
>  #include <QToolBar>
> @@ -66,7 +67,7 @@ int MainWindow::createToolbars()
>  	/* Disable right click context menu */
>  	toolbar_->setContextMenuPolicy(Qt::PreventContextMenu);
>  
> -	action = toolbar_->addAction("Quit");
> +	action = toolbar_->addAction(QIcon(":x-circle.svg"), "Quit");
>  	connect(action, &QAction::triggered, this, &MainWindow::quit);
>  
>  	/* Camera selection */
> @@ -81,6 +82,12 @@ int MainWindow::createToolbars()
>  
>  	toolbar_->addSeparator();
>  
> +	action = toolbar_->addAction(QIcon(":play-circle.svg"), "start");
> +	connect(action, &QAction::triggered, this, &MainWindow::startCapture);
> +
> +	action = toolbar_->addAction(QIcon(":stop-circle.svg"), "stop");
> +	connect(action, &QAction::triggered, this, &MainWindow::stopCapture);

Do I understand correctly that if capture is stopped and we select
another camera through the combo box, capture will be started on the new
camera automatically ? Is this desired ?

> +
>  	return 0;
>  }
>  
> diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
> index 12af103f87d0..27ceed611d59 100644
> --- a/src/qcam/main_window.h
> +++ b/src/qcam/main_window.h
> @@ -46,14 +46,14 @@ private Q_SLOTS:
>  
>  	void switchCamera(int index);
>  
> +	int startCapture();
> +	void stopCapture();
> +
>  private:
>  	int createToolbars();
>  	std::string chooseCamera();
>  	int openCamera();
>  
> -	int startCapture();
> -	void stopCapture();
> -
>  	void requestComplete(Request *request);
>  	int display(FrameBuffer *buffer);
>  
> diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> index 1e71f20fa15e..5b877a84da85 100644
> --- a/src/qcam/meson.build
> +++ b/src/qcam/meson.build
> @@ -11,6 +11,10 @@ qcam_moc_headers = files([
>      'main_window.h',
>  ])
>  
> +qcam_resources = files([
> +    'assets/feathericons/feathericons.qrc',
> +])
> +
>  qt5 = import('qt5')
>  qt5_dep = dependency('qt5',
>                       method : 'pkg-config',
> @@ -30,10 +34,11 @@ if qt5_dep.found()
>          endif
>      endif
>  
> -    moc_files = qt5.preprocess(moc_headers: qcam_moc_headers,
> +    resources = qt5.preprocess(moc_headers: qcam_moc_headers,
> +                               qresources : qcam_resources,
>                                 dependencies: qt5_dep)
>  
> -    qcam  = executable('qcam', qcam_sources, moc_files,
> +    qcam  = executable('qcam', qcam_sources, resources,
>                         install : true,
>                         dependencies : [libcamera_dep, qt5_dep],
>                         cpp_args : qt5_cpp_args)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list