You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
6.5 KiB
175 lines
6.5 KiB
6 years ago
|
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 "Camera" section for mission item editors
|
||
|
Column {
|
||
|
anchors.left: parent.left
|
||
|
anchors.right: parent.right
|
||
|
spacing: _margin
|
||
|
|
||
|
property var cameraCalc
|
||
|
|
||
|
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
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
anchors.left: parent.left
|
||
|
anchors.right: parent.right
|
||
|
spacing: _margin
|
||
|
|
||
|
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
|
||
|
} // Column - Camera spec based ui
|
||
|
} // Column - Camera Section
|
||
|
} // Column
|