summaryrefslogtreecommitdiff
path: root/src/imports/positioning
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/positioning')
-rw-r--r--src/imports/positioning/positioning.cpp4
-rw-r--r--src/imports/positioning/positioning.pro15
-rw-r--r--src/imports/positioning/qdeclarativeposition.cpp469
-rw-r--r--src/imports/positioning/qdeclarativeposition_p.h147
-rw-r--r--src/imports/positioning/qdeclarativepositionsource.cpp762
-rw-r--r--src/imports/positioning/qdeclarativepositionsource_p.h172
6 files changed, 5 insertions, 1564 deletions
diff --git a/src/imports/positioning/positioning.cpp b/src/imports/positioning/positioning.cpp
index a324905b..0dd5b968 100644
--- a/src/imports/positioning/positioning.cpp
+++ b/src/imports/positioning/positioning.cpp
@@ -42,8 +42,8 @@
#include <QtPositioning/private/qdeclarativegeolocation_p.h>
#include <QtPositioning/private/qwebmercator_p.h>
-#include "qdeclarativepositionsource_p.h"
-#include "qdeclarativeposition_p.h"
+#include <QtPositioningQuick/private/qdeclarativepositionsource_p.h>
+#include <QtPositioningQuick/private/qdeclarativeposition_p.h>
#include "qquickgeocoordinateanimation_p.h"
#include "locationsingleton.h"
diff --git a/src/imports/positioning/positioning.pro b/src/imports/positioning/positioning.pro
index 119c3dea..f2387282 100644
--- a/src/imports/positioning/positioning.pro
+++ b/src/imports/positioning/positioning.pro
@@ -1,18 +1,9 @@
-QT += quick-private positioning-private qml-private core-private
+QT += quick-private positioning-private positioningquick-private qml-private core-private
INCLUDEPATH *= $$PWD
-HEADERS += qdeclarativeposition_p.h \
- qdeclarativepositionsource_p.h \
- locationsingleton.h \
- qquickgeocoordinateanimation_p.h \
- qquickgeocoordinateanimation_p_p.h
-
-SOURCES += qdeclarativeposition.cpp \
- positioning.cpp \
- qdeclarativepositionsource.cpp \
- locationsingleton.cpp \
- qquickgeocoordinateanimation.cpp
+HEADERS += $$files(*.h)
+SOURCES += $$files(*.cpp)
load(qml_plugin)
diff --git a/src/imports/positioning/qdeclarativeposition.cpp b/src/imports/positioning/qdeclarativeposition.cpp
deleted file mode 100644
index b543700b..00000000
--- a/src/imports/positioning/qdeclarativeposition.cpp
+++ /dev/null
@@ -1,469 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Jolla Ltd.
-** Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtPositioning module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtCore/QtNumeric>
-#include "qdeclarativeposition_p.h"
-#include <QtQml/qqml.h>
-#include <qnmeapositioninfosource.h>
-#include <QFile>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \qmltype Position
- \instantiates QDeclarativePosition
- \inqmlmodule QtPositioning
- \since 5.2
-
- \brief The Position type holds positional data at a particular point in time,
- such as coordinate (longitude, latitude, altitude) and speed.
-
- The Position type holds values related to geographic location such as
- a \l coordinate (longitude, latitude, and altitude), the \l timestamp when
- the Position was obtained, the \l speed at that time, and the accuracy of
- the data.
-
- Primarily, it is used in the \l{PositionSource::position}{position} property
- of a \l{PositionSource}, as the basic unit of data available from the system
- location data source.
-
- Not all properties of a Position object are necessarily valid or available
- (for example latitude and longitude may be valid, but speed update has not been
- received or set manually). As a result, corresponding "valid" properties
- are available (for example \l{coordinate} and \l{longitudeValid}, \l{latitudeValid}
- etc) to discern whether the data is available and valid in this position
- update.
-
- Position objects are read-only and can only be produced by a PositionSource.
-
- \section2 Example Usage
-
- See the example given for the \l{PositionSource} type, or the
- \l{geoflickr}{GeoFlickr} example application.
-
- \sa PositionSource, coordinate
-*/
-
-namespace
-{
-
-bool equalOrNaN(qreal a, qreal b)
-{
- return a == b || (qIsNaN(a) && qIsNaN(b));
-}
-
-bool exclusiveNaN(qreal a, qreal b)
-{
- return qIsNaN(a) != qIsNaN(b);
-}
-
-}
-
-QDeclarativePosition::QDeclarativePosition(QObject *parent)
-: QObject(parent)
-{
-}
-
-QDeclarativePosition::~QDeclarativePosition()
-{
-}
-
-void QDeclarativePosition::setPosition(const QGeoPositionInfo &info)
-{
- // timestamp
- const QDateTime pTimestamp = m_info.timestamp();
- const QDateTime timestamp = info.timestamp();
- bool emitTimestampChanged = pTimestamp != timestamp;
-
- // coordinate
- const QGeoCoordinate pCoordinate = m_info.coordinate();
- const QGeoCoordinate coordinate = info.coordinate();
- bool emitCoordinateChanged = pCoordinate != coordinate;
- bool emitLatitudeValidChanged = exclusiveNaN(pCoordinate.latitude(), coordinate.latitude());
- bool emitLongitudeValidChanged = exclusiveNaN(pCoordinate.longitude(), coordinate.longitude());
- bool emitAltitudeValidChanged = exclusiveNaN(pCoordinate.altitude(), coordinate.altitude());
-
- // direction
- const qreal pDirection = m_info.attribute(QGeoPositionInfo::Direction);
- const qreal direction = info.attribute(QGeoPositionInfo::Direction);
- bool emitDirectionChanged = !equalOrNaN(pDirection, direction);
- bool emitDirectionValidChanged = exclusiveNaN(pDirection, direction);
-
- // ground speed
- const qreal pSpeed = m_info.attribute(QGeoPositionInfo::GroundSpeed);
- const qreal speed = info.attribute(QGeoPositionInfo::GroundSpeed);
- bool emitSpeedChanged = !equalOrNaN(pSpeed, speed);
- bool emitSpeedValidChanged = exclusiveNaN(pSpeed, speed);
-
- // vertical speed
- const qreal pVerticalSpeed = m_info.attribute(QGeoPositionInfo::VerticalSpeed);
- const qreal verticalSpeed = info.attribute(QGeoPositionInfo::VerticalSpeed);
- bool emitVerticalSpeedChanged = !equalOrNaN(pVerticalSpeed, verticalSpeed);
- bool emitVerticalSpeedValidChanged = exclusiveNaN(pVerticalSpeed, verticalSpeed);
-
- // magnetic variation
- 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);
- const qreal horizontalAccuracy = info.attribute(QGeoPositionInfo::HorizontalAccuracy);
- bool emitHorizontalAccuracyChanged = !equalOrNaN(pHorizontalAccuracy, horizontalAccuracy);
- bool emitHorizontalAccuracyValidChanged = exclusiveNaN(pHorizontalAccuracy, horizontalAccuracy);
-
- // vertical accuracy
- const qreal pVerticalAccuracy = m_info.attribute(QGeoPositionInfo::VerticalAccuracy);
- const qreal verticalAccuracy = info.attribute(QGeoPositionInfo::VerticalAccuracy);
- bool emitVerticalAccuracyChanged = !equalOrNaN(pVerticalAccuracy, verticalAccuracy);
- bool emitVerticalAccuracyValidChanged = exclusiveNaN(pVerticalAccuracy, verticalAccuracy);
-
- m_info = info;
-
- if (emitTimestampChanged)
- emit timestampChanged();
- if (emitCoordinateChanged)
- emit coordinateChanged();
- if (emitLatitudeValidChanged)
- emit latitudeValidChanged();
- if (emitLongitudeValidChanged)
- emit longitudeValidChanged();
- if (emitAltitudeValidChanged)
- emit altitudeValidChanged();
- if (emitDirectionChanged)
- emit directionChanged();
- if (emitDirectionValidChanged)
- emit directionValidChanged();
- if (emitSpeedChanged)
- emit speedChanged();
- if (emitSpeedValidChanged)
- emit speedValidChanged();
- if (emitVerticalSpeedChanged)
- emit verticalSpeedChanged();
- if (emitVerticalSpeedValidChanged)
- emit verticalSpeedValidChanged();
- if (emitHorizontalAccuracyChanged)
- emit horizontalAccuracyChanged();
- if (emitHorizontalAccuracyValidChanged)
- emit horizontalAccuracyValidChanged();
- if (emitVerticalAccuracyChanged)
- emit verticalAccuracyChanged();
- if (emitVerticalAccuracyValidChanged)
- emit verticalAccuracyValidChanged();
- if (emitMagneticVariationChanged)
- emit magneticVariationChanged();
- if (emitMagneticVariationValidChanged)
- emit magneticVariationValidChanged();
-}
-
-/*!
- \qmlproperty coordinate Position::coordinate
-
- This property holds the latitude, longitude, and altitude value of the Position.
-
- It is a read-only property.
-
- \sa longitudeValid, latitudeValid, altitudeValid
-*/
-QGeoCoordinate QDeclarativePosition::coordinate()
-{
- return m_info.coordinate();
-}
-
-/*!
- \qmlproperty bool Position::latitudeValid
-
- This property is true if coordinate's latitude has been set
- (to indicate whether that data has been received or not, as every update
- does not necessarily contain all data).
-
- \sa coordinate
-*/
-bool QDeclarativePosition::isLatitudeValid() const
-{
- return !qIsNaN(m_info.coordinate().latitude());
-}
-
-
-/*!
- \qmlproperty bool Position::longitudeValid
-
- This property is true if coordinate's longitude has been set
- (to indicate whether that data has been received or not, as every update
- does not necessarily contain all data).
-
- \sa coordinate
-*/
-bool QDeclarativePosition::isLongitudeValid() const
-{
- return !qIsNaN(m_info.coordinate().longitude());
-}
-
-
-/*!
- \qmlproperty bool Position::speedValid
-
- This property is true if \l speed has been set
- (to indicate whether that data has been received or not, as every update
- does not necessarily contain all data).
-
- \sa speed
-*/
-bool QDeclarativePosition::isSpeedValid() const
-{
- return !qIsNaN(m_info.attribute(QGeoPositionInfo::GroundSpeed));
-}
-
-/*!
- \qmlproperty bool Position::altitudeValid
-
- This property is true if coordinate's altitude has been set
- (to indicate whether that data has been received or not, as every update
- does not necessarily contain all data).
-
- \sa coordinate
-*/
-bool QDeclarativePosition::isAltitudeValid() const
-{
- return !qIsNaN(m_info.coordinate().altitude());
-}
-
-/*!
- \qmlproperty double Position::speed
-
- This property holds the value of speed (groundspeed, meters / second).
-
- It is a read-only property.
-
- \sa speedValid, coordinate
-*/
-double QDeclarativePosition::speed() const
-{
- return m_info.attribute(QGeoPositionInfo::GroundSpeed);
-}
-
-/*!
- \qmlproperty real Position::horizontalAccuracy
-
- This property holds the horizontal accuracy of the coordinate (in meters).
-
- \sa horizontalAccuracyValid, coordinate
-*/
-void QDeclarativePosition::setHorizontalAccuracy(qreal horizontalAccuracy)
-{
- const qreal pHorizontalAccuracy = m_info.attribute(QGeoPositionInfo::HorizontalAccuracy);
-
- if (equalOrNaN(pHorizontalAccuracy, horizontalAccuracy))
- return;
-
- bool validChanged = exclusiveNaN(pHorizontalAccuracy, horizontalAccuracy);
-
- m_info.setAttribute(QGeoPositionInfo::HorizontalAccuracy, horizontalAccuracy);
- emit horizontalAccuracyChanged();
- if (validChanged)
- emit horizontalAccuracyValidChanged();
-}
-
-qreal QDeclarativePosition::horizontalAccuracy() const
-{
- return m_info.attribute(QGeoPositionInfo::HorizontalAccuracy);
-}
-
-/*!
- \qmlproperty bool Position::horizontalAccuracyValid
-
- This property is true if \l horizontalAccuracy has been set
- (to indicate whether that data has been received or not, as every update
- does not necessarily contain all data).
-
- \sa horizontalAccuracy
-*/
-bool QDeclarativePosition::isHorizontalAccuracyValid() const
-{
- return !qIsNaN(m_info.attribute(QGeoPositionInfo::HorizontalAccuracy));
-}
-
-/*!
- \qmlproperty real Position::verticalAccuracy
-
- This property holds the vertical accuracy of the coordinate (in meters).
-
- \sa verticalAccuracyValid, coordinate
-*/
-void QDeclarativePosition::setVerticalAccuracy(qreal verticalAccuracy)
-{
- const qreal pVerticalAccuracy = m_info.attribute(QGeoPositionInfo::VerticalAccuracy);
-
- if (equalOrNaN(pVerticalAccuracy, verticalAccuracy))
- return;
-
- bool validChanged = exclusiveNaN(pVerticalAccuracy, verticalAccuracy);
-
- m_info.setAttribute(QGeoPositionInfo::VerticalAccuracy, verticalAccuracy);
- emit verticalAccuracyChanged();
- if (validChanged)
- emit verticalAccuracyValidChanged();
-}
-
-qreal QDeclarativePosition::verticalAccuracy() const
-{
- return m_info.attribute(QGeoPositionInfo::VerticalAccuracy);
-}
-
-/*!
- \qmlproperty bool Position::verticalAccuracyValid
-
- This property is true if \l verticalAccuracy has been set
- (to indicate whether that data has been received or not, as every update
- does not necessarily contain all data).
-
- \sa verticalAccuracy
-*/
-bool QDeclarativePosition::isVerticalAccuracyValid() const
-{
- return !qIsNaN(m_info.attribute(QGeoPositionInfo::VerticalAccuracy));
-}
-
-/*!
- \qmlproperty date Position::timestamp
-
- This property holds the timestamp when this position
- was received. If the property has not been set, it is invalid.
-
- It is a read-only property.
-*/
-QDateTime QDeclarativePosition::timestamp() const
-{
- return m_info.timestamp();
-}
-
-/*!
- \qmlproperty bool Position::directionValid
- \since Qt Positioning 5.3
-
- This property is true if \l direction has been set (to indicate whether that data has been
- received or not, as every update does not necessarily contain all data).
-
- \sa direction
-*/
-bool QDeclarativePosition::isDirectionValid() const
-{
- return !qIsNaN(m_info.attribute(QGeoPositionInfo::Direction));
-}
-
-/*!
- \qmlproperty double Position::direction
- \since Qt Positioning 5.3
-
- This property holds the value of the direction of travel in degrees from true north.
-
- It is a read-only property.
-
- \sa directionValid
-*/
-double QDeclarativePosition::direction() const
-{
- return m_info.attribute(QGeoPositionInfo::Direction);
-}
-
-/*!
- \qmlproperty bool Position::verticalSpeedValid
- \since Qt Positioning 5.3
-
- This property is true if \l verticalSpeed has been set (to indicate whether that data has been
- received or not, as every update does not necessarily contain all data).
-
- \sa verticalSpeed
-*/
-bool QDeclarativePosition::isVerticalSpeedValid() const
-{
- return !qIsNaN(m_info.attribute(QGeoPositionInfo::VerticalSpeed));
-}
-
-/*!
- \qmlproperty double Position::verticalSpeed
- \since Qt Positioning 5.3
-
- This property holds the value of the vertical speed in meters per second.
-
- It is a read-only property.
-
- \sa verticalSpeedValid
-*/
-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);
-}
-
-QT_END_NAMESPACE
diff --git a/src/imports/positioning/qdeclarativeposition_p.h b/src/imports/positioning/qdeclarativeposition_p.h
deleted file mode 100644
index 208d81cc..00000000
--- a/src/imports/positioning/qdeclarativeposition_p.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Jolla Ltd.
-** Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtPositioning module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-***************************************************************************/
-
-#ifndef QDECLARATIVEPOSITION_H
-#define QDECLARATIVEPOSITION_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtCore/QObject>
-#include <QtCore/QDateTime>
-#include <QtQml/qqml.h>
-#include <QtPositioning/QGeoPositionInfo>
-
-QT_BEGIN_NAMESPACE
-
-class QDeclarativePosition : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(bool latitudeValid READ isLatitudeValid NOTIFY latitudeValidChanged)
- Q_PROPERTY(bool longitudeValid READ isLongitudeValid NOTIFY longitudeValidChanged)
- Q_PROPERTY(bool altitudeValid READ isAltitudeValid NOTIFY altitudeValidChanged)
- Q_PROPERTY(QGeoCoordinate coordinate READ coordinate NOTIFY coordinateChanged)
- Q_PROPERTY(QDateTime timestamp READ timestamp NOTIFY timestampChanged)
- Q_PROPERTY(double speed READ speed NOTIFY speedChanged)
- Q_PROPERTY(bool speedValid READ isSpeedValid NOTIFY speedValidChanged)
- Q_PROPERTY(qreal horizontalAccuracy READ horizontalAccuracy WRITE setHorizontalAccuracy NOTIFY horizontalAccuracyChanged)
- Q_PROPERTY(qreal verticalAccuracy READ verticalAccuracy WRITE setVerticalAccuracy NOTIFY verticalAccuracyChanged)
- Q_PROPERTY(bool horizontalAccuracyValid READ isHorizontalAccuracyValid NOTIFY horizontalAccuracyValidChanged)
- Q_PROPERTY(bool verticalAccuracyValid READ isVerticalAccuracyValid NOTIFY verticalAccuracyValidChanged)
-
- Q_PROPERTY(bool directionValid READ isDirectionValid NOTIFY directionValidChanged REVISION 1)
- Q_PROPERTY(double direction READ direction NOTIFY directionChanged REVISION 1)
- 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();
-
- bool isLatitudeValid() const;
- bool isLongitudeValid() const;
- bool isAltitudeValid() const;
- QDateTime timestamp() const;
- double speed() const;
- bool isSpeedValid() const;
- QGeoCoordinate coordinate();
- bool isHorizontalAccuracyValid() const;
- qreal horizontalAccuracy() const;
- void setHorizontalAccuracy(qreal horizontalAccuracy);
- bool isVerticalAccuracyValid() const;
- qreal verticalAccuracy() const;
- void setVerticalAccuracy(qreal verticalAccuracy);
-
- bool isDirectionValid() const;
- double direction() const;
- void setDirection(double direction);
-
- bool isVerticalSpeedValid() const;
- double verticalSpeed() const;
- void setVerticalSpeed(double speed);
-
- bool isMagneticVariationValid() const;
- double magneticVariation() const;
-
- void setPosition(const QGeoPositionInfo &info);
-
-Q_SIGNALS:
- void latitudeValidChanged();
- void longitudeValidChanged();
- void altitudeValidChanged();
- void timestampChanged();
- void speedChanged();
- void speedValidChanged();
- void coordinateChanged();
- void horizontalAccuracyChanged();
- void horizontalAccuracyValidChanged();
- void verticalAccuracyChanged();
- void verticalAccuracyValidChanged();
-
- Q_REVISION(1) void directionValidChanged();
- Q_REVISION(1) void directionChanged();
- Q_REVISION(1) void verticalSpeedValidChanged();
- Q_REVISION(1) void verticalSpeedChanged();
-
- Q_REVISION(2) void magneticVariationChanged();
- Q_REVISION(2) void magneticVariationValidChanged();
-
-private:
- QGeoPositionInfo m_info;
-};
-
-QT_END_NAMESPACE
-
-QML_DECLARE_TYPE(QDeclarativePosition)
-
-#endif
diff --git a/src/imports/positioning/qdeclarativepositionsource.cpp b/src/imports/positioning/qdeclarativepositionsource.cpp
deleted file mode 100644
index 05232d51..00000000
--- a/src/imports/positioning/qdeclarativepositionsource.cpp
+++ /dev/null
@@ -1,762 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtPositioning module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qdeclarativepositionsource_p.h"
-#include "qdeclarativeposition_p.h"
-
-#include <QtCore/QCoreApplication>
-#include <QtQml/qqmlinfo.h>
-#include <QtQml/qqml.h>
-#include <qnmeapositioninfosource.h>
-#include <QFile>
-#include <QtNetwork/QTcpSocket>
-#include <QTimer>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \qmltype PositionSource
- \instantiates QDeclarativePositionSource
- \inqmlmodule QtPositioning
- \since 5.2
-
- \brief The PositionSource type provides the device's current position.
-
- The PositionSource type provides information about the user device's
- current position. The position is available as a \l{Position} type, which
- contains all the standard parameters typically available from GPS and other
- similar systems, including longitude, latitude, speed and accuracy details.
-
- As different position sources are available on different platforms and
- devices, these are categorized by their basic type (Satellite, NonSatellite,
- and AllPositioningMethods). The available methods for the current platform
- can be enumerated in the \l{supportedPositioningMethods} property.
-
- To indicate which methods are suitable for your application, set the
- \l{preferredPositioningMethods} property. If the preferred methods are not
- available, the default source of location data for the platform will be
- chosen instead. If no default source is available (because none are installed
- for the runtime platform, or because it is disabled), the \l{valid} property
- will be set to false.
-
- The \l updateInterval property can then be used to indicate how often your
- application wishes to receive position updates. The \l{start}(),
- \l{stop}() and \l{update}() methods can be used to control the operation
- of the PositionSource, as well as the \l{active} property, which when set
- is equivalent to calling \l{start}() or \l{stop}().
-
- When the PositionSource is active, position updates can be retrieved
- either by simply using the \l{position} property in a binding (as the
- value of another item's property), or by providing an implementation of
- the \c {onPositionChanged} signal-handler.
-
- \section2 Example Usage
-
- The following example shows a simple PositionSource used to receive
- updates every second and print the longitude and latitude out to
- the console.
-
- \code
- PositionSource {
- id: src
- updateInterval: 1000
- active: true
-
- onPositionChanged: {
- var coord = src.position.coordinate;
- console.log("Coordinate:", coord.longitude, coord.latitude);
- }
- }
- \endcode
-
- The \l{geoflickr}{GeoFlickr} example application shows how to use
- a PositionSource in your application to retrieve local data for users
- from a REST web service.
-
- \sa {QtPositioning::Position}, {QGeoPositionInfoSource}
-
-*/
-
-/*!
- \qmlsignal PositionSource::updateTimeout()
-
- If \l update() was called, this signal is emitted if the current position could not be
- retrieved within a certain amount of time.
-
- If \l start() was called, this signal is emitted if the position engine determines that
- it is not able to provide further regular updates.
-
- \since Qt Positioning 5.5
-
- \sa QGeoPositionInfoSource::updateTimeout()
-*/
-
-
-QDeclarativePositionSource::QDeclarativePositionSource()
-: m_positionSource(0), m_preferredPositioningMethods(NoPositioningMethods), m_nmeaFile(0),
- m_nmeaSocket(0), m_active(false), m_singleUpdate(false), m_updateInterval(0),
- m_sourceError(NoError)
-{
-}
-
-QDeclarativePositionSource::~QDeclarativePositionSource()
-{
- delete m_nmeaFile;
- delete m_nmeaSocket;
- delete m_positionSource;
-}
-
-
-/*!
- \qmlproperty string PositionSource::name
-
- This property holds the unique internal name for the plugin currently
- providing position information.
-
- Setting the property causes the PositionSource to use a particular positioning provider. If
- the PositionSource is active at the time that the name property is changed, it will become
- inactive. If the specified positioning provider cannot be loaded the position source will
- become invalid.
-
- Changing the name property may cause the \l {updateInterval}, \l {supportedPositioningMethods}
- and \l {preferredPositioningMethods} properties to change as well.
-*/
-
-
-QString QDeclarativePositionSource::name() const
-{
- if (m_positionSource)
- return m_positionSource->sourceName();
- else
- return QString();
-}
-
-void QDeclarativePositionSource::setName(const QString &newName)
-{
- if (m_positionSource && m_positionSource->sourceName() == newName)
- return;
-
- const QString previousName = name();
- int previousUpdateInterval = updateInterval();
- PositioningMethods previousPositioningMethods = supportedPositioningMethods();
- PositioningMethods previousPreferredPositioningMethods = preferredPositioningMethods();
-
- delete m_positionSource;
- if (newName.isEmpty())
- m_positionSource = QGeoPositionInfoSource::createDefaultSource(this);
- else
- m_positionSource = QGeoPositionInfoSource::createSource(newName, this);
-
- if (m_positionSource) {
- connect(m_positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
- this, SLOT(positionUpdateReceived(QGeoPositionInfo)));
- connect(m_positionSource, SIGNAL(error(QGeoPositionInfoSource::Error)),
- this, SLOT(sourceErrorReceived(QGeoPositionInfoSource::Error)));
- connect(m_positionSource, SIGNAL(updateTimeout()),
- this, SLOT(updateTimeoutReceived()));
-
- m_positionSource->setUpdateInterval(m_updateInterval);
- m_positionSource->setPreferredPositioningMethods(
- static_cast<QGeoPositionInfoSource::PositioningMethods>(int(m_preferredPositioningMethods)));
-
- setPosition(m_positionSource->lastKnownPosition());
- }
-
- if (previousUpdateInterval != updateInterval())
- emit updateIntervalChanged();
-
- if (previousPreferredPositioningMethods != preferredPositioningMethods())
- emit preferredPositioningMethodsChanged();
-
- if (previousPositioningMethods != supportedPositioningMethods())
- emit supportedPositioningMethodsChanged();
-
- emit validityChanged();
-
- if (m_active) {
- m_active = false;
- emit activeChanged();
- }
-
- if (previousName != name())
- emit nameChanged();
-}
-
-/*!
- \qmlproperty bool PositionSource::valid
-
- This property is true if the PositionSource object has acquired a valid
- backend plugin to provide data. If false, other methods on the PositionSource
- will have no effect.
-
- Applications should check this property to determine whether positioning is
- available and enabled on the runtime platform, and react accordingly.
-*/
-bool QDeclarativePositionSource::isValid() const
-{
- return (m_positionSource != 0);
-}
-
-/*!
- \internal
-*/
-void QDeclarativePositionSource::setNmeaSource(const QUrl &nmeaSource)
-{
- if (nmeaSource.scheme() == QLatin1String("socket")) {
- if (m_nmeaSocket
- && nmeaSource.host() == m_nmeaSocket->peerName()
- && nmeaSource.port() == m_nmeaSocket->peerPort()) {
- return;
- }
-
- delete m_nmeaSocket;
- m_nmeaSocket = new QTcpSocket();
-
- connect(m_nmeaSocket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)> (&QAbstractSocket::error),
- this, &QDeclarativePositionSource::socketError);
- connect(m_nmeaSocket, &QTcpSocket::connected,
- this, &QDeclarativePositionSource::socketConnected);
-
- m_nmeaSocket->connectToHost(nmeaSource.host(), nmeaSource.port(), QTcpSocket::ReadOnly);
- } else {
- // Strip the filename. This is clumsy but the file may be prefixed in several
- // ways: "file:///", "qrc:///", "/", "" in platform dependent manner.
- QString localFileName = nmeaSource.toString();
- if (!QFile::exists(localFileName)) {
- if (localFileName.startsWith("qrc:///")) {
- localFileName.remove(0, 7);
- } else if (localFileName.startsWith("file:///")) {
- localFileName.remove(0, 7);
- } else if (localFileName.startsWith("qrc:/")) {
- localFileName.remove(0, 5);
- }
- if (!QFile::exists(localFileName) && localFileName.startsWith('/')) {
- localFileName.remove(0,1);
- }
- }
- if (m_nmeaFileName == localFileName)
- return;
- m_nmeaFileName = localFileName;
-
- PositioningMethods previousPositioningMethods = supportedPositioningMethods();
-
- // The current position source needs to be deleted
- // because QNmeaPositionInfoSource can be bound only to a one file.
- delete m_nmeaSocket;
- m_nmeaSocket = 0;
- delete m_positionSource;
- m_positionSource = 0;
- setPosition(QGeoPositionInfo());
- // Create the NMEA source based on the given data. QML has automatically set QUrl
- // type to point to correct path. If the file is not found, check if the file actually
- // was an embedded resource file.
- delete m_nmeaFile;
- m_nmeaFile = new QFile(localFileName);
- if (!m_nmeaFile->exists()) {
- localFileName.prepend(":");
- m_nmeaFile->setFileName(localFileName);
- }
- if (m_nmeaFile->exists()) {
-#ifdef QDECLARATIVE_POSITION_DEBUG
- qDebug() << "QDeclarativePositionSource NMEA File was found: " << localFileName;
-#endif
- m_positionSource = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::SimulationMode);
- (qobject_cast<QNmeaPositionInfoSource *>(m_positionSource))->setDevice(m_nmeaFile);
- connect(m_positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
- this, SLOT(positionUpdateReceived(QGeoPositionInfo)));
- connect(m_positionSource, SIGNAL(error(QGeoPositionInfoSource::Error)),
- this, SLOT(sourceErrorReceived(QGeoPositionInfoSource::Error)));
- connect(m_positionSource, SIGNAL(updateTimeout()),
- this, SLOT(updateTimeoutReceived()));
-
- setPosition(m_positionSource->lastKnownPosition());
- if (m_active && !m_singleUpdate) {
- // Keep on updating even though source changed
- QTimer::singleShot(0, this, SLOT(start()));
- }
- } else {
- qmlWarning(this) << QStringLiteral("Nmea file not found") << localFileName;
-#ifdef QDECLARATIVE_POSITION_DEBUG
- qDebug() << "QDeclarativePositionSource NMEA File was not found: " << localFileName;
-#endif
- if (m_active) {
- m_active = false;
- m_singleUpdate = false;
- emit activeChanged();
- }
- }
-
- if (previousPositioningMethods != supportedPositioningMethods())
- emit supportedPositioningMethodsChanged();
- }
-
- m_nmeaSource = nmeaSource;
- emit nmeaSourceChanged();
-}
-
-/*!
- \internal
-*/
-void QDeclarativePositionSource::socketConnected()
-{
-#ifdef QDECLARATIVE_POSITION_DEBUG
- qDebug() << "Socket connected: " << m_nmeaSocket->peerName();
-#endif
- PositioningMethods previousPositioningMethods = supportedPositioningMethods();
-
- // The current position source needs to be deleted
- // because QNmeaPositionInfoSource can be bound only to a one file.
- delete m_nmeaFile;
- m_nmeaFile = 0;
- delete m_positionSource;
-
- m_positionSource = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::RealTimeMode);
- (qobject_cast<QNmeaPositionInfoSource *>(m_positionSource))->setDevice(m_nmeaSocket);
-
- connect(m_positionSource, &QNmeaPositionInfoSource::positionUpdated,
- this, &QDeclarativePositionSource::positionUpdateReceived);
- connect(m_positionSource, SIGNAL(error(QGeoPositionInfoSource::Error)),
- this, SLOT(sourceErrorReceived(QGeoPositionInfoSource::Error)));
- connect(m_positionSource, SIGNAL(updateTimeout()),
- this, SLOT(updateTimeoutReceived()));
-
- setPosition(m_positionSource->lastKnownPosition());
-
- if (m_active && !m_singleUpdate) {
- // Keep on updating even though source changed
- QTimer::singleShot(0, this, SLOT(start()));
- }
-
- if (previousPositioningMethods != supportedPositioningMethods())
- emit supportedPositioningMethodsChanged();
-}
-
-/*!
- \internal
-*/
-void QDeclarativePositionSource::socketError(QAbstractSocket::SocketError error)
-{
- delete m_nmeaSocket;
- m_nmeaSocket = 0;
-
- switch (error) {
- case QAbstractSocket::UnknownSocketError:
- m_sourceError = QDeclarativePositionSource::UnknownSourceError;
- break;
- case QAbstractSocket::SocketAccessError:
- m_sourceError = QDeclarativePositionSource::AccessError;
- break;
- case QAbstractSocket::RemoteHostClosedError:
- m_sourceError = QDeclarativePositionSource::ClosedError;
- break;
- default:
- qWarning() << "Connection failed! QAbstractSocket::SocketError" << error;
- m_sourceError = QDeclarativePositionSource::SocketError;
- break;
- }
-
- emit sourceErrorChanged();
-}
-
-
-void QDeclarativePositionSource::updateTimeoutReceived()
-{
- if (!m_active)
- return;
-
- if (m_singleUpdate) {
- m_singleUpdate = false;
-
- // only singleUpdate based timeouts change activity
- // continuous updates may resume again (see QGeoPositionInfoSource::startUpdates())
- m_active = false;
- emit activeChanged();
- }
-
- emit updateTimeout();
-}
-
-void QDeclarativePositionSource::setPosition(const QGeoPositionInfo &pi)
-{
- m_position.setPosition(pi);
- emit positionChanged();
-}
-
-/*!
- \internal
-*/
-void QDeclarativePositionSource::setUpdateInterval(int updateInterval)
-{
- if (m_positionSource) {
- int previousUpdateInterval = m_positionSource->updateInterval();
-
- m_updateInterval = updateInterval;
-
- if (previousUpdateInterval != updateInterval) {
- m_positionSource->setUpdateInterval(updateInterval);
- if (previousUpdateInterval != m_positionSource->updateInterval())
- emit updateIntervalChanged();
- }
- } else {
- if (m_updateInterval != updateInterval) {
- m_updateInterval = updateInterval;
- emit updateIntervalChanged();
- }
- }
-}
-
-/*!
- \qmlproperty url PositionSource::nmeaSource
-
- This property holds the source for NMEA (National Marine Electronics Association)
- position-specification data (file). One purpose of this property is to be of
- development convenience.
-
- Setting this property will override any other position source. Currently only
- files local to the .qml -file are supported. The NMEA source is created in simulation mode,
- meaning that the data and time information in the NMEA source data is used to provide
- positional updates at the rate at which the data was originally recorded.
-
- If nmeaSource has been set for a PositionSource object, there is no way to revert
- back to non-file sources.
-*/
-
-QUrl QDeclarativePositionSource::nmeaSource() const
-{
- return m_nmeaSource;
-}
-
-/*!
- \qmlproperty int PositionSource::updateInterval
-
- This property holds the desired interval between updates (milliseconds).
-
- \sa {QGeoPositionInfoSource::updateInterval()}
-*/
-
-int QDeclarativePositionSource::updateInterval() const
-{
- if (!m_positionSource)
- return m_updateInterval;
-
- return m_positionSource->updateInterval();
-}
-
-/*!
- \qmlproperty enumeration PositionSource::supportedPositioningMethods
-
- This property holds the supported positioning methods of the
- current source.
-
- \list
- \li PositionSource.NoPositioningMethods - No positioning methods supported (no source).
- \li PositionSource.SatellitePositioningMethods - Satellite-based positioning methods such as GPS are supported.
- \li PositionSource.NonSatellitePositioningMethods - Non-satellite-based methods are supported.
- \li PositionSource.AllPositioningMethods - Both satellite-based and non-satellite positioning methods are supported.
- \endlist
-
-*/
-
-QDeclarativePositionSource::PositioningMethods QDeclarativePositionSource::supportedPositioningMethods() const
-{
- if (m_positionSource) {
- return static_cast<QDeclarativePositionSource::PositioningMethods>(
- int(m_positionSource->supportedPositioningMethods()));
- }
- return QDeclarativePositionSource::NoPositioningMethods;
-}
-
-/*!
- \qmlproperty enumeration PositionSource::preferredPositioningMethods
-
- This property holds the preferred positioning methods of the
- current source.
-
- \list
- \li PositionSource.NoPositioningMethods - No positioning method is preferred.
- \li PositionSource.SatellitePositioningMethods - Satellite-based positioning methods such as GPS should be preferred.
- \li PositionSource.NonSatellitePositioningMethods - Non-satellite-based methods should be preferred.
- \li PositionSource.AllPositioningMethods - Any positioning methods are acceptable.
- \endlist
-
-*/
-
-void QDeclarativePositionSource::setPreferredPositioningMethods(PositioningMethods methods)
-{
- if (m_positionSource) {
- PositioningMethods previousPreferredPositioningMethods = preferredPositioningMethods();
-
- m_preferredPositioningMethods = methods;
-
- if (previousPreferredPositioningMethods != methods) {
- m_positionSource->setPreferredPositioningMethods(
- static_cast<QGeoPositionInfoSource::PositioningMethods>(int(methods)));
- if (previousPreferredPositioningMethods != m_positionSource->preferredPositioningMethods())
- emit preferredPositioningMethodsChanged();
- }
- } else {
- if (m_preferredPositioningMethods != methods) {
- m_preferredPositioningMethods = methods;
- emit preferredPositioningMethodsChanged();
- }
- }
-}
-
-QDeclarativePositionSource::PositioningMethods QDeclarativePositionSource::preferredPositioningMethods() const
-{
- if (m_positionSource) {
- return static_cast<QDeclarativePositionSource::PositioningMethods>(
- int(m_positionSource->preferredPositioningMethods()));
- }
- return m_preferredPositioningMethods;
-}
-
-/*!
- \qmlmethod PositionSource::start()
-
- Requests updates from the location source.
- Uses \l updateInterval if set, default interval otherwise.
- If there is no source available, this method has no effect.
-
- \sa stop, update, active
-*/
-
-void QDeclarativePositionSource::start()
-{
- if (m_positionSource)
- m_positionSource->startUpdates();
-
- if (!m_active) {
- m_active = true;
- emit activeChanged();
- }
-}
-
-/*!
- \qmlmethod PositionSource::update()
-
- A convenience method to request single update from the location source.
- If there is no source available, this method has no effect.
-
- If the position source is not active, it will be activated for as
- long as it takes to receive an update, or until the request times
- out. The request timeout period is source-specific.
-
- \sa start, stop, active
-*/
-
-void QDeclarativePositionSource::update()
-{
- if (m_positionSource) {
- if (!m_active) {
- m_active = true;
- m_singleUpdate = true;
- emit activeChanged();
- }
- // Use default timeout value. Set active before calling the
- // update request because on some platforms there may
- // be results immediately.
- m_positionSource->requestUpdate();
- }
-}
-
-/*!
- \qmlmethod PositionSource::stop()
-
- Stops updates from the location source.
- If there is no source available or it is not active,
- this method has no effect.
-
- \sa start, update, active
-*/
-
-void QDeclarativePositionSource::stop()
-{
- if (m_positionSource) {
- m_positionSource->stopUpdates();
- if (m_active) {
- m_active = false;
- emit activeChanged();
- }
- }
-}
-
-/*!
- \qmlproperty bool PositionSource::active
-
- This property indicates whether the position source is active.
- Setting this property to false equals calling \l stop, and
- setting this property true equals calling \l start.
-
- \sa start, stop, update
-*/
-void QDeclarativePositionSource::setActive(bool active)
-{
- if (active == m_active)
- return;
-
- if (active)
- QTimer::singleShot(0, this, SLOT(start())); // delay ensures all properties have been set
- else
- stop();
-}
-
-bool QDeclarativePositionSource::isActive() const
-{
- return m_active;
-}
-
-/*!
- \qmlproperty Position PositionSource::position
-
- This property holds the last known positional data.
- It is a read-only property.
-
- The Position type has different positional member variables,
- whose validity can be checked with appropriate validity functions
- (for example sometimes an update does not have speed or altitude data).
-
- However, whenever a \c {positionChanged} signal has been received, at least
- position::coordinate::latitude, position::coordinate::longitude, and position::timestamp can
- be assumed to be valid.
-
- \sa start, stop, update
-*/
-
-QDeclarativePosition *QDeclarativePositionSource::position()
-{
- return &m_position;
-}
-
-void QDeclarativePositionSource::positionUpdateReceived(const QGeoPositionInfo &update)
-{
- setPosition(update);
-
- if (m_singleUpdate && m_active) {
- m_active = false;
- m_singleUpdate = false;
- emit activeChanged();
- }
-}
-
-
-/*!
- \qmlproperty enumeration PositionSource::sourceError
-
- This property holds the error which last occurred with the PositionSource.
-
- \list
- \li PositionSource.AccessError - The connection setup to the remote positioning backend failed because the
- application lacked the required privileges.
- \li PositionSource.ClosedError - The positioning backend closed the connection, which happens for example in case
- the user is switching location services to off. As soon as the location service is re-enabled
- regular updates will resume.
- \li PositionSource.NoError - No error has occurred.
- \li PositionSource.UnknownSourceError - An unidentified error occurred.
- \li PositionSource.SocketError - An error occurred while connecting to an nmea source using a socket.
- \endlist
-
-*/
-
-QDeclarativePositionSource::SourceError QDeclarativePositionSource::sourceError() const
-{
- return m_sourceError;
-}
-
-void QDeclarativePositionSource::componentComplete()
-{
- if (!m_positionSource) {
- int previousUpdateInterval = updateInterval();
- PositioningMethods previousPositioningMethods = supportedPositioningMethods();
- PositioningMethods previousPreferredPositioningMethods = preferredPositioningMethods();
-
- m_positionSource = QGeoPositionInfoSource::createDefaultSource(this);
- if (m_positionSource) {
- connect(m_positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
- this, SLOT(positionUpdateReceived(QGeoPositionInfo)));
- connect(m_positionSource, SIGNAL(error(QGeoPositionInfoSource::Error)),
- this, SLOT(sourceErrorReceived(QGeoPositionInfoSource::Error)));
- connect(m_positionSource, SIGNAL(updateTimeout()),
- this, SLOT(updateTimeoutReceived()));
-
- m_positionSource->setUpdateInterval(m_updateInterval);
- m_positionSource->setPreferredPositioningMethods(
- static_cast<QGeoPositionInfoSource::PositioningMethods>(int(m_preferredPositioningMethods)));
-
- setPosition(m_positionSource->lastKnownPosition());
-
- if (m_active)
- QTimer::singleShot(0, this, SLOT(start())); // delay ensures all properties have been set
- } else if (m_active) {
- m_active = false;
- emit activeChanged();
- }
-
- if (previousUpdateInterval != updateInterval())
- emit updateIntervalChanged();
-
- if (previousPreferredPositioningMethods != preferredPositioningMethods())
- emit preferredPositioningMethodsChanged();
-
- if (previousPositioningMethods != supportedPositioningMethods())
- emit supportedPositioningMethodsChanged();
-
- emit validityChanged();
- emit nameChanged();
- }
-}
-
-/*!
- \internal
-*/
-void QDeclarativePositionSource::sourceErrorReceived(const QGeoPositionInfoSource::Error error)
-{
- if (error == QGeoPositionInfoSource::AccessError)
- m_sourceError = QDeclarativePositionSource::AccessError;
- else if (error == QGeoPositionInfoSource::ClosedError)
- m_sourceError = QDeclarativePositionSource::ClosedError;
- else if (error == QGeoPositionInfoSource::NoError)
- return; //nothing to do
- else
- m_sourceError = QDeclarativePositionSource::UnknownSourceError;
-
- emit sourceErrorChanged();
-}
-
-QT_END_NAMESPACE
diff --git a/src/imports/positioning/qdeclarativepositionsource_p.h b/src/imports/positioning/qdeclarativepositionsource_p.h
deleted file mode 100644
index f7852346..00000000
--- a/src/imports/positioning/qdeclarativepositionsource_p.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtPositioning module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-***************************************************************************/
-
-#ifndef QDECLARATIVEPOSITIONSOURCE_H
-#define QDECLARATIVEPOSITIONSOURCE_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qdeclarativeposition_p.h"
-
-#include <QtCore/QObject>
-#include <QtNetwork/QAbstractSocket>
-#include <QtQml/QQmlParserStatus>
-#include <QtPositioning/QGeoPositionInfoSource>
-
-QT_BEGIN_NAMESPACE
-
-class QFile;
-class QTcpSocket;
-
-class QDeclarativePositionSource : public QObject, public QQmlParserStatus
-{
- Q_OBJECT
-
- Q_PROPERTY(QDeclarativePosition *position READ position NOTIFY positionChanged)
- Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
- Q_PROPERTY(bool valid READ isValid NOTIFY validityChanged)
- Q_PROPERTY(QUrl nmeaSource READ nmeaSource WRITE setNmeaSource NOTIFY nmeaSourceChanged)
- Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval NOTIFY updateIntervalChanged)
- Q_PROPERTY(PositioningMethods supportedPositioningMethods READ supportedPositioningMethods NOTIFY supportedPositioningMethodsChanged)
- Q_PROPERTY(PositioningMethods preferredPositioningMethods READ preferredPositioningMethods WRITE setPreferredPositioningMethods NOTIFY preferredPositioningMethodsChanged)
- Q_PROPERTY(SourceError sourceError READ sourceError NOTIFY sourceErrorChanged)
- Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_ENUMS(PositioningMethod)
-
- Q_INTERFACES(QQmlParserStatus)
-
-public:
- enum PositioningMethod {
- NoPositioningMethods = QGeoPositionInfoSource::NoPositioningMethods,
- SatellitePositioningMethods = QGeoPositionInfoSource::SatellitePositioningMethods,
- NonSatellitePositioningMethods = QGeoPositionInfoSource::NonSatellitePositioningMethods,
- AllPositioningMethods = QGeoPositionInfoSource::AllPositioningMethods
- };
-
- Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod)
- Q_FLAGS(PositioningMethods)
-
- enum SourceError {
- AccessError = QGeoPositionInfoSource::AccessError,
- ClosedError = QGeoPositionInfoSource::ClosedError,
- UnknownSourceError = QGeoPositionInfoSource::UnknownSourceError,
- NoError = QGeoPositionInfoSource::NoError,
-
- //Leave a gap for future error enum values in QGeoPositionInfoSource::Error
- SocketError = 100
- };
- Q_ENUMS(SourceError)
-
- QDeclarativePositionSource();
- ~QDeclarativePositionSource();
- void setNmeaSource(const QUrl &nmeaSource);
- void setUpdateInterval(int updateInterval);
- void setActive(bool active);
- void setPreferredPositioningMethods(PositioningMethods methods);
-
- QString name() const;
- void setName(const QString &name);
-
- QUrl nmeaSource() const;
- int updateInterval() const;
- bool isActive() const;
- bool isValid() const;
- QDeclarativePosition *position();
- PositioningMethods supportedPositioningMethods() const;
- PositioningMethods preferredPositioningMethods() const;
- SourceError sourceError() const;
-
- // Virtuals from QQmlParserStatus
- void classBegin() { }
- void componentComplete();
-
-public Q_SLOTS:
- void update(); // TODO Qt 6 change to void update(int)
- void start();
- void stop();
-
-Q_SIGNALS:
- void positionChanged();
- void activeChanged();
- void nmeaSourceChanged();
- void updateIntervalChanged();
- void supportedPositioningMethodsChanged();
- void preferredPositioningMethodsChanged();
- void sourceErrorChanged();
- void nameChanged();
- void validityChanged();
- void updateTimeout();
-
-private Q_SLOTS:
- void positionUpdateReceived(const QGeoPositionInfo &update);
- void sourceErrorReceived(const QGeoPositionInfoSource::Error error);
- void socketConnected();
- void socketError(QAbstractSocket::SocketError error);
- void updateTimeoutReceived();
-
-private:
- void setPosition(const QGeoPositionInfo &pi);
-
- QGeoPositionInfoSource *m_positionSource;
- QDeclarativePosition m_position;
- PositioningMethods m_preferredPositioningMethods;
- QFile *m_nmeaFile;
- QTcpSocket *m_nmeaSocket;
- QString m_nmeaFileName;
- QUrl m_nmeaSource;
- bool m_active;
- bool m_singleUpdate;
- int m_updateInterval;
- SourceError m_sourceError;
-};
-
-QT_END_NAMESPACE
-
-QML_DECLARE_TYPE(QDeclarativePositionSource)
-
-#endif