121
122
123
124
125
126
127
128
129
132
133
134
135
136
139
140
141
142
143
146
147
148
149
152
153
154
155
156bool QGeoPositionInfo::isValid()
const
158 return d->timestamp.isValid() && d->coord.isValid();
162
163
164
165
166
167
168void QGeoPositionInfo::setTimestamp(
const QDateTime ×tamp)
171 d->timestamp = timestamp;
175
176
177
178
179
180
181QDateTime QGeoPositionInfo::timestamp()
const
187
188
189
190
191void QGeoPositionInfo::setCoordinate(
const QGeoCoordinate &coordinate)
194 d->coord = coordinate;
198
199
200
201
202
203
204QGeoCoordinate QGeoPositionInfo::coordinate()
const
210
211
212
213
214void QGeoPositionInfo::setAttribute(Attribute attribute, qreal value)
217 d->doubleAttribs[attribute] = value;
221
222
223
224
225
226
227
228
229
230qreal QGeoPositionInfo::attribute(Attribute attribute)
const
232 return d->doubleAttribs.value(attribute, qQNaN());
236
237
238void QGeoPositionInfo::removeAttribute(Attribute attribute)
240 const auto it = d->doubleAttribs.constFind(attribute);
241 if (it != d->doubleAttribs.cend()) {
243 d->doubleAttribs.erase(it);
248
249
250
251bool QGeoPositionInfo::hasAttribute(Attribute attribute)
const
253 return d->doubleAttribs.contains(attribute);
257
258
259void QGeoPositionInfo::detach()
264 d =
new QGeoPositionInfoPrivate;
267bool QGeoPositionInfo::equals(
const QGeoPositionInfo &lhs,
const QGeoPositionInfo &rhs)
269 return *lhs.d == *rhs.d;
272#ifndef QT_NO_DEBUG_STREAM
273QDebug QGeoPositionInfo::debugStreaming(QDebug dbg,
const QGeoPositionInfo &info)
275 QDebugStateSaver saver(dbg);
276 dbg.nospace() <<
"QGeoPositionInfo(" << info.d->timestamp;
277 dbg.nospace() <<
", ";
278 dbg << info.d->coord;
280 QList<QGeoPositionInfo::Attribute> attribs = info.d->doubleAttribs.keys();
281 std::stable_sort(attribs.begin(), attribs.end());
282 for (
int i = 0; i < attribs.size(); ++i) {
284 switch (attribs[i]) {
285 case QGeoPositionInfo::Direction:
288 case QGeoPositionInfo::GroundSpeed:
289 dbg <<
"GroundSpeed=";
291 case QGeoPositionInfo::VerticalSpeed:
292 dbg <<
"VerticalSpeed=";
294 case QGeoPositionInfo::MagneticVariation:
295 dbg <<
"MagneticVariation=";
297 case QGeoPositionInfo::HorizontalAccuracy:
298 dbg <<
"HorizontalAccuracy=";
300 case QGeoPositionInfo::VerticalAccuracy:
301 dbg <<
"VerticalAccuracy=";
303 case QGeoPositionInfo::DirectionAccuracy:
304 dbg <<
"DirectionAccuracy=";
307 dbg << info.d->doubleAttribs[attribs[i]];
315#ifndef QT_NO_DATASTREAM
317
318
319
320
321
322
323QDataStream &QGeoPositionInfo::dataStreamOut(QDataStream &stream, QGeoPositionInfo::Attribute attr)
325 return stream << qint32(attr);
329
330
331
332
333
334
335QDataStream &QGeoPositionInfo::dataStreamIn(QDataStream &stream, QGeoPositionInfo::Attribute &attr)
339 attr =
static_cast<QGeoPositionInfo::Attribute>(a);
344
345
346
347
348
349
351QDataStream &QGeoPositionInfo::dataStreamOut(QDataStream &stream,
const QGeoPositionInfo &info)
353 stream << info.d->timestamp;
354 stream << info.d->coord;
355 stream << info.d->doubleAttribs;
360
361
362
363
364
365
366
368QDataStream &QGeoPositionInfo::dataStreamIn(QDataStream &stream, QGeoPositionInfo &info)
370 stream >> info.d->timestamp;
371 stream >> info.d->coord;
372 stream >> info.d->doubleAttribs;
377QGeoPositionInfoPrivate::QGeoPositionInfoPrivate() : QSharedData()
381QGeoPositionInfoPrivate::QGeoPositionInfoPrivate(
const QGeoPositionInfoPrivate &other)
382 : QSharedData(other),
383 timestamp(other.timestamp),
385 doubleAttribs(other.doubleAttribs)
389QGeoPositionInfoPrivate::~QGeoPositionInfoPrivate()
394bool QGeoPositionInfoPrivate::operator==(
const QGeoPositionInfoPrivate &other)
const
396 return timestamp == other.timestamp
397 && coord == other.coord
398 && doubleAttribs == other.doubleAttribs;
401QGeoPositionInfoPrivate *QGeoPositionInfoPrivate::get(
const QGeoPositionInfo &info)
403 return info.d.data();
406size_t qHash(
const QGeoPositionInfo &key, size_t seed)
noexcept
408 return qHashMulti(seed, key.d->coord);