From 2f2f1ae203188ac3813484ed88454e93be10c880 Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Thu, 29 Feb 2024 17:09:38 +0700 Subject: [PATCH] Move positioning activation around to allow for project load tracker launch --- src/core/trackingmodel.cpp | 2 ++ src/qml/LayerTreeItemProperties.qml | 4 ---- src/qml/qgismobileapp.qml | 9 +++++++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/trackingmodel.cpp b/src/core/trackingmodel.cpp index b1a03c6f5e..cf1f0b7320 100644 --- a/src/core/trackingmodel.cpp +++ b/src/core/trackingmodel.cpp @@ -264,6 +264,7 @@ void TrackingModel::createProjectTrackers( QgsProject *project ) const bool sensorDataRequirementActive = layer->customProperty( "QFieldSync/tracking_sensor_data_requirement_active", false ).toBool(); const bool allRequirementsActive = layer->customProperty( "QFieldSync/tracking_all_requirements_active", false ).toBool(); const bool erroneousDistanceSafeguardActive = layer->customProperty( "QFieldSync/tracking_erroneous_distance_safeguard_active", false ).toBool(); + const bool erroneousDistanceSafeguardMaximumMeters = layer->customProperty( "QFieldSync/tracking_erroneous_distance_safeguard_maximum_meters", 250 ).toInt(); const int measurementType = layer->customProperty( "QFieldSync/tracking_measurement_type", false ).toInt(); Tracker *tracker = new Tracker( vl ); @@ -271,6 +272,7 @@ void TrackingModel::createProjectTrackers( QgsProject *project ) tracker->setMinimumDistance( distanceRequirementActive ? distanceRequirementMinimumMeters : 0 ); tracker->setSensorCapture( sensorDataRequirementActive ); tracker->setConjunction( allRequirementsActive ); + tracker->setMaximumDistance( erroneousDistanceSafeguardActive ? erroneousDistanceSafeguardMaximumMeters : 0 ); tracker->setMeasureType( static_cast( measurementType ) ); QgsExpressionContext context = vl->createExpressionContext(); diff --git a/src/qml/LayerTreeItemProperties.qml b/src/qml/LayerTreeItemProperties.qml index 3321075522..9aec16ab76 100644 --- a/src/qml/LayerTreeItemProperties.qml +++ b/src/qml/LayerTreeItemProperties.qml @@ -304,10 +304,6 @@ Popup { trackingModel.stopTracker(layer); displayToast(qsTr('Track on layer %1 stopped').arg(layer.name)) } else { - if (!positionSource.active) { - positioningSettings.positioningActivated = true - } - var tracker; var idx = projectInfo.restoreTracker(layer) if (idx.valid) { diff --git a/src/qml/qgismobileapp.qml b/src/qml/qgismobileapp.qml index a78e187503..fe469218aa 100644 --- a/src/qml/qgismobileapp.qml +++ b/src/qml/qgismobileapp.qml @@ -591,6 +591,15 @@ ApplicationWindow { id: trackings model: trackingModel + onCountChanged: { + if (count > 0) { + // Start positioning if not yet active + if (!positionSource.active) { + positioningSettings.positioningActivated = true + } + } + } + TrackingSession {} }