|
|
@ -54,174 +54,193 @@ Rectangle { |
|
|
|
anchors.top: parent.top |
|
|
|
anchors.top: parent.top |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.right: parent.right |
|
|
|
anchors.right: parent.right |
|
|
|
spacing: _margin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QGCTabBar { |
|
|
|
ColumnLayout { |
|
|
|
id: tabBar |
|
|
|
|
|
|
|
anchors.left: parent.left |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.right: parent.right |
|
|
|
anchors.right: parent.right |
|
|
|
|
|
|
|
spacing: _margin |
|
|
|
|
|
|
|
visible: !missionItem.corridorPolyline.isValid |
|
|
|
|
|
|
|
|
|
|
|
Component.onCompleted: currentIndex = 0 |
|
|
|
QGCLabel { |
|
|
|
|
|
|
|
Layout.fillWidth: true |
|
|
|
QGCTabButton { text: qsTr("Grid") } |
|
|
|
wrapMode: Text.WordWrap |
|
|
|
QGCTabButton { text: qsTr("Camera") } |
|
|
|
text: qsTr("Use the Corridor Tools to create the polyline which defines the corridor.") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Column { |
|
|
|
Column { |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.right: parent.right |
|
|
|
anchors.right: parent.right |
|
|
|
spacing: _margin |
|
|
|
spacing: _margin |
|
|
|
visible: tabBar.currentIndex == 0 |
|
|
|
visible: missionItem.surveyAreaPolygon.isValid |
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { |
|
|
|
QGCTabBar { |
|
|
|
|
|
|
|
id: tabBar |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.left: parent.left |
|
|
|
anchors.right: parent.right |
|
|
|
anchors.right: parent.right |
|
|
|
text: qsTr("WARNING: Photo interval is below minimum interval (%1 secs) supported by camera.").arg(_cameraMinTriggerInterval.toFixed(1)) |
|
|
|
|
|
|
|
wrapMode: Text.WordWrap |
|
|
|
|
|
|
|
color: qgcPal.warningText |
|
|
|
|
|
|
|
visible: missionItem.cameraShots > 0 && _cameraMinTriggerInterval !== 0 && _cameraMinTriggerInterval > missionItem.timeBetweenShots |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Component.onCompleted: currentIndex = 0 |
|
|
|
|
|
|
|
|
|
|
|
CameraCalcGrid { |
|
|
|
QGCTabButton { text: qsTr("Grid") } |
|
|
|
cameraCalc: missionItem.cameraCalc |
|
|
|
QGCTabButton { text: qsTr("Camera") } |
|
|
|
vehicleFlightIsFrontal: true |
|
|
|
|
|
|
|
distanceToSurfaceLabel: qsTr("Altitude") |
|
|
|
|
|
|
|
distanceToSurfaceAltitudeMode: missionItem.followTerrain ? |
|
|
|
|
|
|
|
QGroundControl.AltitudeModeAboveTerrain : |
|
|
|
|
|
|
|
missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
|
|
|
|
frontalDistanceLabel: qsTr("Trigger Dist") |
|
|
|
|
|
|
|
sideDistanceLabel: qsTr("Spacing") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
SectionHeader { |
|
|
|
Column { |
|
|
|
id: corridorHeader |
|
|
|
anchors.left: parent.left |
|
|
|
text: qsTr("Corridor") |
|
|
|
anchors.right: parent.right |
|
|
|
} |
|
|
|
spacing: _margin |
|
|
|
|
|
|
|
visible: tabBar.currentIndex == 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { |
|
|
|
|
|
|
|
anchors.left: parent.left |
|
|
|
|
|
|
|
anchors.right: parent.right |
|
|
|
|
|
|
|
text: qsTr("WARNING: Photo interval is below minimum interval (%1 secs) supported by camera.").arg(_cameraMinTriggerInterval.toFixed(1)) |
|
|
|
|
|
|
|
wrapMode: Text.WordWrap |
|
|
|
|
|
|
|
color: qgcPal.warningText |
|
|
|
|
|
|
|
visible: missionItem.cameraShots > 0 && _cameraMinTriggerInterval !== 0 && _cameraMinTriggerInterval > missionItem.timeBetweenShots |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
GridLayout { |
|
|
|
|
|
|
|
anchors.left: parent.left |
|
|
|
CameraCalcGrid { |
|
|
|
anchors.right: parent.right |
|
|
|
cameraCalc: missionItem.cameraCalc |
|
|
|
columnSpacing: _margin |
|
|
|
vehicleFlightIsFrontal: true |
|
|
|
rowSpacing: _margin |
|
|
|
distanceToSurfaceLabel: qsTr("Altitude") |
|
|
|
columns: 2 |
|
|
|
distanceToSurfaceAltitudeMode: missionItem.followTerrain ? |
|
|
|
visible: corridorHeader.checked |
|
|
|
QGroundControl.AltitudeModeAboveTerrain : |
|
|
|
|
|
|
|
missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
QGCLabel { text: qsTr("Width") } |
|
|
|
frontalDistanceLabel: qsTr("Trigger Dist") |
|
|
|
FactTextField { |
|
|
|
sideDistanceLabel: qsTr("Spacing") |
|
|
|
fact: missionItem.corridorWidth |
|
|
|
|
|
|
|
Layout.fillWidth: true |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { text: qsTr("Turnaround dist") } |
|
|
|
SectionHeader { |
|
|
|
FactTextField { |
|
|
|
id: corridorHeader |
|
|
|
fact: missionItem.turnAroundDistance |
|
|
|
text: qsTr("Corridor") |
|
|
|
Layout.fillWidth: true |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QGCOptionsComboBox { |
|
|
|
GridLayout { |
|
|
|
Layout.columnSpan: 2 |
|
|
|
anchors.left: parent.left |
|
|
|
Layout.fillWidth: true |
|
|
|
anchors.right: parent.right |
|
|
|
|
|
|
|
columnSpacing: _margin |
|
|
|
model: [ |
|
|
|
rowSpacing: _margin |
|
|
|
{ |
|
|
|
columns: 2 |
|
|
|
text: qsTr("Images in turnarounds"), |
|
|
|
visible: corridorHeader.checked |
|
|
|
fact: missionItem.cameraTriggerInTurnAround, |
|
|
|
|
|
|
|
enabled: missionItem.hoverAndCaptureAllowed ? !missionItem.hoverAndCapture.rawValue : true, |
|
|
|
QGCLabel { text: qsTr("Width") } |
|
|
|
visible: true |
|
|
|
FactTextField { |
|
|
|
}, |
|
|
|
fact: missionItem.corridorWidth |
|
|
|
{ |
|
|
|
Layout.fillWidth: true |
|
|
|
text: qsTr("Relative altitude"), |
|
|
|
} |
|
|
|
enabled: missionItem.cameraCalc.isManualCamera && !missionItem.followTerrain, |
|
|
|
|
|
|
|
visible: QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || (!missionItem.cameraCalc.distanceToSurfaceRelative && !missionItem.followTerrain), |
|
|
|
|
|
|
|
checked: missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onItemClicked: { |
|
|
|
QGCLabel { text: qsTr("Turnaround dist") } |
|
|
|
if (index == 1) { |
|
|
|
FactTextField { |
|
|
|
missionItem.cameraCalc.distanceToSurfaceRelative = !missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
fact: missionItem.turnAroundDistance |
|
|
|
console.log(missionItem.cameraCalc.distanceToSurfaceRelative) |
|
|
|
Layout.fillWidth: true |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QGCButton { |
|
|
|
QGCOptionsComboBox { |
|
|
|
text: qsTr("Rotate Entry Point") |
|
|
|
Layout.columnSpan: 2 |
|
|
|
onClicked: missionItem.rotateEntryPoint() |
|
|
|
Layout.fillWidth: true |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SectionHeader { |
|
|
|
model: [ |
|
|
|
id: terrainHeader |
|
|
|
{ |
|
|
|
text: qsTr("Terrain") |
|
|
|
text: qsTr("Images in turnarounds"), |
|
|
|
checked: missionItem.followTerrain |
|
|
|
fact: missionItem.cameraTriggerInTurnAround, |
|
|
|
} |
|
|
|
enabled: missionItem.hoverAndCaptureAllowed ? !missionItem.hoverAndCapture.rawValue : true, |
|
|
|
|
|
|
|
visible: true |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
text: qsTr("Relative altitude"), |
|
|
|
|
|
|
|
enabled: missionItem.cameraCalc.isManualCamera && !missionItem.followTerrain, |
|
|
|
|
|
|
|
visible: QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || (!missionItem.cameraCalc.distanceToSurfaceRelative && !missionItem.followTerrain), |
|
|
|
|
|
|
|
checked: missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onItemClicked: { |
|
|
|
|
|
|
|
if (index == 1) { |
|
|
|
|
|
|
|
missionItem.cameraCalc.distanceToSurfaceRelative = !missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
|
|
|
|
console.log(missionItem.cameraCalc.distanceToSurfaceRelative) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ColumnLayout { |
|
|
|
QGCButton { |
|
|
|
anchors.left: parent.left |
|
|
|
text: qsTr("Rotate Entry Point") |
|
|
|
anchors.right: parent.right |
|
|
|
onClicked: missionItem.rotateEntryPoint() |
|
|
|
spacing: _margin |
|
|
|
} |
|
|
|
visible: terrainHeader.checked |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QGCCheckBox { |
|
|
|
SectionHeader { |
|
|
|
id: followsTerrainCheckBox |
|
|
|
id: terrainHeader |
|
|
|
text: qsTr("Vehicle follows terrain") |
|
|
|
text: qsTr("Terrain") |
|
|
|
checked: missionItem.followTerrain |
|
|
|
checked: missionItem.followTerrain |
|
|
|
onClicked: missionItem.followTerrain = checked |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
GridLayout { |
|
|
|
ColumnLayout { |
|
|
|
Layout.fillWidth: true |
|
|
|
anchors.left: parent.left |
|
|
|
columnSpacing: _margin |
|
|
|
anchors.right: parent.right |
|
|
|
rowSpacing: _margin |
|
|
|
spacing: _margin |
|
|
|
columns: 2 |
|
|
|
visible: terrainHeader.checked |
|
|
|
visible: followsTerrainCheckBox.checked |
|
|
|
|
|
|
|
|
|
|
|
QGCCheckBox { |
|
|
|
QGCLabel { text: qsTr("Tolerance") } |
|
|
|
id: followsTerrainCheckBox |
|
|
|
FactTextField { |
|
|
|
text: qsTr("Vehicle follows terrain") |
|
|
|
fact: missionItem.terrainAdjustTolerance |
|
|
|
checked: missionItem.followTerrain |
|
|
|
Layout.fillWidth: true |
|
|
|
onClicked: missionItem.followTerrain = checked |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { text: qsTr("Max Climb Rate") } |
|
|
|
GridLayout { |
|
|
|
FactTextField { |
|
|
|
|
|
|
|
fact: missionItem.terrainAdjustMaxClimbRate |
|
|
|
|
|
|
|
Layout.fillWidth: true |
|
|
|
Layout.fillWidth: true |
|
|
|
} |
|
|
|
columnSpacing: _margin |
|
|
|
|
|
|
|
rowSpacing: _margin |
|
|
|
|
|
|
|
columns: 2 |
|
|
|
|
|
|
|
visible: followsTerrainCheckBox.checked |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { text: qsTr("Tolerance") } |
|
|
|
|
|
|
|
FactTextField { |
|
|
|
|
|
|
|
fact: missionItem.terrainAdjustTolerance |
|
|
|
|
|
|
|
Layout.fillWidth: true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { text: qsTr("Max Descent Rate") } |
|
|
|
QGCLabel { text: qsTr("Max Climb Rate") } |
|
|
|
FactTextField { |
|
|
|
FactTextField { |
|
|
|
fact: missionItem.terrainAdjustMaxDescentRate |
|
|
|
fact: missionItem.terrainAdjustMaxClimbRate |
|
|
|
Layout.fillWidth: true |
|
|
|
Layout.fillWidth: true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QGCLabel { text: qsTr("Max Descent Rate") } |
|
|
|
|
|
|
|
FactTextField { |
|
|
|
|
|
|
|
fact: missionItem.terrainAdjustMaxDescentRate |
|
|
|
|
|
|
|
Layout.fillWidth: true |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SectionHeader { |
|
|
|
SectionHeader { |
|
|
|
id: statsHeader |
|
|
|
id: statsHeader |
|
|
|
text: qsTr("Statistics") |
|
|
|
text: qsTr("Statistics") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TransectStyleComplexItemStats { } |
|
|
|
|
|
|
|
} // Grid Column |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Column { |
|
|
|
TransectStyleComplexItemStats { } |
|
|
|
anchors.left: parent.left |
|
|
|
} // Grid Column |
|
|
|
anchors.right: parent.right |
|
|
|
|
|
|
|
spacing: _margin |
|
|
|
Column { |
|
|
|
visible: tabBar.currentIndex == 1 |
|
|
|
anchors.left: parent.left |
|
|
|
|
|
|
|
anchors.right: parent.right |
|
|
|
CameraCalcCamera { |
|
|
|
spacing: _margin |
|
|
|
cameraCalc: missionItem.cameraCalc |
|
|
|
visible: tabBar.currentIndex == 1 |
|
|
|
vehicleFlightIsFrontal: true |
|
|
|
|
|
|
|
distanceToSurfaceLabel: qsTr("Altitude") |
|
|
|
CameraCalcCamera { |
|
|
|
distanceToSurfaceAltitudeMode: missionItem.followTerrain ? |
|
|
|
cameraCalc: missionItem.cameraCalc |
|
|
|
QGroundControl.AltitudeModeAboveTerrain : |
|
|
|
vehicleFlightIsFrontal: true |
|
|
|
missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
distanceToSurfaceLabel: qsTr("Altitude") |
|
|
|
frontalDistanceLabel: qsTr("Trigger Dist") |
|
|
|
distanceToSurfaceAltitudeMode: missionItem.followTerrain ? |
|
|
|
sideDistanceLabel: qsTr("Spacing") |
|
|
|
QGroundControl.AltitudeModeAboveTerrain : |
|
|
|
|
|
|
|
missionItem.cameraCalc.distanceToSurfaceRelative |
|
|
|
|
|
|
|
frontalDistanceLabel: qsTr("Trigger Dist") |
|
|
|
|
|
|
|
sideDistanceLabel: qsTr("Spacing") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} // Camera Column |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} // Rectangle |
|
|
|
} |
|
|
|