diff --git a/.gitignore b/.gitignore index afde8b635..c4b695b88 100644 --- a/.gitignore +++ b/.gitignore @@ -11,17 +11,12 @@ core/merginsecrets.cpp test/temp_projects/ test/temp_extra_projects/ input.pro.user* -app/android/assets/qgis-data/proj_custom/ -app/android/assets/qgis-data/projects/ -app/android/assets/qgis-data/proj -app/android/assets/qgis-data/resources -app/android/assets/projects/ +app/android/assets app/android/AndroidManifest.xml +app/android/build.gradle +app/android/.gradle *.gpkg-wal *.gpkg-shm Input_keystore.keystore CMakeLists.txt.user -app/android/build.gradle -app/android/.gradle/* -app/android/.gradle .github/secrets/ios/LutraConsulting*.mobileprovision diff --git a/CMakeLists.txt b/CMakeLists.txt index 796643306..427d6abfb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -380,16 +380,25 @@ endif () # RESOURCES # ######################################################################################## message(STATUS "Copying proj and qgis resources to android/assets/qgis-data") -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/app/android/assets/qgis-data/resources) + +# On android we need to copy the resources into the source tree and then Qt will copy it +# to the android build directory with QT_ANDROID_PACKAGE_SOURCE_DIR +if (ANDROID) + set(ASSETS_DIR_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +else () + set(ASSETS_DIR_PATH ${CMAKE_BINARY_DIR}) +endif () + +file(MAKE_DIRECTORY ${ASSETS_DIR_PATH}/app/android/assets/qgis-data/resources) file(COPY ${QGIS_RESOURCE_DIR}/qgis.db - DESTINATION ${CMAKE_BINARY_DIR}/app/android/assets/qgis-data/resources/ + DESTINATION ${ASSETS_DIR_PATH}/app/android/assets/qgis-data/resources/ ) file(COPY ${QGIS_RESOURCE_DIR}/srs.db - DESTINATION ${CMAKE_BINARY_DIR}/app/android/assets/qgis-data/resources/ + DESTINATION ${ASSETS_DIR_PATH}/app/android/assets/qgis-data/resources/ ) file( COPY ${PROJ_DIR} - DESTINATION ${CMAKE_BINARY_DIR}/app/android/assets/qgis-data/ + DESTINATION ${ASSETS_DIR_PATH}/app/android/assets/qgis-data/ PATTERN "*.cmake" EXCLUDE PATTERN "vcpkg*" EXCLUDE ) diff --git a/app/position/positionkit.cpp b/app/position/positionkit.cpp index f2b65c224..92e3ddae0 100644 --- a/app/position/positionkit.cpp +++ b/app/position/positionkit.cpp @@ -212,6 +212,13 @@ void PositionKit::parsePositionUpdate( const GeoPosition &newPosition ) hasAnythingChanged = true; } + if ( !qgsDoubleNear( newPosition.elevation_diff, mPosition.elevation_diff ) ) + { + mPosition.elevation_diff = newPosition.elevation_diff; + emit geoidSeparationChanged( mPosition.elevation_diff ); + hasAnythingChanged = true; + } + if ( newPosition.hasValidPosition() != mHasPosition ) { mHasPosition = newPosition.hasValidPosition(); @@ -349,6 +356,11 @@ double PositionKit::altitude() const return mPosition.elevation; } +double PositionKit::geoidSeparation() const +{ + return mPosition.elevation_diff; +} + QgsPoint PositionKit::positionCoordinate() const { if ( mPosition.hasValidPosition() ) diff --git a/app/position/positionkit.h b/app/position/positionkit.h index 374ca497a..b8a6859de 100644 --- a/app/position/positionkit.h +++ b/app/position/positionkit.h @@ -30,7 +30,9 @@ class PositionKit : public QObject Q_PROPERTY( double latitude READ latitude NOTIFY latitudeChanged ) Q_PROPERTY( double longitude READ longitude NOTIFY longitudeChanged ) + Q_PROPERTY( double altitude READ altitude NOTIFY altitudeChanged ) + Q_PROPERTY( double geoidSeparation READ geoidSeparation NOTIFY geoidSeparationChanged ) // auxiliary property providing QgsPoint for lat/long/alt instead of separate properties Q_PROPERTY( QgsPoint positionCoordinate READ positionCoordinate NOTIFY positionCoordinateChanged ) @@ -84,6 +86,7 @@ class PositionKit : public QObject double latitude() const; double longitude() const; double altitude() const; + double geoidSeparation() const; QgsPoint positionCoordinate() const; bool hasPosition() const; @@ -127,6 +130,7 @@ class PositionKit : public QObject void latitudeChanged( double ); void longitudeChanged( double ); void altitudeChanged( double ); + void geoidSeparationChanged( double ); void positionCoordinateChanged( QgsPoint ); void hasPositionChanged( bool ); diff --git a/app/qml/gps/MMGpsDataDrawer.qml b/app/qml/gps/MMGpsDataDrawer.qml index d7b2f7597..f7b4d6f8f 100644 --- a/app/qml/gps/MMGpsDataDrawer.qml +++ b/app/qml/gps/MMGpsDataDrawer.qml @@ -316,6 +316,20 @@ MMComponents.MMDrawer { alignmentRight: Positioner.index % 2 === 1 } + + MMGpsComponents.MMGpsDataText { + width: parent.width / 2 + + title: qsTr( "Geoid separation" ) + value: { + if ( !__positionKit.hasPosition || Number.isNaN( __positionKit.geoidSeparation ) ) { + return qsTr( "N/A" ) + } + __inputUtils.formatNumber( __positionKit.geoidSeparation, 2 ) + " m" + } + + alignmentRight: Positioner.index % 2 === 1 + } } } diff --git a/app/variablesmanager.cpp b/app/variablesmanager.cpp index 375204f0a..16fdf184a 100644 --- a/app/variablesmanager.cpp +++ b/app/variablesmanager.cpp @@ -72,6 +72,7 @@ QgsExpressionContextScope *VariablesManager::positionScope() addPositionVariable( scope, QStringLiteral( "longitude" ), position.longitude ); addPositionVariable( scope, QStringLiteral( "latitude" ), position.latitude ); addPositionVariable( scope, QStringLiteral( "altitude" ), position.elevation ); + addPositionVariable( scope, QStringLiteral( "geoid_separation" ), position.elevation_diff ); addPositionVariable( scope, QStringLiteral( "horizontal_accuracy" ), getGeoPositionAttribute( position.hacc ) ); addPositionVariable( scope, QStringLiteral( "vertical_accuracy" ), getGeoPositionAttribute( position.vacc ) ); addPositionVariable( scope, QStringLiteral( "ground_speed" ), getGeoPositionAttribute( position.speed ) );