From f9de9889f6b909968f31743ab60e66dd356f2a4d Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Thu, 25 Sep 2014 17:10:08 +0200 Subject: Use QCameraInfo in camera example. To replace QCamera::availableDevices(), which is deprecated since 5.3. Change-Id: I0b1bd6286ec78d6d26ce309d224369989d4a5063 Reviewed-by: Christian Stromme --- examples/multimediawidgets/camera/camera.cpp | 27 ++++++++++++--------------- examples/multimediawidgets/camera/camera.h | 2 +- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp index 3afe59324..714de7a4d 100644 --- a/examples/multimediawidgets/camera/camera.cpp +++ b/examples/multimediawidgets/camera/camera.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -53,6 +54,8 @@ #include +Q_DECLARE_METATYPE(QCameraInfo) + Camera::Camera(QWidget *parent) : QMainWindow(parent), ui(new Ui::Camera), @@ -65,26 +68,23 @@ Camera::Camera(QWidget *parent) : ui->setupUi(this); //Camera devices: - QByteArray cameraDevice; QActionGroup *videoDevicesGroup = new QActionGroup(this); videoDevicesGroup->setExclusive(true); - foreach(const QByteArray &deviceName, QCamera::availableDevices()) { - QString description = camera->deviceDescription(deviceName); - QAction *videoDeviceAction = new QAction(description, videoDevicesGroup); + foreach (const QCameraInfo &cameraInfo, QCameraInfo::availableCameras()) { + QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup); videoDeviceAction->setCheckable(true); - videoDeviceAction->setData(QVariant(deviceName)); - if (cameraDevice.isEmpty()) { - cameraDevice = deviceName; + videoDeviceAction->setData(QVariant::fromValue(cameraInfo)); + if (cameraInfo == QCameraInfo::defaultCamera()) videoDeviceAction->setChecked(true); - } + ui->menuDevices->addAction(videoDeviceAction); } connect(videoDevicesGroup, SIGNAL(triggered(QAction*)), SLOT(updateCameraDevice(QAction*))); connect(ui->captureWidget, SIGNAL(currentChanged(int)), SLOT(updateCaptureMode())); - setCamera(cameraDevice); + setCamera(QCameraInfo::defaultCamera()); } Camera::~Camera() @@ -94,16 +94,13 @@ Camera::~Camera() delete camera; } -void Camera::setCamera(const QByteArray &cameraDevice) +void Camera::setCamera(const QCameraInfo &cameraInfo) { delete imageCapture; delete mediaRecorder; delete camera; - if (cameraDevice.isEmpty()) - camera = new QCamera; - else - camera = new QCamera(cameraDevice); + camera = new QCamera(cameraInfo); connect(camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(updateCameraState(QCamera::State))); connect(camera, SIGNAL(error(QCamera::Error)), this, SLOT(displayCameraError())); @@ -398,7 +395,7 @@ void Camera::displayCameraError() void Camera::updateCameraDevice(QAction *action) { - setCamera(action->data().toByteArray()); + setCamera(qvariant_cast(action->data())); } void Camera::displayViewfinder() diff --git a/examples/multimediawidgets/camera/camera.h b/examples/multimediawidgets/camera/camera.h index 52f03cbd3..faa02ccd7 100644 --- a/examples/multimediawidgets/camera/camera.h +++ b/examples/multimediawidgets/camera/camera.h @@ -60,7 +60,7 @@ public: ~Camera(); private slots: - void setCamera(const QByteArray &cameraDevice); + void setCamera(const QCameraInfo &cameraInfo); void startCamera(); void stopCamera(); -- cgit v1.2.3