4import QGroundControl.Controls
10 required property bool cameraTrackingEnabled
12 property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
13 property var _gimbalController: _activeVehicle ? _activeVehicle.gimbalController : undefined
14 property var _activeGimbal: _gimbalController ? _gimbalController.activeGimbal : undefined
15 property bool _gimbalAvailable: _activeGimbal != undefined
16 property var _gimbalControllerSettings: QGroundControl.settingsManager.gimbalControllerSettings
17 property bool _shouldProcessClicks: _gimbalControllerSettings.enableOnScreenControl.value && _activeGimbal && !cameraTrackingEnabled ? true : false
19 property real _mouseX: 0
20 property real _mouseY: 0
21 property real _dragStartNormX: 0
22 property real _dragStartNormY: 0
24 function _toNormX(mouseX) { return ((mouseX / width) * 2) - 1 }
25 function _toNormY(mouseY) { return -((mouseY / height) * 2) + 1 }
27 function mouseClicked(mouseX, mouseY) {
28 if (!_shouldProcessClicks) {
31 if (_gimbalControllerSettings.clickAndDrag.rawValue) {
34 if (rootItem._gimbalAvailable) {
35 _gimbalController.gimbalOnScreenControl(_toNormX(mouseX), _toNormY(mouseY), true, false, false)
39 function mouseDragStart(mouseX, mouseY) {
40 if (!_shouldProcessClicks) {
43 if (!_gimbalControllerSettings.clickAndDrag.rawValue) {
48 _dragStartNormX = _toNormX(mouseX)
49 _dragStartNormY = _toNormY(mouseY)
53 function mouseDragPositionChanged(mouseX, mouseY) {
58 function mouseDragEnd() {
67 if (rootItem._gimbalAvailable) {
68 var dx = rootItem._toNormX(rootItem._mouseX) - rootItem._dragStartNormX
69 var dy = rootItem._toNormY(rootItem._mouseY) - rootItem._dragStartNormY
70 _gimbalController.gimbalOnScreenControl(dx, dy, false, true, true)