Skip to content

Commit 72eb1aa

Browse files
committed
Allow Qt5::Positioning as alternative to QtMobility/QtLocation
1 parent 72cfe46 commit 72eb1aa

5 files changed

+44
-16
lines changed

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ IF (ENABLE_QT5)
242242
FIND_PACKAGE(Qt5Svg REQUIRED)
243243
FIND_PACKAGE(Qt5Concurrent REQUIRED)
244244
FIND_PACKAGE(Qt5PrintSupport REQUIRED)
245+
FIND_PACKAGE(Qt5Positioning)
245246
FIND_PACKAGE(Qt5WebKit REQUIRED)
246247
FIND_PACKAGE(Qt5WebKitWidgets REQUIRED)
247248
FIND_PACKAGE(Qt5Test REQUIRED)

src/core/CMakeLists.txt

+14-7
Original file line numberDiff line numberDiff line change
@@ -337,11 +337,11 @@ ELSE (WITH_INTERNAL_QEXTSERIALPORT)
337337
INCLUDE_DIRECTORIES(${QEXTSERIALPORT_INCLUDE_DIR})
338338
ENDIF (WITH_INTERNAL_QEXTSERIALPORT)
339339

340-
IF (QT_MOBILITY_LOCATION_FOUND)
340+
IF (QT_MOBILITY_LOCATION_FOUND OR Qt5Positioning_FOUND)
341341
SET(QGIS_CORE_SRCS ${QGIS_CORE_SRCS}
342342
gps/qgsqtlocationconnection.cpp
343343
)
344-
ENDIF (QT_MOBILITY_LOCATION_FOUND)
344+
ENDIF (QT_MOBILITY_LOCATION_FOUND OR Qt5Positioning_FOUND)
345345

346346
ADD_FLEX_FILES(QGIS_CORE_SRCS qgsexpressionlexer.ll)
347347

@@ -450,11 +450,11 @@ IF (WITH_INTERNAL_QEXTSERIALPORT)
450450
)
451451
ENDIF (WITH_INTERNAL_QEXTSERIALPORT)
452452

453-
IF (QT_MOBILITY_LOCATION_FOUND)
453+
IF (QT_MOBILITY_LOCATION_FOUND OR Qt5Positioning_FOUND)
454454
SET(QGIS_CORE_MOC_HDRS ${QGIS_CORE_MOC_HDRS}
455455
gps/qgsqtlocationconnection.h
456456
)
457-
ENDIF (QT_MOBILITY_LOCATION_FOUND)
457+
ENDIF (QT_MOBILITY_LOCATION_FOUND OR Qt5Positioning_FOUND)
458458

459459
QT4_WRAP_CPP(QGIS_CORE_MOC_SRCS ${QGIS_CORE_MOC_HDRS})
460460

@@ -666,11 +666,12 @@ SET(QGIS_CORE_HDRS
666666
layertree/qgslayertreeutils.h
667667
)
668668

669-
IF (QT_MOBILITY_LOCATION_FOUND)
669+
IF (QT_MOBILITY_LOCATION_FOUND OR Qt5Positioning_FOUND)
670670
SET(QGIS_CORE_HDRS ${QGIS_CORE_HDRS}
671+
gps/qgsqtlocationconnection.h
671672
gps/qgsgpsconnectionregistry.h
672673
)
673-
ENDIF (QT_MOBILITY_LOCATION_FOUND)
674+
ENDIF (QT_MOBILITY_LOCATION_FOUND OR Qt5Positioning_FOUND)
674675

675676
INCLUDE_DIRECTORIES(
676677
${CMAKE_CURRENT_SOURCE_DIR}
@@ -762,7 +763,7 @@ IF (NOT WITH_INTERNAL_QEXTSERIALPORT)
762763
ENDIF (NOT WITH_INTERNAL_QEXTSERIALPORT)
763764
764765
IF (QT_MOBILITY_LOCATION_FOUND)
765-
TARGET_LINK_LIBRARIES(qgis_core ${QT_MOBILITY_LOCATION_LIBRARY})
766+
TARGET_LINK_LIBRARIES(qgis_core ${QT_MOBILITY_LOCATION_LIBRARY})
766767
ENDIF (QT_MOBILITY_LOCATION_FOUND)
767768
768769
TARGET_LINK_LIBRARIES(qgis_core
@@ -783,6 +784,12 @@ TARGET_LINK_LIBRARIES(qgis_core
783784
${SPATIALITE_LIBRARY}
784785
)
785786
787+
IF (Qt5Positioning_FOUND)
788+
TARGET_LINK_LIBRARIES(qgis_core
789+
Qt5::Positioning
790+
)
791+
ENDIF (Qt5Positioning_FOUND)
792+
786793
# install
787794
788795
INSTALL(TARGETS qgis_core

src/core/gps/qgsgpsdetector.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include "qgsnmeaconnection.h"
2323
#include "qgsgpsdconnection.h"
2424

25-
#ifdef HAVE_QT_MOBILITY_LOCATION
25+
#if defined(HAVE_QT_MOBILITY_LOCATION ) || defined(QT_POSITIONING_LIB)
2626
#include "qgsqtlocationconnection.h"
2727
#endif
2828

@@ -35,7 +35,7 @@ QList< QPair<QString, QString> > QgsGPSDetector::availablePorts()
3535
QList< QPair<QString, QString> > devs;
3636

3737
// try local QtLocation first
38-
#ifdef HAVE_QT_MOBILITY_LOCATION
38+
#if defined(HAVE_QT_MOBILITY_LOCATION ) || defined(QT_POSITIONING_LIB)
3939
devs << QPair<QString, QString>( "internalGPS", tr( "internal GPS" ) );
4040
#endif
4141
// try local gpsd first
@@ -155,7 +155,7 @@ void QgsGPSDetector::advance()
155155
}
156156
else if ( mPortList[ mPortIndex ].first.contains( "internalGPS" ) )
157157
{
158-
#ifdef HAVE_QT_MOBILITY_LOCATION
158+
#if defined(HAVE_QT_MOBILITY_LOCATION ) || defined(QT_POSITIONING_LIB)
159159
mConn = new QgsQtLocationConnection();
160160
#else
161161
qWarning( "QT_MOBILITY_LOCATION not found and mPortList matches internalGPS, this should never happen" );

src/core/gps/qgsqtlocationconnection.cpp

+14-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ QgsQtLocationConnection::QgsQtLocationConnection(): QgsGPSConnection( new QLocal
2727
//needed to fix https://sourceforge.net/p/necessitas/tickets/146/
2828
qRegisterMetaType< QList<QGeoSatelliteInfo> >( "QList<QGeoSatelliteInfo>" );
2929

30-
startGPS();
3130
startSatelliteMonitor();
31+
startGPS();
3232

3333
//HACK to signal the gpsinformationwidget that we have a QtLocationConnection
3434
QTimer::singleShot( 500, this, SLOT( broadcastConnectionAvailable() ) );
@@ -65,7 +65,6 @@ void QgsQtLocationConnection::parseData()
6565
{
6666
mStatus = GPSDataReceived;
6767
//const QGeoPositionInfo &info = locationDataSource->lastKnownPosition();
68-
qDebug() << mInfo;
6968
if ( mInfo.isValid() )
7069
{
7170
// mInfo.HorizontalAccuracy;
@@ -110,7 +109,11 @@ void QgsQtLocationConnection::satellitesInViewUpdated(
110109
QgsSatelliteInfo satelliteInfo;
111110
satelliteInfo.azimuth = currentSatellite.attribute( QGeoSatelliteInfo::Azimuth );
112111
satelliteInfo.elevation = currentSatellite.attribute( QGeoSatelliteInfo::Elevation );
112+
#if defined(HAVE_QT_MOBILITY_LOCATION )
113113
satelliteInfo.id = currentSatellite.prnNumber();
114+
#else // QtPositioning
115+
satelliteInfo.id = currentSatellite.satelliteIdentifier();
116+
#endif
114117
satelliteInfo.signal = currentSatellite.signalStrength();
115118
mLastGPSInformation.satellitesInView.append( satelliteInfo );
116119
}
@@ -130,13 +133,21 @@ void QgsQtLocationConnection::satellitesInUseUpdated(
130133
{
131134
QGeoSatelliteInfo currentSatellite = satellites.at( i );
132135
//add pnr to mLastGPSInformation.satPrn
136+
#if defined(HAVE_QT_MOBILITY_LOCATION )
133137
mLastGPSInformation.satPrn.append( currentSatellite.prnNumber() );
138+
#else // QtPositioning
139+
mLastGPSInformation.satPrn.append( currentSatellite.satelliteIdentifier() );
140+
#endif
134141

135142
//set QgsSatelliteInfo.inuse to true for the satellites in use
136143
for ( int i = 0; i < mLastGPSInformation.satellitesInView.size(); ++i )
137144
{
138145
QgsSatelliteInfo satInView = mLastGPSInformation.satellitesInView.at( i );
146+
#if defined(HAVE_QT_MOBILITY_LOCATION )
139147
if ( satInView.id == currentSatellite.prnNumber() )
148+
#else // QtPositioning
149+
if ( satInView.id == currentSatellite.satelliteIdentifier() )
150+
#endif
140151
{
141152
satInView.inUse = true;
142153
break;
@@ -184,6 +195,7 @@ void QgsQtLocationConnection::startGPS()
184195
void QgsQtLocationConnection::startSatelliteMonitor()
185196
{
186197
QgsDebugMsg( "Starting GPS QtLocation satellite monitor" );
198+
187199
if ( !satelliteInfoSource )
188200
{
189201
satelliteInfoSource = QGeoSatelliteInfoSource::createDefaultSource( this );

src/core/gps/qgsqtlocationconnection.h

+12-4
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,20 @@
1919
#define QGSQTLOCATIONCONNECTION_H
2020

2121
#include "qgsgpsconnection.h"
22+
2223
#include <QtCore/QPointer>
23-
#include <QtLocation/QGeoPositionInfoSource>
24-
#include <QtLocation/QGeoSatelliteInfo>
25-
#include <QtLocation/QGeoSatelliteInfoSource>
2624

27-
QTM_USE_NAMESPACE
25+
#if defined(HAVE_QT_MOBILITY_LOCATION )
26+
#include <QtLocation/QGeoPositionInfoSource>
27+
#include <QtLocation/QGeoSatelliteInfo>
28+
#include <QtLocation/QGeoSatelliteInfoSource>
29+
30+
QTM_USE_NAMESPACE
31+
#else // Using QtPositioning
32+
#include <QtPositioning/QGeoPositionInfoSource>
33+
#include <QtPositioning/QGeoSatelliteInfo>
34+
#include <QtPositioning/QGeoSatelliteInfoSource>
35+
#endif
2836

2937
class CORE_EXPORT QgsQtLocationConnection: public QgsGPSConnection
3038
{

0 commit comments

Comments
 (0)