35 QML_NAMED_ELEMENT(PositionSource)
36 QML_ADDED_IN_VERSION(5, 0)
38 Q_PROPERTY(QDeclarativePosition *position READ position NOTIFY positionChanged
39 BINDABLE bindablePosition)
40 Q_PROPERTY(
bool active READ isActive WRITE setActive NOTIFY activeChanged
41 BINDABLE bindableActive)
42 Q_PROPERTY(
bool valid READ isValid NOTIFY validityChanged BINDABLE bindableIsValid)
43 Q_PROPERTY(
int updateInterval READ updateInterval WRITE setUpdateInterval
44 NOTIFY updateIntervalChanged)
45 Q_PROPERTY(PositioningMethods supportedPositioningMethods READ supportedPositioningMethods
46 NOTIFY supportedPositioningMethodsChanged
47 BINDABLE bindableSupportedPositioningMethods)
48 Q_PROPERTY(PositioningMethods preferredPositioningMethods READ preferredPositioningMethods
49 WRITE setPreferredPositioningMethods NOTIFY preferredPositioningMethodsChanged)
50 Q_PROPERTY(SourceError sourceError READ sourceError NOTIFY sourceErrorChanged
51 BINDABLE bindableSourceError)
52 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged BINDABLE bindableName)
53 Q_PROPERTY(QQmlListProperty<QDeclarativePluginParameter> parameters READ parameters REVISION(5, 14))
54 Q_ENUMS(PositioningMethod)
56 Q_CLASSINFO(
"DefaultProperty",
"parameters")
57 Q_INTERFACES(QQmlParserStatus)
60 enum PositioningMethod {
61 NoPositioningMethods = QGeoPositionInfoSource::NoPositioningMethods,
62 SatellitePositioningMethods = QGeoPositionInfoSource::SatellitePositioningMethods,
63 NonSatellitePositioningMethods = QGeoPositionInfoSource::NonSatellitePositioningMethods,
64 AllPositioningMethods = QGeoPositionInfoSource::AllPositioningMethods
67 Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod)
68 Q_FLAGS(PositioningMethods)
71 AccessError = QGeoPositionInfoSource::AccessError,
72 ClosedError = QGeoPositionInfoSource::ClosedError,
73 UnknownSourceError = QGeoPositionInfoSource::UnknownSourceError,
74 NoError = QGeoPositionInfoSource::NoError,
75 UpdateTimeoutError = QGeoPositionInfoSource::UpdateTimeoutError,
79 QDeclarativePositionSource();
80 ~QDeclarativePositionSource();
81 void setUpdateInterval(
int updateInterval);
82 void setActive(
bool active);
83 void setPreferredPositioningMethods(PositioningMethods methods);
86 void setName(
const QString &name);
88 int updateInterval()
const;
89 bool isActive()
const;
91 QDeclarativePosition *position();
92 PositioningMethods supportedPositioningMethods()
const;
93 PositioningMethods preferredPositioningMethods()
const;
94 SourceError sourceError()
const;
95 QGeoPositionInfoSource *positionSource()
const;
96 QQmlListProperty<QDeclarativePluginParameter> parameters();
97 QVariantMap parameterMap()
const;
100 void classBegin() override { }
101 void componentComplete() override;
103 Q_REVISION(5, 14) Q_INVOKABLE
bool setBackendProperty(
const QString &name,
const QVariant &value);
104 Q_REVISION(5, 14) Q_INVOKABLE QVariant backendProperty(
const QString &name)
const;
106 QBindable<PositioningMethods> bindableSupportedPositioningMethods()
const;
107 QBindable<SourceError> bindableSourceError()
const;
108 QBindable<
bool> bindableIsValid()
const;
109 QBindable<QString> bindableName();
110 QBindable<QDeclarativePosition *> bindablePosition()
const;
111 QBindable<
bool> bindableActive();
114 void update(
int timeout = 0);
119 void positionChanged();
120 void activeChanged();
121 void updateIntervalChanged();
122 void supportedPositioningMethodsChanged();
123 void preferredPositioningMethodsChanged();
124 void sourceErrorChanged();
126 void validityChanged();
129 void positionUpdateReceived(
const QGeoPositionInfo &update);
130 void sourceErrorReceived(
const QGeoPositionInfoSource::Error error);
131 void onParameterInitialized();
132 void notifySupportedPositioningMethodsChanged();
135 void setPosition(
const QGeoPositionInfo &pi);
136 void setSource(QGeoPositionInfoSource *source);
137 bool parametersReady();
138 void tryAttach(
const QString &name,
bool useFallback =
true);
140 static void parameter_append(QQmlListProperty<QDeclarativePluginParameter> *prop, QDeclarativePluginParameter *mapObject);
141 static qsizetype parameter_count(QQmlListProperty<QDeclarativePluginParameter> *prop);
142 static QDeclarativePluginParameter *parameter_at(QQmlListProperty<QDeclarativePluginParameter> *prop, qsizetype index);
143 static void parameter_clear(QQmlListProperty<QDeclarativePluginParameter> *prop);
145 bool isValidActualComputation()
const;
146 PositioningMethods supportedMethodsActualComputation()
const;
150 QGeoPositionInfoSource *m_positionSource =
nullptr;
151 PositioningMethods m_preferredPositioningMethods = AllPositioningMethods;
152 int m_updateInterval = 0;
153 QList<QDeclarativePluginParameter *> m_parameters;
155 Q_OBJECT_COMPAT_PROPERTY(QDeclarativePositionSource, QString, m_sourceName,
156 &QDeclarativePositionSource::setName,
157 &QDeclarativePositionSource::nameChanged)
159 Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QDeclarativePositionSource,
bool, m_active,
160 &QDeclarativePositionSource::setActive,
161 &QDeclarativePositionSource::activeChanged,
false)
163 Q_OBJECT_BINDABLE_PROPERTY(QDeclarativePositionSource, QDeclarativePosition *, m_position)
165 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QDeclarativePositionSource, SourceError, m_sourceError,
168 Q_OBJECT_COMPUTED_PROPERTY(QDeclarativePositionSource, PositioningMethods,
169 m_supportedPositioningMethods,
170 &QDeclarativePositionSource::supportedMethodsActualComputation)
172 Q_OBJECT_COMPUTED_PROPERTY(QDeclarativePositionSource,
bool, m_isValid,
173 &QDeclarativePositionSource::isValidActualComputation)
175 quint8 m_singleUpdate : 1;
176 quint8 m_regularUpdates : 1;
177 quint8 m_componentComplete : 1;
178 quint8 m_parametersInitialized : 1;
179 quint8 m_startRequested : 1;
180 quint8 m_defaultSourceUsed : 1;