Use QCameraInfo in camera example.

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

Change-Id: I0b1bd6286ec78d6d26ce309d224369989d4a5063
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
This commit is contained in:
Yoann Lopes
2014-09-25 17:10:08 +02:00
parent 5c3a5cf810
commit f9de9889f6
2 changed files with 13 additions and 16 deletions

View File

@@ -46,6 +46,7 @@
#include <QMediaService> #include <QMediaService>
#include <QMediaRecorder> #include <QMediaRecorder>
#include <QCameraViewfinder> #include <QCameraViewfinder>
#include <QCameraInfo>
#include <QMediaMetaData> #include <QMediaMetaData>
#include <QMessageBox> #include <QMessageBox>
@@ -53,6 +54,8 @@
#include <QtWidgets> #include <QtWidgets>
Q_DECLARE_METATYPE(QCameraInfo)
Camera::Camera(QWidget *parent) : Camera::Camera(QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),
ui(new Ui::Camera), ui(new Ui::Camera),
@@ -65,26 +68,23 @@ Camera::Camera(QWidget *parent) :
ui->setupUi(this); ui->setupUi(this);
//Camera devices: //Camera devices:
QByteArray cameraDevice;
QActionGroup *videoDevicesGroup = new QActionGroup(this); QActionGroup *videoDevicesGroup = new QActionGroup(this);
videoDevicesGroup->setExclusive(true); videoDevicesGroup->setExclusive(true);
foreach(const QByteArray &deviceName, QCamera::availableDevices()) { foreach (const QCameraInfo &cameraInfo, QCameraInfo::availableCameras()) {
QString description = camera->deviceDescription(deviceName); QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
QAction *videoDeviceAction = new QAction(description, videoDevicesGroup);
videoDeviceAction->setCheckable(true); videoDeviceAction->setCheckable(true);
videoDeviceAction->setData(QVariant(deviceName)); videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
if (cameraDevice.isEmpty()) { if (cameraInfo == QCameraInfo::defaultCamera())
cameraDevice = deviceName;
videoDeviceAction->setChecked(true); videoDeviceAction->setChecked(true);
}
ui->menuDevices->addAction(videoDeviceAction); ui->menuDevices->addAction(videoDeviceAction);
} }
connect(videoDevicesGroup, SIGNAL(triggered(QAction*)), SLOT(updateCameraDevice(QAction*))); connect(videoDevicesGroup, SIGNAL(triggered(QAction*)), SLOT(updateCameraDevice(QAction*)));
connect(ui->captureWidget, SIGNAL(currentChanged(int)), SLOT(updateCaptureMode())); connect(ui->captureWidget, SIGNAL(currentChanged(int)), SLOT(updateCaptureMode()));
setCamera(cameraDevice); setCamera(QCameraInfo::defaultCamera());
} }
Camera::~Camera() Camera::~Camera()
@@ -94,16 +94,13 @@ Camera::~Camera()
delete camera; delete camera;
} }
void Camera::setCamera(const QByteArray &cameraDevice) void Camera::setCamera(const QCameraInfo &cameraInfo)
{ {
delete imageCapture; delete imageCapture;
delete mediaRecorder; delete mediaRecorder;
delete camera; delete camera;
if (cameraDevice.isEmpty()) camera = new QCamera(cameraInfo);
camera = new QCamera;
else
camera = new QCamera(cameraDevice);
connect(camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(updateCameraState(QCamera::State))); connect(camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(updateCameraState(QCamera::State)));
connect(camera, SIGNAL(error(QCamera::Error)), this, SLOT(displayCameraError())); connect(camera, SIGNAL(error(QCamera::Error)), this, SLOT(displayCameraError()));
@@ -398,7 +395,7 @@ void Camera::displayCameraError()
void Camera::updateCameraDevice(QAction *action) void Camera::updateCameraDevice(QAction *action)
{ {
setCamera(action->data().toByteArray()); setCamera(qvariant_cast<QCameraInfo>(action->data()));
} }
void Camera::displayViewfinder() void Camera::displayViewfinder()

View File

@@ -60,7 +60,7 @@ public:
~Camera(); ~Camera();
private slots: private slots:
void setCamera(const QByteArray &cameraDevice); void setCamera(const QCameraInfo &cameraInfo);
void startCamera(); void startCamera();
void stopCamera(); void stopCamera();