Commit 1e3c4234 authored by Jochen Seemann's avatar Jochen Seemann
Browse files

add supportedFocusModes and supportedFocusPointModes


This patch adds two properties to QML type CameraFocus,
to gain feature parity with the C++ interface of QCameraFocus.
Additionally, it deprecates the older, comparable functions.

Task-number: QTBUG-45336
Change-Id: Iffc5c805409ed605dba5d4bc3fa2f05122b58b9e
Reviewed-by: default avatarChristian Stromme <christian.stromme@qt.io>
parent 009a9d4b
Branches
Tags
No related merge requests found
Showing with 71 additions and 1 deletion
...@@ -154,6 +154,8 @@ public: ...@@ -154,6 +154,8 @@ public:
// 5.11 types // 5.11 types
qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio"); qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio");
qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer"); qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer");
qmlRegisterUncreatableType<QDeclarativeCameraFocus, 1>(uri, 5, 11, "CameraFocus",
trUtf8("CameraFocus is provided by Camera"));
qmlRegisterType<QDeclarativeMediaMetaData>(); qmlRegisterType<QDeclarativeMediaMetaData>();
qmlRegisterType<QAbstractVideoFilter>(); qmlRegisterType<QAbstractVideoFilter>();
......
...@@ -101,6 +101,15 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren ...@@ -101,6 +101,15 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren
updateFocusZones(); updateFocusZones();
connect(m_focus, SIGNAL(focusZonesChanged()), SLOT(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() QDeclarativeCameraFocus::~QDeclarativeCameraFocus()
...@@ -160,8 +169,30 @@ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const ...@@ -160,8 +169,30 @@ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const
return QDeclarativeCameraFocus::FocusMode(int(m_focus->focusMode())); return QDeclarativeCameraFocus::FocusMode(int(m_focus->focusMode()));
} }
/*!
\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 \qmlmethod bool QtMultimedia::CameraFocus::isFocusModeSupported(mode) const
\obsolete
Returns true if the supplied \a mode is a supported focus mode, and Returns true if the supplied \a mode is a supported focus mode, and
false otherwise. false otherwise.
...@@ -170,6 +201,7 @@ bool QDeclarativeCameraFocus::isFocusModeSupported(QDeclarativeCameraFocus::Focu ...@@ -170,6 +201,7 @@ bool QDeclarativeCameraFocus::isFocusModeSupported(QDeclarativeCameraFocus::Focu
{ {
return m_focus->isFocusModeSupported(QCameraFocus::FocusModes(int(mode))); return m_focus->isFocusModeSupported(QCameraFocus::FocusModes(int(mode)));
} }
#endif
void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCameraFocus::FocusMode mode) void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCameraFocus::FocusMode mode)
{ {
...@@ -220,6 +252,26 @@ QDeclarativeCameraFocus::FocusPointMode QDeclarativeCameraFocus::focusPointMode( ...@@ -220,6 +252,26 @@ QDeclarativeCameraFocus::FocusPointMode QDeclarativeCameraFocus::focusPointMode(
return QDeclarativeCameraFocus::FocusPointMode(m_focus->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) void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPointMode mode)
{ {
if (mode != focusPointMode()) { if (mode != focusPointMode()) {
...@@ -228,8 +280,10 @@ void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPo ...@@ -228,8 +280,10 @@ void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPo
} }
} }
#if QT_DEPRECATED_SINCE(5, 10)
/*! /*!
\qmlmethod bool QtMultimedia::CameraFocus::isFocusPointModeSupported(mode) const \qmlmethod bool QtMultimedia::CameraFocus::isFocusPointModeSupported(mode) const
\obsolete
Returns true if the supplied \a mode is a supported focus point mode, and Returns true if the supplied \a mode is a supported focus point mode, and
false otherwise. false otherwise.
...@@ -238,6 +292,8 @@ bool QDeclarativeCameraFocus::isFocusPointModeSupported(QDeclarativeCameraFocus: ...@@ -238,6 +292,8 @@ bool QDeclarativeCameraFocus::isFocusPointModeSupported(QDeclarativeCameraFocus:
{ {
return m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(mode)); return m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(mode));
} }
#endif
/*! /*!
\property QDeclarativeCameraFocus::customFocusPoint \property QDeclarativeCameraFocus::customFocusPoint
......
...@@ -64,8 +64,13 @@ class QDeclarativeCamera; ...@@ -64,8 +64,13 @@ class QDeclarativeCamera;
class QDeclarativeCameraFocus : public QObject class QDeclarativeCameraFocus : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode NOTIFY focusModeChanged) 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(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(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged)
Q_PROPERTY(QObject *focusZones READ focusZones CONSTANT) Q_PROPERTY(QObject *focusZones READ focusZones CONSTANT)
...@@ -91,13 +96,18 @@ public: ...@@ -91,13 +96,18 @@ public:
~QDeclarativeCameraFocus(); ~QDeclarativeCameraFocus();
FocusMode focusMode() const; FocusMode focusMode() const;
QVariantList supportedFocusModes() const;
FocusPointMode focusPointMode() const; FocusPointMode focusPointMode() const;
QPointF customFocusPoint() const; QVariantList supportedFocusPointModes() const;
QPointF customFocusPoint() const;
QAbstractListModel *focusZones() const; QAbstractListModel *focusZones() const;
#if QT_DEPRECATED_SINCE(5, 10)
Q_INVOKABLE bool isFocusModeSupported(FocusMode mode) const; Q_INVOKABLE bool isFocusModeSupported(FocusMode mode) const;
Q_INVOKABLE bool isFocusPointModeSupported(FocusPointMode mode) const; Q_INVOKABLE bool isFocusPointModeSupported(FocusPointMode mode) const;
#endif
public Q_SLOTS: public Q_SLOTS:
void setFocusMode(FocusMode); void setFocusMode(FocusMode);
...@@ -106,7 +116,9 @@ public Q_SLOTS: ...@@ -106,7 +116,9 @@ public Q_SLOTS:
Q_SIGNALS: Q_SIGNALS:
void focusModeChanged(FocusMode); void focusModeChanged(FocusMode);
void supportedFocusModesChanged();
void focusPointModeChanged(FocusPointMode); void focusPointModeChanged(FocusPointMode);
void supportedFocusPointModesChanged();
void customFocusPointChanged(const QPointF &); void customFocusPointChanged(const QPointF &);
private Q_SLOTS: private Q_SLOTS:
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment