36 QML_NAMED_ELEMENT(PositionSource)
37 QML_ADDED_IN_VERSION(5, 0)
39 Q_PROPERTY(QDeclarativePosition *position READ position NOTIFY positionChanged
40 BINDABLE bindablePosition)
41 Q_PROPERTY(
bool active READ isActive WRITE setActive NOTIFY activeChanged
42 BINDABLE bindableActive)
43 Q_PROPERTY(
bool valid READ isValid NOTIFY validityChanged BINDABLE bindableIsValid)
44 Q_PROPERTY(
int updateInterval READ updateInterval WRITE setUpdateInterval
45 NOTIFY updateIntervalChanged)
46 Q_PROPERTY(PositioningMethods supportedPositioningMethods READ supportedPositioningMethods
47 NOTIFY supportedPositioningMethodsChanged
48 BINDABLE bindableSupportedPositioningMethods)
49 Q_PROPERTY(PositioningMethods preferredPositioningMethods READ preferredPositioningMethods
50 WRITE setPreferredPositioningMethods NOTIFY preferredPositioningMethodsChanged)
51 Q_PROPERTY(SourceError sourceError READ sourceError NOTIFY sourceErrorChanged
52 BINDABLE bindableSourceError)
53 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged BINDABLE bindableName)
54 Q_PROPERTY(QQmlListProperty<QDeclarativePluginParameter> parameters READ parameters REVISION(5, 14))
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_ENUM(PositioningMethod)
68 Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod)
69 Q_FLAG(PositioningMethods)
72 AccessError = QGeoPositionInfoSource::AccessError,
73 ClosedError = QGeoPositionInfoSource::ClosedError,
74 UnknownSourceError = QGeoPositionInfoSource::UnknownSourceError,
75 NoError = QGeoPositionInfoSource::NoError,
76 UpdateTimeoutError = QGeoPositionInfoSource::UpdateTimeoutError,
80 QDeclarativePositionSource();
81 ~QDeclarativePositionSource();
82 void setUpdateInterval(
int updateInterval);
83 void setActive(
bool active);
84 void setPreferredPositioningMethods(PositioningMethods methods);
87 void setName(
const QString &name);
89 int updateInterval()
const;
90 bool isActive()
const;
92 QDeclarativePosition *position();
93 PositioningMethods supportedPositioningMethods()
const;
94 PositioningMethods preferredPositioningMethods()
const;
95 SourceError sourceError()
const;
96 QGeoPositionInfoSource *positionSource()
const;
97 QQmlListProperty<QDeclarativePluginParameter> parameters();
98 QVariantMap parameterMap()
const;
101 void classBegin() override { }
102 void componentComplete() override;
104 Q_REVISION(5, 14) Q_INVOKABLE
bool setBackendProperty(
const QString &name,
const QVariant &value);
105 Q_REVISION(5, 14) Q_INVOKABLE QVariant backendProperty(
const QString &name)
const;
107 QBindable<PositioningMethods> bindableSupportedPositioningMethods()
const;
108 QBindable<SourceError> bindableSourceError()
const;
109 QBindable<
bool> bindableIsValid()
const;
110 QBindable<QString> bindableName();
111 QBindable<QDeclarativePosition *> bindablePosition()
const;
112 QBindable<
bool> bindableActive();
115 void update(
int timeout = 0);
120 void positionChanged();
121 void activeChanged();
122 void updateIntervalChanged();
123 void supportedPositioningMethodsChanged();
124 void preferredPositioningMethodsChanged();
125 void sourceErrorChanged();
127 void validityChanged();
130 void positionUpdateReceived(
const QGeoPositionInfo &update);
131 void sourceErrorReceived(
const QGeoPositionInfoSource::Error error);
132 void onParameterInitialized();
133 void notifySupportedPositioningMethodsChanged();
136 void setPosition(
const QGeoPositionInfo &pi);
137 void setSource(QGeoPositionInfoSource *source);
138 bool parametersReady();
139 void tryAttach(
const QString &name,
bool useFallback =
true);
141 static void parameter_append(QQmlListProperty<QDeclarativePluginParameter> *prop, QDeclarativePluginParameter *mapObject);
142 static qsizetype parameter_count(QQmlListProperty<QDeclarativePluginParameter> *prop);
143 static QDeclarativePluginParameter *parameter_at(QQmlListProperty<QDeclarativePluginParameter> *prop, qsizetype index);
144 static void parameter_clear(QQmlListProperty<QDeclarativePluginParameter> *prop);
146 bool isValidActualComputation()
const;
147 PositioningMethods supportedMethodsActualComputation()
const;
151 QGeoPositionInfoSource *m_positionSource =
nullptr;
152 PositioningMethods m_preferredPositioningMethods = AllPositioningMethods;
153 int m_updateInterval = 0;
154 QList<QDeclarativePluginParameter *> m_parameters;
156 Q_OBJECT_COMPAT_PROPERTY(QDeclarativePositionSource, QString, m_sourceName,
157 &QDeclarativePositionSource::setName,
158 &QDeclarativePositionSource::nameChanged)
160 Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QDeclarativePositionSource,
bool, m_active,
161 &QDeclarativePositionSource::setActive,
162 &QDeclarativePositionSource::activeChanged,
false)
164 Q_OBJECT_BINDABLE_PROPERTY(QDeclarativePositionSource, QDeclarativePosition *, m_position)
166 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QDeclarativePositionSource, SourceError, m_sourceError,
169 Q_OBJECT_COMPUTED_PROPERTY(QDeclarativePositionSource, PositioningMethods,
170 m_supportedPositioningMethods,
171 &QDeclarativePositionSource::supportedMethodsActualComputation)
173 Q_OBJECT_COMPUTED_PROPERTY(QDeclarativePositionSource,
bool, m_isValid,
174 &QDeclarativePositionSource::isValidActualComputation)
176 quint8 m_singleUpdate : 1;
177 quint8 m_regularUpdates : 1;
178 quint8 m_componentComplete : 1;
179 quint8 m_parametersInitialized : 1;
180 quint8 m_startRequested : 1;
181 quint8 m_defaultSourceUsed : 1;