summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2018-12-14 15:11:37 +0100
committerAlex Blasche <alexander.blasche@qt.io>2018-12-21 10:48:26 +0000
commit550abd7159306e5e68f3b73f70319d9fa19bd186 (patch)
treead8d7dfc4c67477d569aa87d7d3089635600c4ba
parenta4442abdc034de7984e003c821939ce1b1976593 (diff)
downloadqtlocation-550abd7159306e5e68f3b73f70319d9fa19bd186.tar.gz
Enable QVariant::save for QGeoCoordinate
Fixes: QTBUG-62682 Fixes: QTBUG-68331 Change-Id: Ibd08934e2b6da06a6b6ff24419e53b87fb2eaa20 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r--src/positioning/qgeocoordinate.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/positioning/qgeocoordinate.cpp b/src/positioning/qgeocoordinate.cpp
index 80904d7c..414125ca 100644
--- a/src/positioning/qgeocoordinate.cpp
+++ b/src/positioning/qgeocoordinate.cpp
@@ -44,11 +44,23 @@
#include <QHash>
#include <QDataStream>
#include <QDebug>
+#include <QMetaType>
#include <qnumeric.h>
#include <qmath.h>
QT_BEGIN_NAMESPACE
+#ifndef QT_NO_DATASTREAM
+struct CoordinateStreamOperators
+{
+ CoordinateStreamOperators()
+ {
+ qRegisterMetaTypeStreamOperators<QGeoCoordinate>();
+ }
+};
+Q_GLOBAL_STATIC(CoordinateStreamOperators, initStreamOperators);
+#endif
+
static const double qgeocoordinate_EARTH_MEAN_RADIUS = 6371.0072;
@@ -201,6 +213,9 @@ QGeoMercatorCoordinatePrivate::~QGeoMercatorCoordinatePrivate()
QGeoCoordinate::QGeoCoordinate()
: d(new QGeoCoordinatePrivate)
{
+#ifndef QT_NO_DATASTREAM
+ initStreamOperators();
+#endif
}
/*!
@@ -215,6 +230,10 @@ QGeoCoordinate::QGeoCoordinate()
QGeoCoordinate::QGeoCoordinate(double latitude, double longitude)
: d(new QGeoCoordinatePrivate)
{
+#ifndef QT_NO_DATASTREAM
+ initStreamOperators();
+#endif
+
if (QLocationUtils::isValidLat(latitude) && QLocationUtils::isValidLong(longitude)) {
d->lat = latitude;
d->lng = longitude;
@@ -236,6 +255,10 @@ QGeoCoordinate::QGeoCoordinate(double latitude, double longitude)
QGeoCoordinate::QGeoCoordinate(double latitude, double longitude, double altitude)
: d(new QGeoCoordinatePrivate)
{
+#ifndef QT_NO_DATASTREAM
+ initStreamOperators();
+#endif
+
if (QLocationUtils::isValidLat(latitude) && QLocationUtils::isValidLong(longitude)) {
d->lat = latitude;
d->lng = longitude;