From 9cf63a2f5d5bb32f128b02d21d361b9c27843d50 Mon Sep 17 00:00:00 2001 From: Lubos Date: Tue, 3 Oct 2023 16:08:37 +0200 Subject: [PATCH] Use distance unit from QGis projekt in Stakeout panel --- app/inpututils.cpp | 10 +++++----- app/inpututils.h | 2 +- app/qml/StakeoutPanel.qml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/inpututils.cpp b/app/inpututils.cpp index cfb472890..b5333c2ad 100644 --- a/app/inpututils.cpp +++ b/app/inpututils.cpp @@ -160,18 +160,18 @@ QString InputUtils::formatNumber( const double number, int precision ) return QString::number( number, 'f', precision ); } -QString InputUtils::formatDistanceInProjectUnit( InputMapSettings *mapSettings, const double distanceInMeters, int precision ) +QString InputUtils::formatDistanceInProjectUnit( const double distanceInMeters, int precision ) { - QgsCoordinateReferenceSystem projectCrs = mapSettings->destinationCrs(); + Qgis::DistanceUnit distUnit = QgsProject::instance()->distanceUnits(); - if ( !projectCrs.isValid() || projectCrs.mapUnits() == Qgis::DistanceUnit::Unknown ) + if ( distUnit == Qgis::DistanceUnit::Unknown ) { return QString::number( distanceInMeters, 'f', precision ); } - double factor = QgsUnitTypes::fromUnitToUnitFactor( Qgis::DistanceUnit::Meters, projectCrs.mapUnits() ); + double factor = QgsUnitTypes::fromUnitToUnitFactor( Qgis::DistanceUnit::Meters, distUnit ); double distance = distanceInMeters * factor; - QString abbreviation = QgsUnitTypes::toAbbreviatedString( projectCrs.mapUnits() ); + QString abbreviation = QgsUnitTypes::toAbbreviatedString( distUnit ); return QString( "%1 %2" ).arg( QString::number( distance, 'f', precision ), abbreviation ); } diff --git a/app/inpututils.h b/app/inpututils.h index 01d2dd981..e930a2fff 100644 --- a/app/inpututils.h +++ b/app/inpututils.h @@ -75,7 +75,7 @@ class InputUtils: public QObject Q_INVOKABLE QString getFileName( const QString &filePath ); Q_INVOKABLE QString formatProjectName( const QString &fullProjectName ); Q_INVOKABLE QString formatNumber( const double number, int precision = 1 ); - Q_INVOKABLE QString formatDistanceInProjectUnit( InputMapSettings *mapSettings, const double distanceInMeters, int precision = 1 ); + Q_INVOKABLE QString formatDistanceInProjectUnit( const double distanceInMeters, int precision = 1 ); Q_INVOKABLE void setExtentToFeature( const FeatureLayerPair &pair, InputMapSettings *mapSettings, double panelOffsetRatio ); // utility functions to extract information from map settings diff --git a/app/qml/StakeoutPanel.qml b/app/qml/StakeoutPanel.qml index 7bbe74904..73c9edeee 100644 --- a/app/qml/StakeoutPanel.qml +++ b/app/qml/StakeoutPanel.qml @@ -240,7 +240,7 @@ Item { width: parent.width / 2 titleText: qsTr( "Distance" ) - text: remainingDistance >= 0 ?__inputUtils.formatDistanceInProjectUnit( root.mapCanvas.mapSettings, remainingDistance, 2 ) : "N/A" + text: remainingDistance >= 0 ?__inputUtils.formatDistanceInProjectUnit( remainingDistance, 2 ) : "N/A" titleComponent.wrapMode: Text.NoWrap titleComponent.elide: Text.ElideRight