From 997e06d80c095ac994391bfb5d69c5ec9a52a11f Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Fri, 11 Oct 2013 16:43:21 +0200 Subject: Add proper version to QtPositioning and its QML API. The QML API remains available under 5.0 though. Change-Id: I037b82e5b12825db610e8458d6c82122ecde4f44 Reviewed-by: Erik Mattsson Reviewed-by: Jerome Pasion Reviewed-by: Alex Blasche --- src/imports/positioning/positioning.cpp | 34 ++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/imports/positioning/positioning.cpp') diff --git a/src/imports/positioning/positioning.cpp b/src/imports/positioning/positioning.cpp index 031b06b2..0804a8ce 100644 --- a/src/imports/positioning/positioning.cpp +++ b/src/imports/positioning/positioning.cpp @@ -92,26 +92,38 @@ class QLocationDeclarativeModule: public QQmlExtensionPlugin public: virtual void registerTypes(const char *uri) { - if (QLatin1String(uri) == QLatin1String("QtPositioning")) { + if (QLatin1String(uri) == QStringLiteral("QtPositioning")) { // @uri QtPositioning 5.0 - qmlRegisterSingletonType(uri, 5, 0, "QtPositioning", singleton_type_factory); - - QQml_addValueTypeProvider(getValueTypeProvider()); - qmlRegisterValueTypeEnums(uri, 5, 0, "GeoShape"); - - qmlRegisterType(uri, 5, 0, "Position"); - qmlRegisterType(uri, 5, 0, "PositionSource"); - qmlRegisterType(uri, 5, 0, "Address"); - - qmlRegisterType(uri, 5, 0, "Location"); + int major = 5; + int minor = 0; qRegisterMetaType("QGeoCoordinate"); qRegisterMetaType("QGeoAddress"); qRegisterMetaType("QGeoRectangle"); qRegisterMetaType("QGeoCircle"); qRegisterMetaType("QGeoLocation"); + + QQml_addValueTypeProvider(getValueTypeProvider()); + + // Register the 5.0 types + // 5.0 is silent and not advertised + qmlRegisterSingletonType(uri, major, minor, "QtPositioning", singleton_type_factory); + qmlRegisterValueTypeEnums(uri, major, minor, "GeoShape"); + qmlRegisterType(uri, major, minor, "Position"); + qmlRegisterType(uri, major, minor, "PositionSource"); + qmlRegisterType(uri, major, minor, "Address"); + qmlRegisterType(uri, major, minor, "Location"); + + // Register the 5.2 types + minor = 2; + qmlRegisterSingletonType(uri, major, minor, "QtPositioning", singleton_type_factory); + qmlRegisterValueTypeEnums(uri, major, minor, "GeoShape"); + qmlRegisterType(uri, major, minor, "Position"); + qmlRegisterType(uri, major, minor, "PositionSource"); + qmlRegisterType(uri, major, minor, "Address"); + qmlRegisterType(uri, major, minor, "Location"); } else { qDebug() << "Unsupported URI given to load positioning QML plugin: " << QLatin1String(uri); } -- cgit v1.2.1