summaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorJochen Seemann <seemann.jochen@gmail.com>2016-08-29 21:57:57 +0200
committerYoann Lopes <yoann.lopes@qt.io>2016-09-09 13:59:25 +0000
commitfe2bbf458cefcd29e2802eb408926fd76ab16bae (patch)
tree326114f4e6db07a2b23f3f775654050db4ce95a5 /src/imports
parent62f1899a23b456f03cfccfaefcdf670d3cbb0f35 (diff)
adding property CameraFlash::supportedModes
This property contains a list of the supported flash modes and is the QML version of QCameraExposure::isFlashModeSupported(FlashMode). Task-number: QTBUG-45323 Change-Id: I1eb6fcbb126759458c5290e71fa576053b62f05d Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/multimedia/multimedia.cpp2
-rw-r--r--src/imports/multimedia/qdeclarativecameraflash.cpp51
-rw-r--r--src/imports/multimedia/qdeclarativecameraflash_p.h6
3 files changed, 57 insertions, 2 deletions
diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp
index ced83a5b2..19e932fb9 100644
--- a/src/imports/multimedia/multimedia.cpp
+++ b/src/imports/multimedia/multimedia.cpp
@@ -145,6 +145,8 @@ public:
qmlRegisterType<QDeclarativeAudio, 2>(uri, 5, 9, "MediaPlayer");
qmlRegisterUncreatableType<QDeclarativeCameraCapture, 1>(uri, 5, 9, "CameraCapture",
trUtf8("CameraCapture is provided by Camera"));
+ qmlRegisterUncreatableType<QDeclarativeCameraFlash, 1>(uri, 5, 9, "CameraFlash",
+ trUtf8("CameraFlash is provided by Camera"));
qmlRegisterType<QDeclarativeMediaMetaData>();
qmlRegisterType<QAbstractVideoFilter>();
diff --git a/src/imports/multimedia/qdeclarativecameraflash.cpp b/src/imports/multimedia/qdeclarativecameraflash.cpp
index f8adc5e71..551b88aef 100644
--- a/src/imports/multimedia/qdeclarativecameraflash.cpp
+++ b/src/imports/multimedia/qdeclarativecameraflash.cpp
@@ -73,11 +73,13 @@ QT_BEGIN_NAMESPACE
/*!
Construct a declarative camera flash object using \a parent object.
*/
-QDeclarativeCameraFlash::QDeclarativeCameraFlash(QCamera *camera, QObject *parent) :
- QObject(parent)
+QDeclarativeCameraFlash::QDeclarativeCameraFlash(QCamera *camera, QObject *parent)
+ : QObject(parent)
{
m_exposure = camera->exposure();
connect(m_exposure, SIGNAL(flashReady(bool)), this, SIGNAL(flashReady(bool)));
+ connect(camera, SIGNAL(statusChanged(QCamera::Status)),
+ this, SLOT(_q_cameraStatusChanged(QCamera::Status)));
}
QDeclarativeCameraFlash::~QDeclarativeCameraFlash()
@@ -133,6 +135,51 @@ void QDeclarativeCameraFlash::setFlashMode(QDeclarativeCameraFlash::FlashMode mo
}
}
+void QDeclarativeCameraFlash::_q_cameraStatusChanged(QCamera::Status status)
+{
+ if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus &&
+ status != QCamera::ActiveStatus)
+ return;
+
+ emit supportedModesChanged();
+}
+
+/*!
+ \qmlproperty list<FlashMode> QtMultimedia::CameraFlash::supportedModes
+
+ This property holds the supported flash modes of the camera. If the list
+ only contains Camera.FlashOff, no flash is supported.
+
+ \code
+ Camera {
+ id: camera
+ flash {
+ onSupportedModesChanged {
+ if (flash.supportedModes.length == 1) {
+ // no flash supported
+ } else {
+ // some flash is supported
+ }
+ }
+ }
+ }
+ \endcode
+
+ \since 5.9
+ \sa mode
+ */
+QVariantList QDeclarativeCameraFlash::supportedModes() const
+{
+ QVariantList supportedModes;
+
+ for (int i=1; i <= (int) QCameraExposure::FlashManual; i = (i << 1)) {
+ if (m_exposure->isFlashModeSupported((QCameraExposure::FlashMode) i))
+ supportedModes.append(QVariant(i));
+ }
+
+ return supportedModes;
+}
+
/*!
\qmlsignal QtMultimedia::CameraFlash::flashModeChanged(int)
This signal is emitted when the \c flashMode property is changed.
diff --git a/src/imports/multimedia/qdeclarativecameraflash_p.h b/src/imports/multimedia/qdeclarativecameraflash_p.h
index 9247c7202..df037c4d6 100644
--- a/src/imports/multimedia/qdeclarativecameraflash_p.h
+++ b/src/imports/multimedia/qdeclarativecameraflash_p.h
@@ -63,6 +63,7 @@ class QDeclarativeCameraFlash : public QObject
Q_OBJECT
Q_PROPERTY(bool ready READ isFlashReady NOTIFY flashReady)
Q_PROPERTY(FlashMode mode READ flashMode WRITE setFlashMode NOTIFY flashModeChanged)
+ Q_PROPERTY(QVariantList supportedModes READ supportedModes NOTIFY supportedModesChanged REVISION 1)
Q_ENUMS(FlashMode)
public:
@@ -83,6 +84,7 @@ public:
FlashMode flashMode() const;
bool isFlashReady() const;
+ QVariantList supportedModes() const;
public Q_SLOTS:
void setFlashMode(FlashMode);
@@ -90,6 +92,10 @@ public Q_SLOTS:
Q_SIGNALS:
void flashReady(bool status);
void flashModeChanged(FlashMode);
+ void supportedModesChanged();
+
+private slots:
+ void _q_cameraStatusChanged(QCamera::Status status);
private:
friend class QDeclarativeCamera;