summaryrefslogtreecommitdiff
path: root/src/positioningquick/qdeclarativepositionsource.cpp
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2018-02-26 16:03:40 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2018-04-09 14:29:20 +0000
commit5457317c0ffbbb7e0c285a6899709be78f693b87 (patch)
treea7734905041606c26f6d4a9f7cfefdb277e6a53c /src/positioningquick/qdeclarativepositionsource.cpp
parent498db2f51ae0c509e57473207c34253f78e6f429 (diff)
downloadqtlocation-5457317c0ffbbb7e0c285a6899709be78f693b87.tar.gz
Add QGeoPositionInfoSource::supportedPositioningMethodsChanged
The signal is meant to be emitted by backends Task-number: QTBUG-66427 Change-Id: I8bc123e358dc76489b5eac85f397cd7f40072335 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/positioningquick/qdeclarativepositionsource.cpp')
-rw-r--r--src/positioningquick/qdeclarativepositionsource.cpp30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/positioningquick/qdeclarativepositionsource.cpp b/src/positioningquick/qdeclarativepositionsource.cpp
index ec462f23..c9fd2c8e 100644
--- a/src/positioningquick/qdeclarativepositionsource.cpp
+++ b/src/positioningquick/qdeclarativepositionsource.cpp
@@ -177,11 +177,10 @@ void QDeclarativePositionSource::setName(const QString &newName)
PositioningMethods previousPositioningMethods = supportedPositioningMethods();
PositioningMethods previousPreferredPositioningMethods = preferredPositioningMethods();
- delete m_positionSource;
if (newName.isEmpty())
- m_positionSource = QGeoPositionInfoSource::createDefaultSource(this);
+ setSource(QGeoPositionInfoSource::createDefaultSource(this));
else
- m_positionSource = QGeoPositionInfoSource::createSource(newName, this);
+ setSource(QGeoPositionInfoSource::createSource(newName, this));
if (m_positionSource) {
connect(m_positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
@@ -280,8 +279,7 @@ void QDeclarativePositionSource::setNmeaSource(const QUrl &nmeaSource)
// because QNmeaPositionInfoSource can be bound only to a one file.
delete m_nmeaSocket;
m_nmeaSocket = 0;
- delete m_positionSource;
- m_positionSource = 0;
+ setSource(nullptr);
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
@@ -296,7 +294,7 @@ void QDeclarativePositionSource::setNmeaSource(const QUrl &nmeaSource)
#ifdef QDECLARATIVE_POSITION_DEBUG
qDebug() << "QDeclarativePositionSource NMEA File was found: " << localFileName;
#endif
- m_positionSource = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::SimulationMode);
+ setSource(new QNmeaPositionInfoSource(QNmeaPositionInfoSource::SimulationMode));
(qobject_cast<QNmeaPositionInfoSource *>(m_positionSource))->setUserEquivalentRangeError(2.5); // it is internally multiplied by 2 in qlocationutils_readGga
(qobject_cast<QNmeaPositionInfoSource *>(m_positionSource))->setDevice(m_nmeaFile);
connect(m_positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
@@ -345,9 +343,9 @@ void QDeclarativePositionSource::socketConnected()
// because QNmeaPositionInfoSource can be bound only to a one file.
delete m_nmeaFile;
m_nmeaFile = 0;
- delete m_positionSource;
+ setSource(nullptr);
- m_positionSource = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::RealTimeMode);
+ setSource(new QNmeaPositionInfoSource(QNmeaPositionInfoSource::RealTimeMode));
(qobject_cast<QNmeaPositionInfoSource *>(m_positionSource))->setDevice(m_nmeaSocket);
connect(m_positionSource, &QNmeaPositionInfoSource::positionUpdated,
@@ -419,6 +417,20 @@ void QDeclarativePositionSource::setPosition(const QGeoPositionInfo &pi)
emit positionChanged();
}
+void QDeclarativePositionSource::setSource(QGeoPositionInfoSource *source)
+{
+ if (m_positionSource)
+ delete m_positionSource;
+
+ if (!source) {
+ m_positionSource = nullptr;
+ } else {
+ m_positionSource = source;
+ connect(m_positionSource, &QGeoPositionInfoSource::supportedPositioningMethodsChanged,
+ this, &QDeclarativePositionSource::supportedPositioningMethodsChanged);
+ }
+}
+
/*!
\internal
*/
@@ -712,7 +724,7 @@ void QDeclarativePositionSource::componentComplete()
PositioningMethods previousPositioningMethods = supportedPositioningMethods();
PositioningMethods previousPreferredPositioningMethods = preferredPositioningMethods();
- m_positionSource = QGeoPositionInfoSource::createDefaultSource(this);
+ setSource(QGeoPositionInfoSource::createDefaultSource(this));
if (m_positionSource) {
connect(m_positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
this, SLOT(positionUpdateReceived(QGeoPositionInfo)));