Skip to content

Commit

Permalink
mapSettings handling, MMDrawerHeader text eliding, activeProject para…
Browse files Browse the repository at this point in the history
…meter for units formatting
  • Loading branch information
VitorVieiraZ committed Sep 30, 2024
1 parent 7db69ef commit 35c4c46
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 24 deletions.
8 changes: 4 additions & 4 deletions app/inpututils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,13 +168,13 @@ QString InputUtils::formatNumber( const double number, int precision )
return QString::number( number, 'f', precision );
}

QString InputUtils::formatDistanceInProjectUnit( const double distanceInMeters, int precision, Qgis::DistanceUnit destUnit )
QString InputUtils::formatDistanceInProjectUnit( const double distanceInMeters, int precision, Qgis::DistanceUnit destUnit, QgsProject *activeProject )
{
Qgis::DistanceUnit distUnit = destUnit;

if ( distUnit == Qgis::DistanceUnit::Unknown )
{
distUnit = QgsProject::instance()->distanceUnits();
distUnit = activeProject->distanceUnits();
}

if ( distUnit == Qgis::DistanceUnit::Unknown )
Expand All @@ -189,13 +189,13 @@ QString InputUtils::formatDistanceInProjectUnit( const double distanceInMeters,
return QString( "%1 %2" ).arg( QString::number( distance, 'f', precision ), abbreviation );
}

QString InputUtils::formatAreaInProjectUnit( const double areaInSquareMeters, int precision, Qgis::AreaUnit destUnit )
QString InputUtils::formatAreaInProjectUnit( const double areaInSquareMeters, int precision, Qgis::AreaUnit destUnit, QgsProject *activeProject )
{
Qgis::AreaUnit areaUnit = destUnit;

if ( areaUnit == Qgis::AreaUnit::Unknown )
{
areaUnit = QgsProject::instance()->areaUnits();
areaUnit = activeProject->areaUnits();
}

if ( areaUnit == Qgis::AreaUnit::Unknown )
Expand Down
4 changes: 2 additions & 2 deletions app/inpututils.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ 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( const double distanceInMeters, int precision = 1, Qgis::DistanceUnit destUnit = Qgis::DistanceUnit::Unknown );
Q_INVOKABLE QString formatAreaInProjectUnit( const double areaInSquareMeters, int precision = 1, Qgis::AreaUnit destUnit = Qgis::AreaUnit::Unknown );
Q_INVOKABLE QString formatDistanceInProjectUnit( const double distanceInMeters, int precision = 1, Qgis::DistanceUnit destUnit = Qgis::DistanceUnit::Unknown, QgsProject *activeProject = QgsProject::instance() );
Q_INVOKABLE QString formatAreaInProjectUnit( const double areaInSquareMeters, int precision = 1, Qgis::AreaUnit destUnit = Qgis::AreaUnit::Unknown, QgsProject *activeProject = QgsProject::instance() );

Q_INVOKABLE void setExtentToFeature( const FeatureLayerPair &pair, InputMapSettings *mapSettings );

Expand Down
6 changes: 5 additions & 1 deletion app/maptools/abstractmaptool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,13 @@ InputMapSettings *AbstractMapTool::mapSettings() const
void AbstractMapTool::setMapSettings( InputMapSettings *newMapSettings )
{
if ( mMapSettings == newMapSettings )
{
return;
}
else
disconnect( mMapSettings, nullptr, this, nullptr );
{
disconnect( mMapSettings );
}

mMapSettings = newMapSettings;
emit mapSettingsChanged( mMapSettings );
Expand Down
2 changes: 1 addition & 1 deletion app/maptools/abstractmaptool.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class AbstractMapTool : public QObject
virtual ~AbstractMapTool();

InputMapSettings *mapSettings() const;
void setMapSettings( InputMapSettings *newMapSettings );
virtual void setMapSettings( InputMapSettings *newMapSettings );

signals:

Expand Down
21 changes: 16 additions & 5 deletions app/maptools/measurementmaptool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
MeasurementMapTool::MeasurementMapTool( QObject *parent )
: AbstractMapTool{ parent }
{
connect( this, &AbstractMapTool::mapSettingsChanged, this, &MeasurementMapTool::onMapSettingsChanged );
connect( this, &AbstractMapTool::mapSettingsChanged, this, &MeasurementMapTool::setMapSettings );
}

MeasurementMapTool::~MeasurementMapTool() = default;
Expand Down Expand Up @@ -131,14 +131,25 @@ void MeasurementMapTool::rebuildGeometry()
setRecordedGeometry( geometry );
}

void MeasurementMapTool::onMapSettingsChanged( InputMapSettings *newMapSettings )
void MeasurementMapTool::setMapSettings( InputMapSettings *newMapSettings )
{
if ( newMapSettings )
InputMapSettings *currentMapSettings = mapSettings();

if ( currentMapSettings )
{
disconnect( currentMapSettings );
}

AbstractMapTool::setMapSettings( newMapSettings );

InputMapSettings *updatedMapSettings = mapSettings();

if ( updatedMapSettings )
{
connect( newMapSettings, &InputMapSettings::extentChanged, this, &MeasurementMapTool::updateDistance );
connect( updatedMapSettings, &InputMapSettings::extentChanged, this, &MeasurementMapTool::updateDistance );

mDistanceArea.setEllipsoid( QStringLiteral( "WGS84" ) );
mDistanceArea.setSourceCrs( newMapSettings->destinationCrs(), newMapSettings->transformContext() );
mDistanceArea.setSourceCrs( updatedMapSettings->destinationCrs(), updatedMapSettings->transformContext() );
}
}

Expand Down
5 changes: 2 additions & 3 deletions app/maptools/measurementmaptool.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ class MeasurementMapTool : public AbstractMapTool
QgsGeometry existingVertices() const;
void setExistingVertices( const QgsGeometry &vertices );

void setMapSettings( InputMapSettings *newMapSettings ) override;

signals:
void lengthWithGuidelineChanged( const double &lengthWithGuideline );
void perimeterChanged( const double &perimeter );
Expand All @@ -112,9 +114,6 @@ class MeasurementMapTool : public AbstractMapTool
public slots:
void updateDistance();

private slots:
void onMapSettingsChanged( InputMapSettings *newMapSettings );

private:
QVector<QgsPoint> mPoints;
QgsGeometry mRecordedGeometry;
Expand Down
13 changes: 9 additions & 4 deletions app/qml/components/MMDrawerHeader.qml
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,18 @@ Rectangle {
}

Text {
// If the close button is visible, we need to properly center the text
property real margin: internal.closeBtnRealWidth + internal.headerSpacing + __style.pageMargins
property real leftMarginShift: {
return Math.max( internal.closeBtnRealWidth, topLeftButtonGroup.width ) + internal.headerSpacing + __style.pageMargins
}

property real rightMarginShift: {
return Math.max( internal.closeBtnRealWidth, topLeftButtonGroup.width ) + internal.headerSpacing + __style.pageMargins
}

anchors {
fill: parent
leftMargin: margin
rightMargin: margin
leftMargin: leftMarginShift
rightMargin: rightMarginShift
}

text: root.title
Expand Down
4 changes: 2 additions & 2 deletions app/qml/gps/MMMeasureDrawer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ MMDrawer {
property bool closeShapeDone: mapCanvas.mapToolComponent?.mapTool?.closeShapeDone ?? false
property bool canUndo: mapCanvas.mapToolComponent?.mapTool?.canUndo ?? false

property string perimeter: __inputUtils.formatDistanceInProjectUnit( mapCanvas.mapToolComponent?.mapTool?.perimeter ?? 0, 1 )
property string area: __inputUtils.formatAreaInProjectUnit( mapCanvas.mapToolComponent?.mapTool?.area ?? 0, 1 )
property string perimeter: __inputUtils.formatDistanceInProjectUnit( mapCanvas.mapToolComponent?.mapTool?.perimeter ?? 0, 1, __activeProject.qgsProject )
property string area: __inputUtils.formatAreaInProjectUnit( mapCanvas.mapToolComponent?.mapTool?.area ?? 0, 1, __activeProject.qgsProject )

signal measureFinished()
signal measureDone()
Expand Down
2 changes: 1 addition & 1 deletion app/qml/gps/MMStakeoutDrawer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ MMDrawer {
width: ( parent.width + parent.spacing ) / 2

title: qsTr( "Distance" )
value: remainingDistance >= 0 ?__inputUtils.formatDistanceInProjectUnit( remainingDistance, 2 ) : qsTr( "N/A" )
value: remainingDistance >= 0 ?__inputUtils.formatDistanceInProjectUnit( remainingDistance, 2, __activeProject.qgsProject ) : qsTr( "N/A" )
alignmentRight: true
}
}
Expand Down
2 changes: 1 addition & 1 deletion app/qml/map/MMMeasurementTools.qml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ Item {
qgsProject: __activeProject.qgsProject
mapSettings: root.map.mapSettings

text: __inputUtils.formatDistanceInProjectUnit( mapTool.lengthWithGuideline )
text: __inputUtils.formatDistanceInProjectUnit( mapTool.lengthWithGuideline, __activeProject.qgsProject )
canCloseShape: mapTool.canCloseShape

onCloseShapeClicked: closeShape()
Expand Down

1 comment on commit 35c4c46

@inputapp-bot
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

iOS - version 24.9.665211 just submitted!

Please sign in to comment.