Skip to content

Commit

Permalink
Show feature form when creating tracking sessions on project load (an…
Browse files Browse the repository at this point in the history
…d respect supression mode)
  • Loading branch information
nirvn committed Feb 29, 2024
1 parent 48aa317 commit c579938
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 4 deletions.
11 changes: 10 additions & 1 deletion src/core/trackingmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -283,8 +283,17 @@ void TrackingModel::createProjectTrackers( QgsProject *project )
mTrackers.append( tracker );
endInsertRows();

startTracker( vl );
requestTrackingSettings( vl, true );
}
}
}
}

void TrackingModel::requestTrackingSettings( QgsVectorLayer *layer, bool skipSettings )
{
Tracker *tracker = trackerForLayer( layer );
if ( tracker )
{
emit trackingSettingsRequested( index( mTrackers.indexOf( tracker ), 0 ), skipSettings );
}
}
5 changes: 5 additions & 0 deletions src/core/trackingmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,14 @@ class TrackingModel : public QAbstractItemModel

void reset();

Q_INVOKABLE void requestTrackingSettings( QgsVectorLayer *layer, bool skipSettings = false );

signals:

void layerInTrackingChanged( QgsVectorLayer *layer, bool tracking );

void trackingSettingsRequested( QModelIndex trackerIndex, bool skipSettings );

private:
QList<Tracker *> mTrackers;
QList<Tracker *>::const_iterator trackerIterator( QgsVectorLayer *layer )
Expand Down
4 changes: 1 addition & 3 deletions src/qml/LayerTreeItemProperties.qml
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,7 @@ Popup {
tracker.conjunction = positioningSettings.trackerMeetAllConstraints
tracker.measureType = positioningSettings.trackerMeasureType
}
trackerSettings.tracker = tracker
trackerSettings.open()
trackerSettings.focus = true
trackingModel.requestTrackingSettings(layer)
}
}
}
Expand Down
25 changes: 25 additions & 0 deletions src/qml/TrackerSettings.qml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,31 @@ Popup {
closePolicy: Popup.CloseOnEscape

property var tracker: undefined

Connections {
target: trackingModel

function onTrackingSettingsRequested(trackerIndex, skipSettings) {
tracker = trackings.itemAt(trackerIndex.row).tracker
if (!skipSettings) {
trackerSettings.open()
trackerSettings.focus = true
} else {
featureModel.resetAttributes()
tracker.feature = featureModel.feature
if (embeddedAttributeFormModel.rowCount() > 0 && !featureModel.suppressFeatureForm()) {
embeddedFeatureForm.active = true
} else {
trackingModel.startTracker(tracker.vectorLayer)
displayToast(qsTr('Track on layer %1 started').arg(tracker.vectorLayer.name))
if (featureModel.currentLayer.geometryType === Qgis.GeometryType.Point) {
projectInfo.saveTracker(featureModel.currentLayer)
}
}
}
}
}

onTrackerChanged: {
if (tracker != undefined) {
featureModel.currentLayer = tracker.vectorLayer
Expand Down

0 comments on commit c579938

Please sign in to comment.