diff options
Diffstat (limited to 'examples/multimedia/camera/camera.h')
-rw-r--r-- | examples/multimedia/camera/camera.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/examples/multimedia/camera/camera.h b/examples/multimedia/camera/camera.h new file mode 100644 index 000000000..c92aa2d6a --- /dev/null +++ b/examples/multimedia/camera/camera.h @@ -0,0 +1,104 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef CAMERA_H +#define CAMERA_H + +#include <QAudioInput> +#include <QCamera> +#include <QImageCapture> +#include <QMediaCaptureSession> +#include <QMediaDevices> +#include <QMediaMetaData> +#include <QMediaRecorder> +#include <QScopedPointer> + +#include <QMainWindow> + +QT_BEGIN_NAMESPACE +namespace Ui { +class Camera; +} +class QActionGroup; +QT_END_NAMESPACE + +class MetaDataDialog; + +class Camera : public QMainWindow +{ + Q_OBJECT + +public: + Camera(); + +public slots: + void saveMetaData(); + +private slots: + void init(); + + void setCamera(const QCameraDevice &cameraDevice); + + void startCamera(); + void stopCamera(); + + void record(); + void pause(); + void stop(); + void setMuted(bool); + + void takeImage(); + void displayCaptureError(int, QImageCapture::Error, const QString &errorString); + + void configureCaptureSettings(); + void configureVideoSettings(); + void configureImageSettings(); + + void displayRecorderError(); + void displayCameraError(); + + void updateCameraDevice(QAction *action); + + void updateCameraActive(bool active); + void updateCaptureMode(); + void updateRecorderState(QMediaRecorder::RecorderState state); + void setExposureCompensation(int index); + + void updateRecordTime(); + + void processCapturedImage(int requestId, const QImage &img); + + void displayViewfinder(); + void displayCapturedImage(); + + void readyForCapture(bool ready); + void imageSaved(int id, const QString &fileName); + + void updateCameras(); + + void showMetaDataDialog(); + +protected: + void keyPressEvent(QKeyEvent *event) override; + void closeEvent(QCloseEvent *event) override; + +private: + Ui::Camera *ui; + + QActionGroup *videoDevicesGroup = nullptr; + + QMediaDevices m_devices; + QScopedPointer<QImageCapture> m_imageCapture; + QMediaCaptureSession m_captureSession; + QScopedPointer<QCamera> m_camera; + QScopedPointer<QAudioInput> m_audioInput; + QScopedPointer<QMediaRecorder> m_mediaRecorder; + + bool m_isCapturingImage = false; + bool m_applicationExiting = false; + bool m_doImageCapture = true; + + MetaDataDialog *m_metaDataDialog = nullptr; +}; + +#endif |