summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2014-08-12 13:26:05 +0200
committerAlex Blasche <alexander.blasche@digia.com>2014-08-14 09:51:24 +0200
commit05763575eb166a29073d1805a6fdd22a832cc0aa (patch)
treeb6bc41a24bd49733039186e6519922bdc2a8698e
parent226f454f8e2a7ba04e11c42e94181e6b33b73bf6 (diff)
downloadqtlocation-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>
-rw-r--r--src/imports/positioning/plugins.qmltypes36
-rw-r--r--src/imports/positioning/positioning.cpp2
-rw-r--r--src/imports/positioning/qdeclarativeposition.cpp41
-rw-r--r--src/imports/positioning/qdeclarativeposition_p.h9
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;
};