summaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-02-26 12:43:04 +0100
committerLars Knoll <lars.knoll@qt.io>2021-03-16 07:35:45 +0000
commit95dcadf5de41d5b2f385c5bdf547ee673fe83dff (patch)
tree692fd29a5fa4749a312d39cda02d81b06355abe6 /src/imports
parentf610426bf5d12f83a64ffed3b991d3c7e228b2be (diff)
Get rid of focus zones
This wasn't ever really supported on any platform (Android got closest...). Instead keep a simpler API with a single point of interest for focus handling that can be implemented on most backends. Change-Id: I3fb24d04a809c71780b13865bac228d41d0abddc Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/multimedia/plugins.qmltypes9
-rw-r--r--src/imports/multimedia/qdeclarativecamera_p.h7
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus.cpp117
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus_p.h30
4 files changed, 2 insertions, 161 deletions
diff --git a/src/imports/multimedia/plugins.qmltypes b/src/imports/multimedia/plugins.qmltypes
index 96534656c..51fa76499 100644
--- a/src/imports/multimedia/plugins.qmltypes
+++ b/src/imports/multimedia/plugins.qmltypes
@@ -616,14 +616,6 @@ Module {
}
}
Enum {
- name: "FocusAreaStatus"
- values: {
- "FocusAreaUnused": 1,
- "FocusAreaSelected": 2,
- "FocusAreaFocused": 3
- }
- }
- Enum {
name: "Availability"
values: {
"Available": 0,
@@ -980,7 +972,6 @@ Module {
Property { name: "focusPointMode"; type: "FocusPointMode" }
Property { name: "supportedFocusPointModes"; revision: 1; type: "QVariantList"; isReadonly: true }
Property { name: "customFocusPoint"; type: "QPointF" }
- Property { name: "focusZones"; type: "QObject"; isReadonly: true; isPointer: true }
Signal {
name: "focusModeChanged"
Parameter { type: "FocusMode" }
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h
index 4db93f13f..34c810adc 100644
--- a/src/imports/multimedia/qdeclarativecamera_p.h
+++ b/src/imports/multimedia/qdeclarativecamera_p.h
@@ -111,7 +111,6 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus
Q_ENUMS(FocusMode)
Q_ENUMS(FocusPointMode)
- Q_ENUMS(FocusAreaStatus)
public:
enum Position {
@@ -187,12 +186,6 @@ public:
FocusPointCustom = QCameraFocus::FocusPointCustom
};
- enum FocusAreaStatus {
- FocusAreaUnused = QCameraFocusZone::Unused,
- FocusAreaSelected = QCameraFocusZone::Selected,
- FocusAreaFocused = QCameraFocusZone::Focused
- };
-
QDeclarativeCamera(QObject *parent = 0);
~QDeclarativeCamera();
diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp
index 5e1d5ee6e..11e106078 100644
--- a/src/imports/multimedia/qdeclarativecamerafocus.cpp
+++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp
@@ -96,11 +96,7 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren
QObject(parent)
{
m_focus = camera->focus();
- m_focusZones = new FocusZonesModel(this);
- 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) {
@@ -122,7 +118,7 @@ QDeclarativeCameraFocus::~QDeclarativeCameraFocus() = default;
for example QCameraFocus::MacroFocus + QCameraFocus::ContinuousFocus.
In automatic focusing modes, the \l focusPointMode
- and \l focusZones properties provide information and control
+ property provides information and control
over how automatic focusing is performed.
*/
@@ -159,7 +155,7 @@ QDeclarativeCameraFocus::~QDeclarativeCameraFocus() = default;
for example Camera.FocusMacro + Camera.FocusContinuous.
In automatic focusing modes, the \l focusPointMode property
- and \l focusZones property provide information and control
+ provides information and control
over how automatic focusing is performed.
*/
QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const
@@ -296,115 +292,6 @@ void QDeclarativeCameraFocus::setCustomFocusPoint(const QPointF &point)
emit customFocusPointChanged(customFocusPoint());
}
}
-/*!
- \property QDeclarativeCameraFocus::focusZones
-
- This property holds the list of current camera focus zones,
- each including \c area specified in the same coordinates as \l customFocusPoint, and zone \c status as one of the following values:
- \table
- \header \li Value \li Description
- \row \li QCameraFocusZone::Unused \li This focus point area is currently unused in autofocusing.
- \row \li QCameraFocusZone::Selected \li This focus point area is used in autofocusing, but is not in focus.
- \row \li QCameraFocusZone::Focused \li This focus point is used in autofocusing, and is in focus.
- \endtable
-*/
-/*!
- \qmlproperty list<focusZone> QtMultimedia::CameraFocus::focusZones
-
- This property holds the list of current camera focus zones,
- each including \c area specified in the same coordinates as \l customFocusPoint,
- and zone \c status as one of the following values:
-
- \table
- \header \li Value \li Description
- \row \li Camera.FocusAreaUnused \li This focus point area is currently unused in autofocusing.
- \row \li Camera.FocusAreaSelected \li This focus point area is used in autofocusing, but is not in focus.
- \row \li Camera.FocusAreaFocused \li This focus point is used in autofocusing, and is in focus.
- \endtable
-
- \qml
-
- VideoOutput {
- id: viewfinder
- source: camera
-
- //display focus areas on camera viewfinder:
- Repeater {
- model: camera.focus.focusZones
-
- Rectangle {
- border {
- width: 2
- color: status == Camera.FocusAreaFocused ? "green" : "white"
- }
- color: "transparent"
-
- // Map from the relative, normalized frame coordinates
- property variant mappedRect: viewfinder.mapNormalizedRectToItem(area);
-
- x: mappedRect.x
- y: mappedRect.y
- width: mappedRect.width
- height: mappedRect.height
- }
- }
- }
- \endqml
-*/
-
-QAbstractListModel *QDeclarativeCameraFocus::focusZones() const
-{
- return m_focusZones;
-}
-
-/*! \internal */
-void QDeclarativeCameraFocus::updateFocusZones()
-{
- m_focusZones->setFocusZones(m_focus->focusZones());
-}
-
-
-FocusZonesModel::FocusZonesModel(QObject *parent)
- :QAbstractListModel(parent)
-{
-}
-
-int FocusZonesModel::rowCount(const QModelIndex &parent) const
-{
- if (parent == QModelIndex())
- return m_focusZones.count();
-
- return 0;
-}
-
-QVariant FocusZonesModel::data(const QModelIndex &index, int role) const
-{
- if (index.row() < 0 || index.row() > m_focusZones.count())
- return QVariant();
-
- QCameraFocusZone zone = m_focusZones.value(index.row());
-
- if (role == StatusRole)
- return zone.status();
-
- if (role == AreaRole)
- return zone.area();
-
- return QVariant();
-}
-
-QHash<int,QByteArray> FocusZonesModel::roleNames() const
-{
- return {{StatusRole, QByteArrayLiteral("status")},
- {AreaRole, QByteArrayLiteral("area")}};
-}
-
-void FocusZonesModel::setFocusZones(const QCameraFocusZoneList &zones)
-{
- beginResetModel();
- m_focusZones = zones;
- endResetModel();
-}
QT_END_NAMESPACE
diff --git a/src/imports/multimedia/qdeclarativecamerafocus_p.h b/src/imports/multimedia/qdeclarativecamerafocus_p.h
index df2514f13..4d0d13ef8 100644
--- a/src/imports/multimedia/qdeclarativecamerafocus_p.h
+++ b/src/imports/multimedia/qdeclarativecamerafocus_p.h
@@ -58,7 +58,6 @@
QT_BEGIN_NAMESPACE
-class FocusZonesModel;
class QDeclarativeCamera;
class QDeclarativeCameraFocus : public QObject
@@ -72,7 +71,6 @@ class QDeclarativeCameraFocus : public QObject
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)
Q_ENUMS(FocusMode)
Q_ENUMS(FocusPointMode)
@@ -102,7 +100,6 @@ public:
QVariantList supportedFocusPointModes() const;
QPointF customFocusPoint() const;
- QAbstractListModel *focusZones() const;
public Q_SLOTS:
void setFocusMode(FocusMode);
@@ -116,40 +113,13 @@ Q_SIGNALS:
void supportedFocusPointModesChanged();
void customFocusPointChanged(const QPointF &);
-private Q_SLOTS:
- void updateFocusZones();
-
private:
friend class QDeclarativeCamera;
QDeclarativeCameraFocus(QCamera *camera, QObject *parent = 0);
QCameraFocus *m_focus;
- FocusZonesModel *m_focusZones;
-};
-
-class FocusZonesModel : public QAbstractListModel
-{
-Q_OBJECT
-public:
- enum FocusZoneRoles {
- StatusRole = Qt::UserRole + 1,
- AreaRole
- };
-
- FocusZonesModel(QObject *parent = 0);
-
- int rowCount(const QModelIndex &parent = QModelIndex()) const override;
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
- QHash<int,QByteArray> roleNames() const override;
-
-public slots:
- void setFocusZones(const QCameraFocusZoneList &zones);
-
-private:
- QCameraFocusZoneList m_focusZones;
};
-
QT_END_NAMESPACE
QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeCameraFocus))