summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJochen Seemann <seemann.jochen@gmail.com>2017-03-27 19:50:38 +0200
committerJochen Seemann <seemann.jochen@gmail.com>2018-02-01 19:37:33 +0000
commit1e3c4234a9a505d548db4a3dbc0ebabd5bbe8ed3 (patch)
tree059cf659116447572e857d3c2e4f70e64cb8f798
parent009a9d4b5d32fa73aca6cabe7d45d6a9bbae0038 (diff)
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: Christian Stromme <christian.stromme@qt.io>
-rw-r--r--src/imports/multimedia/multimedia.cpp2
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus.cpp56
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus_p.h14
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: