122
123
124
125
126
127
128
129
130
133
134
135
136
137
140
141
142
143
144
147
148
149
150
153
154
155
156
157bool QGeoPositionInfo::isValid()
const
159 return d->timestamp.isValid() && d->coord.isValid();
163
164
165
166
167
168
169void QGeoPositionInfo::setTimestamp(
const QDateTime ×tamp)
172 d->timestamp = timestamp;
176
177
178
179
180
181
182QDateTime QGeoPositionInfo::timestamp()
const
188
189
190
191
192void QGeoPositionInfo::setCoordinate(
const QGeoCoordinate &coordinate)
195 d->coord = coordinate;
199
200
201
202
203
204
205QGeoCoordinate QGeoPositionInfo::coordinate()
const
211
212
213
214
215void QGeoPositionInfo::setAttribute(Attribute attribute, qreal value)
218 d->doubleAttribs[attribute] = value;
222
223
224
225
226
227
228
229
230
231qreal QGeoPositionInfo::attribute(Attribute attribute)
const
233 return d->doubleAttribs.value(attribute, qQNaN());
237
238
239void QGeoPositionInfo::removeAttribute(Attribute attribute)
241 const auto it = d->doubleAttribs.constFind(attribute);
242 if (it != d->doubleAttribs.cend()) {
244 d->doubleAttribs.erase(it);
249
250
251
252bool QGeoPositionInfo::hasAttribute(Attribute attribute)
const
254 return d->doubleAttribs.contains(attribute);
258
259
260void QGeoPositionInfo::detach()
265 d =
new QGeoPositionInfoPrivate;
268bool QGeoPositionInfo::equals(
const QGeoPositionInfo &lhs,
const QGeoPositionInfo &rhs)
270 return *lhs.d == *rhs.d;
273#ifndef QT_NO_DEBUG_STREAM
274QDebug QGeoPositionInfo::debugStreaming(QDebug dbg,
const QGeoPositionInfo &info)
276 QDebugStateSaver saver(dbg);
277 dbg.nospace() <<
"QGeoPositionInfo(" << info.d->timestamp;
278 dbg.nospace() <<
", ";
279 dbg << info.d->coord;
281 QList<QGeoPositionInfo::Attribute> attribs = info.d->doubleAttribs.keys();
282 std::stable_sort(attribs.begin(), attribs.end());
283 for (
int i = 0; i < attribs.size(); ++i) {
285 switch (attribs[i]) {
286 case QGeoPositionInfo::Direction:
289 case QGeoPositionInfo::GroundSpeed:
290 dbg <<
"GroundSpeed=";
292 case QGeoPositionInfo::VerticalSpeed:
293 dbg <<
"VerticalSpeed=";
295 case QGeoPositionInfo::MagneticVariation:
296 dbg <<
"MagneticVariation=";
298 case QGeoPositionInfo::HorizontalAccuracy:
299 dbg <<
"HorizontalAccuracy=";
301 case QGeoPositionInfo::VerticalAccuracy:
302 dbg <<
"VerticalAccuracy=";
304 case QGeoPositionInfo::DirectionAccuracy:
305 dbg <<
"DirectionAccuracy=";
308 dbg << info.d->doubleAttribs[attribs[i]];
316#ifndef QT_NO_DATASTREAM
318
319
320
321
322
323
324QDataStream &QGeoPositionInfo::dataStreamOut(QDataStream &stream, QGeoPositionInfo::Attribute attr)
326 return stream << qint32(attr);
330
331
332
333
334
335
336QDataStream &QGeoPositionInfo::dataStreamIn(QDataStream &stream, QGeoPositionInfo::Attribute &attr)
340 attr =
static_cast<QGeoPositionInfo::Attribute>(a);
345
346
347
348
349
350
352QDataStream &QGeoPositionInfo::dataStreamOut(QDataStream &stream,
const QGeoPositionInfo &info)
354 stream << info.d->timestamp;
355 stream << info.d->coord;
356 stream << info.d->doubleAttribs;
361
362
363
364
365
366
367
369QDataStream &QGeoPositionInfo::dataStreamIn(QDataStream &stream, QGeoPositionInfo &info)
371 stream >> info.d->timestamp;
372 stream >> info.d->coord;
373 stream >> info.d->doubleAttribs;
378QGeoPositionInfoPrivate::QGeoPositionInfoPrivate() : QSharedData()
382QGeoPositionInfoPrivate::QGeoPositionInfoPrivate(
const QGeoPositionInfoPrivate &other)
383 : QSharedData(other),
384 timestamp(other.timestamp),
386 doubleAttribs(other.doubleAttribs)
390QGeoPositionInfoPrivate::~QGeoPositionInfoPrivate()
395bool QGeoPositionInfoPrivate::operator==(
const QGeoPositionInfoPrivate &other)
const
397 return timestamp == other.timestamp
398 && coord == other.coord
399 && doubleAttribs == other.doubleAttribs;
402QGeoPositionInfoPrivate *QGeoPositionInfoPrivate::get(
const QGeoPositionInfo &info)
404 return info.d.data();
407size_t qHash(
const QGeoPositionInfo &key, size_t seed)
noexcept
409 return qHashMulti(seed, key.d->coord);