QtMultimedia: examples/camera coding style

Also unconditionally include code for Qt >= 4.7

Change-Id: Ic8b9d009a54f9e0fe7e9477c75c125ad09a485ee
Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
hjk
2012-11-20 15:20:24 +01:00
committed by The Qt Project
parent 294fa9c5df
commit 9f4d6e824c
6 changed files with 57 additions and 72 deletions

View File

@@ -43,13 +43,12 @@
#include "videosettings.h" #include "videosettings.h"
#include "imagesettings.h" #include "imagesettings.h"
#include <qmediaservice.h> #include <QMediaService>
#include <qmediarecorder.h> #include <QMediaRecorder>
#include <qcamera.h> #include <QCameraViewfinder>
#include <qcameraviewfinder.h>
#include <qmessagebox.h> #include <QMessageBox>
#include <qpalette.h> #include <QPalette>
#include <QtWidgets> #include <QtWidgets>
@@ -85,7 +84,7 @@ Camera::Camera(QWidget *parent) :
ui->menuDevices->addAction(videoDeviceAction); ui->menuDevices->addAction(videoDeviceAction);
} }
connect(videoDevicesGroup, SIGNAL(triggered(QAction*)), this, 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()));
#ifdef HAVE_CAMERA_BUTTONS #ifdef HAVE_CAMERA_BUTTONS
@@ -154,7 +153,6 @@ void Camera::keyPressEvent(QKeyEvent * event)
return; return;
switch (event->key()) { switch (event->key()) {
#if QT_VERSION >= 0x040700
case Qt::Key_CameraFocus: case Qt::Key_CameraFocus:
displayViewfinder(); displayViewfinder();
camera->searchAndLock(); camera->searchAndLock();
@@ -171,23 +169,20 @@ void Camera::keyPressEvent(QKeyEvent * event)
} }
event->accept(); event->accept();
break; break;
#endif
default: default:
QMainWindow::keyPressEvent(event); QMainWindow::keyPressEvent(event);
} }
} }
void Camera::keyReleaseEvent(QKeyEvent * event) void Camera::keyReleaseEvent(QKeyEvent *event)
{ {
if (event->isAutoRepeat()) if (event->isAutoRepeat())
return; return;
switch (event->key()) { switch (event->key()) {
#if QT_VERSION >= 0x040700
case Qt::Key_CameraFocus: case Qt::Key_CameraFocus:
camera->unlock(); camera->unlock();
break; break;
#endif
default: default:
QMainWindow::keyReleaseEvent(event); QMainWindow::keyReleaseEvent(event);
} }
@@ -207,7 +202,8 @@ void Camera::processCapturedImage(int requestId, const QImage& img)
Qt::SmoothTransformation); Qt::SmoothTransformation);
ui->lastImagePreviewLabel->setPixmap(QPixmap::fromImage(scaledImage)); ui->lastImagePreviewLabel->setPixmap(QPixmap::fromImage(scaledImage));
//display captured image for 4 seconds
// Display captured image for 4 seconds.
displayCapturedImage(); displayCapturedImage();
QTimer::singleShot(4000, this, SLOT(displayViewfinder())); QTimer::singleShot(4000, this, SLOT(displayViewfinder()));
} }
@@ -319,7 +315,6 @@ void Camera::updateLockStatus(QCamera::LockStatus status, QCamera::LockChangeRea
} }
void Camera::takeImage() void Camera::takeImage()
{ {
isCapturingImage = true; isCapturingImage = true;
imageCapture->capture(); imageCapture->capture();

View File

@@ -41,25 +41,20 @@
#ifndef CAMERA_H #ifndef CAMERA_H
#define CAMERA_H #define CAMERA_H
#include <qcamera.h> #include <QCamera>
#include <qmediarecorder.h> #include <QCameraImageCapture>
#include <qcameraimagecapture.h> #include <QMediaRecorder>
QT_BEGIN_NAMESPACE
namespace Ui {
class Camera;
}
class QCameraViewfinder;
QT_END_NAMESPACE
#include <QMainWindow> #include <QMainWindow>
#include <QDir>
QT_USE_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { class Camera; }
QT_END_NAMESPACE
class Camera : public QMainWindow class Camera : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public: public:
Camera(QWidget *parent = 0); Camera(QWidget *parent = 0);
~Camera(); ~Camera();
@@ -85,7 +80,7 @@ private slots:
void displayRecorderError(); void displayRecorderError();
void displayCameraError(); void displayCameraError();
void updateCameraDevice(QAction*); void updateCameraDevice(QAction *action);
void updateCameraState(QCamera::State); void updateCameraState(QCamera::State);
void updateCaptureMode(); void updateCaptureMode();
@@ -94,19 +89,19 @@ private slots:
void updateRecordTime(); void updateRecordTime();
void processCapturedImage(int requestId, const QImage& img); void processCapturedImage(int requestId, const QImage &img);
void updateLockStatus(QCamera::LockStatus, QCamera::LockChangeReason); void updateLockStatus(QCamera::LockStatus, QCamera::LockChangeReason);
void displayViewfinder(); void displayViewfinder();
void displayCapturedImage(); void displayCapturedImage();
void readyForCapture(bool); void readyForCapture(bool ready);
void imageSaved(int, const QString&); void imageSaved(int id, const QString &fileName);
protected: protected:
void keyPressEvent(QKeyEvent * event); void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent * event); void keyReleaseEvent(QKeyEvent *event);
void closeEvent(QCloseEvent *event ); void closeEvent(QCloseEvent *event);
private: private:
Ui::Camera *ui; Ui::Camera *ui;

View File

@@ -41,11 +41,10 @@
#include "imagesettings.h" #include "imagesettings.h"
#include "ui_imagesettings.h" #include "ui_imagesettings.h"
#include <QtWidgets/qcombobox.h> #include <QComboBox>
#include <QtCore/qdebug.h> #include <QDebug>
#include <qcameraimagecapture.h> #include <QCameraImageCapture>
#include <qmediaservice.h> #include <QMediaService>
ImageSettings::ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent) : ImageSettings::ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent) :
@@ -117,7 +116,7 @@ QVariant ImageSettings::boxValue(const QComboBox *box) const
void ImageSettings::selectComboBoxItem(QComboBox *box, const QVariant &value) void ImageSettings::selectComboBoxItem(QComboBox *box, const QVariant &value)
{ {
for (int i=0; i<box->count(); i++) { for (int i = 0; i < box->count(); ++i) {
if (box->itemData(i) == value) { if (box->itemData(i) == value) {
box->setCurrentIndex(i); box->setCurrentIndex(i);
break; break;

View File

@@ -41,31 +41,29 @@
#ifndef IMAGESETTINGS_H #ifndef IMAGESETTINGS_H
#define IMAGESETTINGS_H #define IMAGESETTINGS_H
#include <QtWidgets/QDialog> #include <QDialog>
#include <qmediaencodersettings.h> #include <QAudioEncoderSettings>
#include <QVideoEncoderSettings>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
namespace Ui {
class ImageSettingsUi;
}
class QCameraImageCapture; class QCameraImageCapture;
namespace Ui { class ImageSettingsUi; }
QT_END_NAMESPACE QT_END_NAMESPACE
QT_USE_NAMESPACE class ImageSettings : public QDialog
{
class ImageSettings : public QDialog {
Q_OBJECT Q_OBJECT
public: public:
ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent = 0); ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent = 0);
~ImageSettings(); ~ImageSettings();
QAudioEncoderSettings audioSettings() const; QAudioEncoderSettings audioSettings() const;
void setAudioSettings(const QAudioEncoderSettings&); void setAudioSettings(const QAudioEncoderSettings &settings);
QImageEncoderSettings imageSettings() const; QImageEncoderSettings imageSettings() const;
void setImageSettings(const QImageEncoderSettings&); void setImageSettings(const QImageEncoderSettings &settings);
QString format() const; QString format() const;
void setFormat(const QString &format); void setFormat(const QString &format);
@@ -74,7 +72,7 @@ protected:
void changeEvent(QEvent *e); void changeEvent(QEvent *e);
private: private:
QVariant boxValue(const QComboBox*) const; QVariant boxValue(const QComboBox *box) const;
void selectComboBoxItem(QComboBox *box, const QVariant &value); void selectComboBoxItem(QComboBox *box, const QVariant &value);
Ui::ImageSettingsUi *ui; Ui::ImageSettingsUi *ui;

View File

@@ -41,10 +41,10 @@
#include "videosettings.h" #include "videosettings.h"
#include "ui_videosettings.h" #include "ui_videosettings.h"
#include <QtWidgets/qcombobox.h> #include <QComboBox>
#include <QtCore/qdebug.h> #include <QDebug>
#include <qmediarecorder.h> #include <QMediaRecorder>
#include <qmediaservice.h> #include <QMediaService>
VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent) : VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent) :
@@ -56,13 +56,13 @@ VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent) :
//audio codecs //audio codecs
ui->audioCodecBox->addItem(tr("Default audio codec"), QVariant(QString())); ui->audioCodecBox->addItem(tr("Default audio codec"), QVariant(QString()));
foreach(const QString &codecName, mediaRecorder->supportedAudioCodecs()) { foreach (const QString &codecName, mediaRecorder->supportedAudioCodecs()) {
QString description = mediaRecorder->audioCodecDescription(codecName); QString description = mediaRecorder->audioCodecDescription(codecName);
ui->audioCodecBox->addItem(codecName+": "+description, QVariant(codecName)); ui->audioCodecBox->addItem(codecName+": "+description, QVariant(codecName));
} }
//sample rate: //sample rate:
foreach(int sampleRate, mediaRecorder->supportedAudioSampleRates()) { foreach (int sampleRate, mediaRecorder->supportedAudioSampleRates()) {
ui->audioSampleRateBox->addItem(QString::number(sampleRate), QVariant(sampleRate)); ui->audioSampleRateBox->addItem(QString::number(sampleRate), QVariant(sampleRate));
} }
@@ -70,7 +70,7 @@ VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent) :
//video codecs //video codecs
ui->videoCodecBox->addItem(tr("Default video codec"), QVariant(QString())); ui->videoCodecBox->addItem(tr("Default video codec"), QVariant(QString()));
foreach(const QString &codecName, mediaRecorder->supportedVideoCodecs()) { foreach (const QString &codecName, mediaRecorder->supportedVideoCodecs()) {
QString description = mediaRecorder->videoCodecDescription(codecName); QString description = mediaRecorder->videoCodecDescription(codecName);
ui->videoCodecBox->addItem(codecName+": "+description, QVariant(codecName)); ui->videoCodecBox->addItem(codecName+": "+description, QVariant(codecName));
} }
@@ -80,7 +80,7 @@ VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent) :
ui->videoResolutionBox->addItem(tr("Default")); ui->videoResolutionBox->addItem(tr("Default"));
QList<QSize> supportedResolutions = mediaRecorder->supportedResolutions(); QList<QSize> supportedResolutions = mediaRecorder->supportedResolutions();
foreach(const QSize &resolution, supportedResolutions) { foreach (const QSize &resolution, supportedResolutions) {
ui->videoResolutionBox->addItem(QString("%1x%2").arg(resolution.width()).arg(resolution.height()), ui->videoResolutionBox->addItem(QString("%1x%2").arg(resolution.width()).arg(resolution.height()),
QVariant(resolution)); QVariant(resolution));
} }
@@ -88,14 +88,14 @@ VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent) :
ui->videoFramerateBox->addItem(tr("Default")); ui->videoFramerateBox->addItem(tr("Default"));
QList<qreal> supportedFrameRates = mediaRecorder->supportedFrameRates(); QList<qreal> supportedFrameRates = mediaRecorder->supportedFrameRates();
qreal rate; qreal rate;
foreach(rate, supportedFrameRates) { foreach (rate, supportedFrameRates) {
QString rateString = QString("%1").arg(rate, 0, 'f', 2); QString rateString = QString("%1").arg(rate, 0, 'f', 2);
ui->videoFramerateBox->addItem(rateString, QVariant(rate)); ui->videoFramerateBox->addItem(rateString, QVariant(rate));
} }
//containers //containers
ui->containerFormatBox->addItem(tr("Default container"), QVariant(QString())); ui->containerFormatBox->addItem(tr("Default container"), QVariant(QString()));
foreach(const QString &format, mediaRecorder->supportedContainers()) { foreach (const QString &format, mediaRecorder->supportedContainers()) {
ui->containerFormatBox->addItem(format+":"+mediaRecorder->containerDescription(format), ui->containerFormatBox->addItem(format+":"+mediaRecorder->containerDescription(format),
QVariant(format)); QVariant(format));
} }
@@ -152,7 +152,7 @@ void VideoSettings::setVideoSettings(const QVideoEncoderSettings &videoSettings)
ui->videoQualitySlider->setValue(videoSettings.quality()); ui->videoQualitySlider->setValue(videoSettings.quality());
//special case for frame rate //special case for frame rate
for (int i=0; i<ui->videoFramerateBox->count(); i++) { for (int i = 0; i < ui->videoFramerateBox->count(); ++i) {
qreal itemRate = ui->videoFramerateBox->itemData(i).value<qreal>(); qreal itemRate = ui->videoFramerateBox->itemData(i).value<qreal>();
if (qFuzzyCompare(itemRate, videoSettings.frameRate())) { if (qFuzzyCompare(itemRate, videoSettings.frameRate())) {
ui->videoFramerateBox->setCurrentIndex(i); ui->videoFramerateBox->setCurrentIndex(i);
@@ -182,7 +182,7 @@ QVariant VideoSettings::boxValue(const QComboBox *box) const
void VideoSettings::selectComboBoxItem(QComboBox *box, const QVariant &value) void VideoSettings::selectComboBoxItem(QComboBox *box, const QVariant &value)
{ {
for (int i=0; i<box->count(); i++) { for (int i = 0; i < box->count(); ++i) {
if (box->itemData(i) == value) { if (box->itemData(i) == value) {
box->setCurrentIndex(i); box->setCurrentIndex(i);
break; break;

View File

@@ -41,22 +41,20 @@
#ifndef VIDEOSETTINGS_H #ifndef VIDEOSETTINGS_H
#define VIDEOSETTINGS_H #define VIDEOSETTINGS_H
#include <QtWidgets/QDialog> #include <QDialog>
#include <qmediaencodersettings.h> #include <QAudioEncoderSettings>
#include <QVideoEncoderSettings>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
namespace Ui {
class VideoSettingsUi;
}
class QMediaRecorder; class QMediaRecorder;
namespace Ui { class VideoSettingsUi; }
QT_END_NAMESPACE QT_END_NAMESPACE
QT_USE_NAMESPACE class VideoSettings : public QDialog
{
class VideoSettings : public QDialog {
Q_OBJECT Q_OBJECT
public: public:
VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent = 0); VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent = 0);
~VideoSettings(); ~VideoSettings();