diff options
author | Alex Blasche <alexander.blasche@qt.io> | 2018-12-14 15:11:37 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@qt.io> | 2018-12-21 10:48:26 +0000 |
commit | 550abd7159306e5e68f3b73f70319d9fa19bd186 (patch) | |
tree | ad8d7dfc4c67477d569aa87d7d3089635600c4ba /src | |
parent | a4442abdc034de7984e003c821939ce1b1976593 (diff) | |
download | qtlocation-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/positioning/qgeocoordinate.cpp | 23 |
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; |