12 changed files with 56 additions and 539 deletions
@ -1,296 +0,0 @@
@@ -1,296 +0,0 @@
|
||||
import QtQuick 2.3 |
||||
import QtQuick.Controls 1.2 |
||||
import QtQuick.Layouts 1.2 |
||||
|
||||
import QGroundControl 1.0 |
||||
import QGroundControl.ScreenTools 1.0 |
||||
import QGroundControl.Controls 1.0 |
||||
import QGroundControl.FactControls 1.0 |
||||
import QGroundControl.Palette 1.0 |
||||
|
||||
// Camera calculator section for mission item editors |
||||
Column { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
|
||||
visible: !usingPreset || !cameraSpecifiedInPreset |
||||
|
||||
property var cameraCalc |
||||
property bool vehicleFlightIsFrontal: true |
||||
property string distanceToSurfaceLabel |
||||
property int distanceToSurfaceAltitudeMode: QGroundControl.AltitudeModeNone |
||||
property string frontalDistanceLabel |
||||
property string sideDistanceLabel |
||||
property bool usingPreset: false |
||||
property bool cameraSpecifiedInPreset: false |
||||
|
||||
property real _margin: ScreenTools.defaultFontPixelWidth / 2 |
||||
property string _cameraName: cameraCalc.cameraName.value |
||||
property real _fieldWidth: ScreenTools.defaultFontPixelWidth * 10.5 |
||||
property var _cameraList: [ ] |
||||
property var _vehicle: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.offlineEditingVehicle |
||||
property var _vehicleCameraList: _vehicle ? _vehicle.staticCameraList : [] |
||||
property bool _cameraComboFilled: false |
||||
|
||||
readonly property int _gridTypeManual: 0 |
||||
readonly property int _gridTypeCustomCamera: 1 |
||||
readonly property int _gridTypeCamera: 2 |
||||
|
||||
Component.onCompleted: _fillCameraCombo() |
||||
|
||||
on_CameraNameChanged: _updateSelectedCamera() |
||||
|
||||
function _fillCameraCombo() { |
||||
_cameraComboFilled = true |
||||
_cameraList.push(cameraCalc.manualCameraName) |
||||
_cameraList.push(cameraCalc.customCameraName) |
||||
for (var i=0; i<_vehicle.staticCameraList.length; i++) { |
||||
_cameraList.push(_vehicle.staticCameraList[i].name) |
||||
} |
||||
gridTypeCombo.model = _cameraList |
||||
_updateSelectedCamera() |
||||
} |
||||
|
||||
function _updateSelectedCamera() { |
||||
if (_cameraComboFilled) { |
||||
var knownCameraIndex = gridTypeCombo.find(_cameraName) |
||||
if (knownCameraIndex !== -1) { |
||||
gridTypeCombo.currentIndex = knownCameraIndex |
||||
} else { |
||||
console.log("Internal error: Known camera not found", _cameraName) |
||||
gridTypeCombo.currentIndex = _gridTypeCustomCamera |
||||
} |
||||
} |
||||
} |
||||
|
||||
QGCPalette { id: qgcPal; colorGroupEnabled: true } |
||||
|
||||
ExclusiveGroup { |
||||
id: cameraOrientationGroup |
||||
} |
||||
|
||||
SectionHeader { |
||||
id: cameraHeader |
||||
text: qsTr("Camera") |
||||
showSpacer: false |
||||
} |
||||
|
||||
Column { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
visible: cameraHeader.checked |
||||
|
||||
QGCComboBox { |
||||
id: gridTypeCombo |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
model: _cameraList |
||||
currentIndex: -1 |
||||
onActivated: cameraCalc.cameraName.value = gridTypeCombo.textAt(index) |
||||
} // QGCComboxBox |
||||
|
||||
// Camera based grid ui |
||||
Column { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
visible: !cameraCalc.isManualCamera |
||||
|
||||
Row { |
||||
spacing: _margin |
||||
anchors.horizontalCenter: parent.horizontalCenter |
||||
visible: !cameraCalc.fixedOrientation.value |
||||
|
||||
QGCRadioButton { |
||||
width: _editFieldWidth |
||||
text: "Landscape" |
||||
checked: !!cameraCalc.landscape.value |
||||
onClicked: cameraCalc.landscape.value = 1 |
||||
} |
||||
|
||||
QGCRadioButton { |
||||
id: cameraOrientationPortrait |
||||
text: "Portrait" |
||||
checked: !cameraCalc.landscape.value |
||||
onClicked: cameraCalc.landscape.value = 0 |
||||
} |
||||
} |
||||
|
||||
// Custom camera specs |
||||
Column { |
||||
id: custCameraCol |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
visible: cameraCalc.isCustomCamera |
||||
|
||||
RowLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
Item { Layout.fillWidth: true } |
||||
QGCLabel { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
text: qsTr("Width") |
||||
} |
||||
QGCLabel { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
text: qsTr("Height") |
||||
} |
||||
} |
||||
|
||||
RowLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
QGCLabel { text: qsTr("Sensor"); Layout.fillWidth: true } |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.sensorWidth |
||||
} |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.sensorHeight |
||||
} |
||||
} |
||||
|
||||
RowLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
QGCLabel { text: qsTr("Image"); Layout.fillWidth: true } |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.imageWidth |
||||
} |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.imageHeight |
||||
} |
||||
} |
||||
|
||||
RowLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
QGCLabel { |
||||
text: qsTr("Focal length") |
||||
Layout.fillWidth: true |
||||
} |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.focalLength |
||||
} |
||||
} |
||||
|
||||
} // Column - custom camera specs |
||||
|
||||
RowLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
visible: !usingPreset |
||||
Item { Layout.fillWidth: true } |
||||
QGCLabel { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
text: qsTr("Front Lap") |
||||
} |
||||
QGCLabel { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
text: qsTr("Side Lap") |
||||
} |
||||
} |
||||
|
||||
RowLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
spacing: _margin |
||||
visible: !usingPreset |
||||
QGCLabel { text: qsTr("Overlap"); Layout.fillWidth: true } |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.frontalOverlap |
||||
} |
||||
FactTextField { |
||||
Layout.preferredWidth: _root._fieldWidth |
||||
fact: cameraCalc.sideOverlap |
||||
} |
||||
} |
||||
|
||||
QGCLabel { |
||||
wrapMode: Text.WordWrap |
||||
text: qsTr("Select one:") |
||||
Layout.preferredWidth: parent.width |
||||
Layout.columnSpan: 2 |
||||
visible: !usingPreset |
||||
} |
||||
|
||||
GridLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
columnSpacing: _margin |
||||
rowSpacing: _margin |
||||
columns: 2 |
||||
visible: !usingPreset |
||||
|
||||
QGCRadioButton { |
||||
id: fixedDistanceRadio |
||||
text: distanceToSurfaceLabel |
||||
checked: !!cameraCalc.valueSetIsDistance.value |
||||
onClicked: cameraCalc.valueSetIsDistance.value = 1 |
||||
} |
||||
|
||||
AltitudeFactTextField { |
||||
fact: cameraCalc.distanceToSurface |
||||
altitudeMode: distanceToSurfaceAltitudeMode |
||||
enabled: fixedDistanceRadio.checked |
||||
Layout.fillWidth: true |
||||
} |
||||
|
||||
QGCRadioButton { |
||||
id: fixedImageDensityRadio |
||||
text: qsTr("Ground Res") |
||||
checked: !cameraCalc.valueSetIsDistance.value |
||||
onClicked: cameraCalc.valueSetIsDistance.value = 0 |
||||
} |
||||
|
||||
FactTextField { |
||||
fact: cameraCalc.imageDensity |
||||
enabled: fixedImageDensityRadio.checked |
||||
Layout.fillWidth: true |
||||
} |
||||
} |
||||
} // Column - Camera spec based ui |
||||
|
||||
// No camera spec ui |
||||
GridLayout { |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
columnSpacing: _margin |
||||
rowSpacing: _margin |
||||
columns: 2 |
||||
visible: cameraCalc.isManualCamera |
||||
|
||||
QGCLabel { text: distanceToSurfaceLabel } |
||||
AltitudeFactTextField { |
||||
fact: cameraCalc.distanceToSurface |
||||
altitudeMode: distanceToSurfaceAltitudeMode |
||||
Layout.fillWidth: true |
||||
} |
||||
|
||||
QGCLabel { text: frontalDistanceLabel } |
||||
FactTextField { |
||||
Layout.fillWidth: true |
||||
fact: cameraCalc.adjustedFootprintFrontal |
||||
} |
||||
|
||||
QGCLabel { text: sideDistanceLabel } |
||||
FactTextField { |
||||
Layout.fillWidth: true |
||||
fact: cameraCalc.adjustedFootprintSide |
||||
} |
||||
} // GridLayout |
||||
} // Column - Camera Section |
||||
} // Column |
Loading…
Reference in new issue