Commit f9de9889 authored by Yoann Lopes's avatar Yoann Lopes
Browse files

Use QCameraInfo in camera example.


To replace QCamera::availableDevices(), which is deprecated since 5.3.

Change-Id: I0b1bd6286ec78d6d26ce309d224369989d4a5063
Reviewed-by: default avatarChristian Stromme <christian.stromme@digia.com>
Showing with 13 additions and 16 deletions
......@@ -46,6 +46,7 @@
#include <QMediaService>
#include <QMediaRecorder>
#include <QCameraViewfinder>
#include <QCameraInfo>
#include <QMediaMetaData>
#include <QMessageBox>
......@@ -53,6 +54,8 @@
#include <QtWidgets>
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<QCameraInfo>(action->data()));
}
void Camera::displayViewfinder()
......
......@@ -60,7 +60,7 @@ public:
~Camera();
private slots:
void setCamera(const QByteArray &cameraDevice);
void setCamera(const QCameraInfo &cameraInfo);
void startCamera();
void stopCamera();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment