diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/multimedia/multimedia.cpp | 2 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus.cpp | 56 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus_p.h | 14 |
3 files changed, 71 insertions, 1 deletions
diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp index a95ababfb..96994b9bf 100644 --- a/src/imports/multimedia/multimedia.cpp +++ b/src/imports/multimedia/multimedia.cpp @@ -154,6 +154,8 @@ public: // 5.11 types qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio"); qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer"); + qmlRegisterUncreatableType<QDeclarativeCameraFocus, 1>(uri, 5, 11, "CameraFocus", + trUtf8("CameraFocus is provided by Camera")); qmlRegisterType<QDeclarativeMediaMetaData>(); qmlRegisterType<QAbstractVideoFilter>(); diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp index 1d1436d09..1dd216467 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus.cpp +++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp @@ -101,6 +101,15 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren updateFocusZones(); connect(m_focus, SIGNAL(focusZonesChanged()), SLOT(updateFocusZones())); + connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) { + if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus + && status != QCamera::ActiveStatus) { + return; + } + + emit supportedFocusModesChanged(); + emit supportedFocusPointModesChanged(); + }); } QDeclarativeCameraFocus::~QDeclarativeCameraFocus() @@ -161,7 +170,29 @@ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const } /*! + \qmlproperty list<FocusMode> CameraFocus::supportedFocusModes + + This property holds the supported focus modes of the camera. + + \since 5.11 + \sa focusMode +*/ +QVariantList QDeclarativeCameraFocus::supportedFocusModes() const +{ + QVariantList supportedModes; + + for (int i = int(FocusManual); i <= int(FocusMacro); ++i) { + if (m_focus->isFocusModeSupported((QCameraFocus::FocusMode) i)) + supportedModes.append(i); + } + + return supportedModes; +} + +#if QT_DEPRECATED_SINCE(5, 11) +/*! \qmlmethod bool QtMultimedia::CameraFocus::isFocusModeSupported(mode) const + \obsolete Returns true if the supplied \a mode is a supported focus mode, and false otherwise. @@ -170,6 +201,7 @@ bool QDeclarativeCameraFocus::isFocusModeSupported(QDeclarativeCameraFocus::Focu { return m_focus->isFocusModeSupported(QCameraFocus::FocusModes(int(mode))); } +#endif void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCameraFocus::FocusMode mode) { @@ -220,6 +252,26 @@ QDeclarativeCameraFocus::FocusPointMode QDeclarativeCameraFocus::focusPointMode( return QDeclarativeCameraFocus::FocusPointMode(m_focus->focusPointMode()); } +/*! + \qmlproperty list<enumeration> CameraFocus::supportedFocusPointModes + + This property holds the supported focus point modes of the camera. + + \since 5.10 + \sa focusPointMode +*/ +QVariantList QDeclarativeCameraFocus::supportedFocusPointModes() const +{ + QVariantList supportedModes; + + for (int i = int(FocusPointAuto); i <= int(FocusPointCustom); i++) { + if (m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(i))) + supportedModes.append(i); + } + + return supportedModes; +} + void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPointMode mode) { if (mode != focusPointMode()) { @@ -228,8 +280,10 @@ void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPo } } +#if QT_DEPRECATED_SINCE(5, 10) /*! \qmlmethod bool QtMultimedia::CameraFocus::isFocusPointModeSupported(mode) const + \obsolete Returns true if the supplied \a mode is a supported focus point mode, and false otherwise. @@ -238,6 +292,8 @@ bool QDeclarativeCameraFocus::isFocusPointModeSupported(QDeclarativeCameraFocus: { return m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(mode)); } +#endif + /*! \property QDeclarativeCameraFocus::customFocusPoint diff --git a/src/imports/multimedia/qdeclarativecamerafocus_p.h b/src/imports/multimedia/qdeclarativecamerafocus_p.h index 16a48de53..e3a1c28b7 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus_p.h +++ b/src/imports/multimedia/qdeclarativecamerafocus_p.h @@ -64,8 +64,13 @@ class QDeclarativeCamera; class QDeclarativeCameraFocus : public QObject { Q_OBJECT + Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode NOTIFY focusModeChanged) + Q_PROPERTY(QVariantList supportedFocusModes READ supportedFocusModes NOTIFY supportedFocusModesChanged REVISION 1) + Q_PROPERTY(FocusPointMode focusPointMode READ focusPointMode WRITE setFocusPointMode NOTIFY focusPointModeChanged) + Q_PROPERTY(QVariantList supportedFocusPointModes READ supportedFocusPointModes NOTIFY supportedFocusPointModesChanged REVISION 1) + Q_PROPERTY(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged) Q_PROPERTY(QObject *focusZones READ focusZones CONSTANT) @@ -91,13 +96,18 @@ public: ~QDeclarativeCameraFocus(); FocusMode focusMode() const; + QVariantList supportedFocusModes() const; + FocusPointMode focusPointMode() const; - QPointF customFocusPoint() const; + QVariantList supportedFocusPointModes() const; + QPointF customFocusPoint() const; QAbstractListModel *focusZones() const; +#if QT_DEPRECATED_SINCE(5, 10) Q_INVOKABLE bool isFocusModeSupported(FocusMode mode) const; Q_INVOKABLE bool isFocusPointModeSupported(FocusPointMode mode) const; +#endif public Q_SLOTS: void setFocusMode(FocusMode); @@ -106,7 +116,9 @@ public Q_SLOTS: Q_SIGNALS: void focusModeChanged(FocusMode); + void supportedFocusModesChanged(); void focusPointModeChanged(FocusPointMode); + void supportedFocusPointModesChanged(); void customFocusPointChanged(const QPointF &); private Q_SLOTS: |