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:
@@ -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()
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user