diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-08-12 13:26:05 +0200 |
---|---|---|
committer | Alex Blasche <alexander.blasche@digia.com> | 2014-08-14 09:51:24 +0200 |
commit | 05763575eb166a29073d1805a6fdd22a832cc0aa (patch) | |
tree | b6bc41a24bd49733039186e6519922bdc2a8698e /src/imports/positioning | |
parent | 226f454f8e2a7ba04e11c42e94181e6b33b73bf6 (diff) | |
download | qtlocation-05763575eb166a29073d1805a6fdd22a832cc0aa.tar.gz |
Add magneticVariation and magneticVariationValid property to QML Position
[ChangeLog][QtPositioning][Position] Added magneticVariation and
magneticVariationValid property to the QML Position type
Task-number: QTBUG-39547
Change-Id: I59d0039f2b501701f67404dabef2ab4c62bcb16b
Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com>
Diffstat (limited to 'src/imports/positioning')
-rw-r--r-- | src/imports/positioning/plugins.qmltypes | 36 | ||||
-rw-r--r-- | src/imports/positioning/positioning.cpp | 2 | ||||
-rw-r--r-- | src/imports/positioning/qdeclarativeposition.cpp | 41 | ||||
-rw-r--r-- | src/imports/positioning/qdeclarativeposition_p.h | 9 |
4 files changed, 66 insertions, 22 deletions
diff --git a/src/imports/positioning/plugins.qmltypes b/src/imports/positioning/plugins.qmltypes index bfb76203..a956a786 100644 --- a/src/imports/positioning/plugins.qmltypes +++ b/src/imports/positioning/plugins.qmltypes @@ -4,15 +4,15 @@ import QtQuick.tooling 1.1 // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -notrelocatable QtPositioning 5.3' +// 'qmlplugindump -notrelocatable QtPositioning 5.4' Module { Component { name: "GeoShapeValueType" prototype: "QQmlValueType" - exports: ["QtPositioning/GeoShape 5.0", "QtPositioning/GeoShape 5.2"] + exports: ["QtPositioning/GeoShape 5.0"] isCreatable: false - exportMetaObjectRevisions: [0, 0] + exportMetaObjectRevisions: [0] Enum { name: "ShapeType" values: { @@ -33,13 +33,10 @@ Module { Component { name: "LocationSingleton" prototype: "QObject" - exports: [ - "QtPositioning/QtPositioning 5.0", - "QtPositioning/QtPositioning 5.2" - ] + exports: ["QtPositioning/QtPositioning 5.0"] isCreatable: false isSingleton: true - exportMetaObjectRevisions: [0, 0] + exportMetaObjectRevisions: [0] Method { name: "coordinate"; type: "QGeoCoordinate" } Method { name: "coordinate" @@ -90,8 +87,8 @@ Module { Component { name: "QDeclarativeGeoAddress" prototype: "QObject" - exports: ["QtPositioning/Address 5.0", "QtPositioning/Address 5.2"] - exportMetaObjectRevisions: [0, 0] + exports: ["QtPositioning/Address 5.0"] + exportMetaObjectRevisions: [0] Property { name: "address"; type: "QGeoAddress" } Property { name: "text"; type: "string" } Property { name: "country"; type: "string" } @@ -115,8 +112,8 @@ Module { Component { name: "QDeclarativeGeoLocation" prototype: "QObject" - exports: ["QtPositioning/Location 5.0", "QtPositioning/Location 5.2"] - exportMetaObjectRevisions: [0, 0] + exports: ["QtPositioning/Location 5.0"] + exportMetaObjectRevisions: [0] Property { name: "location"; type: "QGeoLocation" } Property { name: "address"; type: "QDeclarativeGeoAddress"; isPointer: true } Property { name: "coordinate"; type: "QGeoCoordinate" } @@ -127,10 +124,10 @@ Module { prototype: "QObject" exports: [ "QtPositioning/Position 5.0", - "QtPositioning/Position 5.2", - "QtPositioning/Position 5.3" + "QtPositioning/Position 5.3", + "QtPositioning/Position 5.4" ] - exportMetaObjectRevisions: [0, 0, 1] + exportMetaObjectRevisions: [0, 1, 2] Property { name: "latitudeValid"; type: "bool"; isReadonly: true } Property { name: "longitudeValid"; type: "bool"; isReadonly: true } Property { name: "altitudeValid"; type: "bool"; isReadonly: true } @@ -146,6 +143,8 @@ Module { Property { name: "direction"; revision: 1; type: "double"; isReadonly: true } Property { name: "verticalSpeedValid"; revision: 1; type: "bool"; isReadonly: true } Property { name: "verticalSpeed"; revision: 1; type: "double"; isReadonly: true } + Property { name: "magneticVariation"; revision: 2; type: "double"; isReadonly: true } + Property { name: "magneticVariationValid"; revision: 2; type: "bool"; isReadonly: true } Signal { name: "directionValidChanged"; revision: 1 } Signal { name: "directionChanged"; revision: 1 } Signal { name: "verticalSpeedValidChanged"; revision: 1 } @@ -154,11 +153,8 @@ Module { Component { name: "QDeclarativePositionSource" prototype: "QObject" - exports: [ - "QtPositioning/PositionSource 5.0", - "QtPositioning/PositionSource 5.2" - ] - exportMetaObjectRevisions: [0, 0] + exports: ["QtPositioning/PositionSource 5.0"] + exportMetaObjectRevisions: [0] Enum { name: "PositioningMethod" values: { diff --git a/src/imports/positioning/positioning.cpp b/src/imports/positioning/positioning.cpp index 7b213960..cff32476 100644 --- a/src/imports/positioning/positioning.cpp +++ b/src/imports/positioning/positioning.cpp @@ -129,7 +129,7 @@ public: // Register the 5.4 types // Introduction of 5.4 version; existing 5.3 exports become automatically available under 5.4 minor = 4; - qmlRegisterSingletonType<LocationSingleton >(uri, major, minor, "QtPositioning", singleton_type_factory); + qmlRegisterType<QDeclarativePosition, 2>(uri, major, minor, "Position"); } else { qDebug() << "Unsupported URI given to load positioning QML plugin: " << QLatin1String(uri); } diff --git a/src/imports/positioning/qdeclarativeposition.cpp b/src/imports/positioning/qdeclarativeposition.cpp index dbd67290..9497fa7a 100644 --- a/src/imports/positioning/qdeclarativeposition.cpp +++ b/src/imports/positioning/qdeclarativeposition.cpp @@ -142,7 +142,10 @@ void QDeclarativePosition::setPosition(const QGeoPositionInfo &info) bool emitVerticalSpeedValidChanged = exclusiveNaN(pVerticalSpeed, verticalSpeed); // magnetic variation - // not in QML API + const qreal pMagneticVariation = m_info.attribute(QGeoPositionInfo::MagneticVariation); + const qreal magneticVariation = info.attribute(QGeoPositionInfo::MagneticVariation); + bool emitMagneticVariationChanged = !equalOrNaN(pMagneticVariation, magneticVariation); + bool emitMagneticVariationValidChanged = exclusiveNaN(pMagneticVariation, magneticVariation); // horizontal accuracy const qreal pHorizontalAccuracy = m_info.attribute(QGeoPositionInfo::HorizontalAccuracy); @@ -188,6 +191,10 @@ void QDeclarativePosition::setPosition(const QGeoPositionInfo &info) emit verticalAccuracyChanged(); if (emitVerticalAccuracyValidChanged) emit verticalAccuracyValidChanged(); + if (emitMagneticVariationChanged) + emit magneticVariationChanged(); + if (emitMagneticVariationValidChanged) + emit magneticVariationValidChanged(); } /*! @@ -429,6 +436,38 @@ double QDeclarativePosition::verticalSpeed() const return m_info.attribute(QGeoPositionInfo::VerticalSpeed); } +/*! + \qmlproperty bool Position::magneticVariationValid + \since Qt Positioning 5.4 + + This property is true if \l magneticVariation has been set (to indicate whether that data has been + received or not, as every update does not necessarily contain all data). + + \sa magneticVariation +*/ +bool QDeclarativePosition::isMagneticVariationValid() const +{ + return !qIsNaN(m_info.attribute(QGeoPositionInfo::MagneticVariation)); +} + +/*! + \qmlproperty double Position::magneticVariation + \since Qt Positioning 5.4 + + This property holds the angle between the horizontal component of the + magnetic field and true north, in degrees. Also known as magnetic + declination. A positive value indicates a clockwise direction from + true north and a negative value indicates a counter-clockwise direction. + + It is a read-only property. + + \sa magneticVariationValid +*/ +double QDeclarativePosition::magneticVariation() const +{ + return m_info.attribute(QGeoPositionInfo::MagneticVariation); +} + #include "moc_qdeclarativeposition_p.cpp" QT_END_NAMESPACE diff --git a/src/imports/positioning/qdeclarativeposition_p.h b/src/imports/positioning/qdeclarativeposition_p.h index d9235368..ed054835 100644 --- a/src/imports/positioning/qdeclarativeposition_p.h +++ b/src/imports/positioning/qdeclarativeposition_p.h @@ -72,6 +72,9 @@ class QDeclarativePosition : public QObject Q_PROPERTY(bool verticalSpeedValid READ isVerticalSpeedValid NOTIFY verticalSpeedValidChanged REVISION 1) Q_PROPERTY(double verticalSpeed READ verticalSpeed NOTIFY verticalSpeedChanged REVISION 1) + Q_PROPERTY(double magneticVariation READ magneticVariation NOTIFY magneticVariationChanged REVISION 2) + Q_PROPERTY(bool magneticVariationValid READ isMagneticVariationValid NOTIFY magneticVariationChanged REVISION 2) + public: explicit QDeclarativePosition(QObject *parent = 0); ~QDeclarativePosition(); @@ -98,6 +101,9 @@ public: double verticalSpeed() const; void setVerticalSpeed(double speed); + bool isMagneticVariationValid() const; + double magneticVariation() const; + void setPosition(const QGeoPositionInfo &info); Q_SIGNALS: @@ -118,6 +124,9 @@ Q_SIGNALS: Q_REVISION(1) void verticalSpeedValidChanged(); Q_REVISION(1) void verticalSpeedChanged(); + Q_REVISION(2) void magneticVariationChanged(); + Q_REVISION(2) void magneticVariationValidChanged(); + private: QGeoPositionInfo m_info; }; |