|
|
|
@ -39,40 +39,20 @@ Item {
@@ -39,40 +39,20 @@ Item {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
property bool mainIsMap: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_mainIsMapKey, true) : true |
|
|
|
|
property bool isBackgroundDark: mainIsMap ? (mainWindow.flightDisplayMap ? mainWindow.flightDisplayMap.isSatelliteMap : true) : true |
|
|
|
|
|
|
|
|
|
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle |
|
|
|
|
property var _missionController: _planController.missionController |
|
|
|
|
property var _geoFenceController: _planController.geoFenceController |
|
|
|
|
property var _rallyPointController: _planController.rallyPointController |
|
|
|
|
property bool _isPipVisible: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_PIPVisibleKey, true) : false |
|
|
|
|
property real _margins: ScreenTools.defaultFontPixelWidth / 2 |
|
|
|
|
property real _pipSize: mainWindow.width * 0.2 |
|
|
|
|
property alias _guidedController: guidedActionsController |
|
|
|
|
property alias _guidedConfirm: guidedActionConfirm |
|
|
|
|
property alias _guidedList: guidedActionList |
|
|
|
|
property alias _guidedSlider: altitudeSlider |
|
|
|
|
property real _guidedZOrder: _flightVideoPipControl.z + 1 |
|
|
|
|
property real _toolsMargin: ScreenTools.defaultFontPixelWidth * 0.75 |
|
|
|
|
property bool _mainWindowIsMap: mapControl.pipState.state === mapControl.pipState.fullState |
|
|
|
|
property bool _isMapDark: _mainWindowIsMap ? mapControl.isSatelliteMap : true |
|
|
|
|
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle |
|
|
|
|
property var _missionController: _planController.missionController |
|
|
|
|
property var _geoFenceController: _planController.geoFenceController |
|
|
|
|
property var _rallyPointController: _planController.rallyPointController |
|
|
|
|
property real _margins: ScreenTools.defaultFontPixelWidth / 2 |
|
|
|
|
property alias _guidedController: guidedActionsController |
|
|
|
|
property alias _guidedConfirm: guidedActionConfirm |
|
|
|
|
property alias _guidedList: guidedActionList |
|
|
|
|
property alias _guidedSlider: altitudeSlider |
|
|
|
|
property real _toolsMargin: ScreenTools.defaultFontPixelWidth * 0.75 |
|
|
|
|
|
|
|
|
|
readonly property string _mapName: "FlightDisplayView" |
|
|
|
|
readonly property string _showMapBackgroundKey: "/showMapBackground" |
|
|
|
|
readonly property string _mainIsMapKey: "MainFlyWindowIsMap" |
|
|
|
|
readonly property string _PIPVisibleKey: "IsPIPVisible" |
|
|
|
|
|
|
|
|
|
function setStates() { |
|
|
|
|
QGroundControl.saveBoolGlobalSetting(_mainIsMapKey, mainIsMap) |
|
|
|
|
if(mainIsMap) { |
|
|
|
|
//-- Adjust Margins |
|
|
|
|
_flightMapContainer.state = "fullMode" |
|
|
|
|
_flightVideo.state = "pipMode" |
|
|
|
|
} else { |
|
|
|
|
//-- Adjust Margins |
|
|
|
|
_flightMapContainer.state = "pipMode" |
|
|
|
|
_flightVideo.state = "fullMode" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function setPipVisibility(state) { |
|
|
|
|
_isPipVisible = state; |
|
|
|
@ -93,12 +73,6 @@ Item {
@@ -93,12 +73,6 @@ Item {
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Signal routing |
|
|
|
|
Connections { |
|
|
|
|
target: mainWindow |
|
|
|
|
onFlightDisplayMapChanged: setStates() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Component.onCompleted: { |
|
|
|
|
if(QGroundControl.corePlugin.options.flyViewOverlay.toString().length) { |
|
|
|
|
flyViewOverlay.source = QGroundControl.corePlugin.options.flyViewOverlay |
|
|
|
@ -112,180 +86,66 @@ Item {
@@ -112,180 +86,66 @@ Item {
|
|
|
|
|
guidedController: _guidedController |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Window { |
|
|
|
|
id: videoWindow |
|
|
|
|
width: !mainIsMap ? _mapAndVideo.width : _pipSize |
|
|
|
|
height: !mainIsMap ? _mapAndVideo.height : _pipSize * (9/16) |
|
|
|
|
visible: false |
|
|
|
|
|
|
|
|
|
Item { |
|
|
|
|
id: videoItem |
|
|
|
|
anchors.fill: parent |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
onClosing: { |
|
|
|
|
_flightVideo.state = "unpopup" |
|
|
|
|
videoWindow.visible = false |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* This timer will startVideo again after the popup window appears and is loaded. |
|
|
|
|
* Such approach was the only one to avoid a crash for windows users |
|
|
|
|
*/ |
|
|
|
|
Timer { |
|
|
|
|
id: videoPopUpTimer |
|
|
|
|
interval: 2000; |
|
|
|
|
running: false; |
|
|
|
|
repeat: false |
|
|
|
|
onTriggered: { |
|
|
|
|
// If state is popup, the next one will be popup-finished |
|
|
|
|
if (_flightVideo.state == "popup") { |
|
|
|
|
_flightVideo.state = "popup-finished" |
|
|
|
|
} |
|
|
|
|
QGroundControl.videoManager.startVideo() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QGCMapPalette { id: mapPal; lightColors: mainIsMap ? mainWindow.flightDisplayMap.isSatelliteMap : true } |
|
|
|
|
QGCMapPalette { id: mapPal; lightColors: _mainWindowIsMap ? mapControl.isSatelliteMap : true } |
|
|
|
|
|
|
|
|
|
Item { |
|
|
|
|
id: _mapAndVideo |
|
|
|
|
anchors.fill: parent |
|
|
|
|
|
|
|
|
|
//-- Map View |
|
|
|
|
Item { |
|
|
|
|
id: _flightMapContainer |
|
|
|
|
z: mainIsMap ? _mapAndVideo.z + 1 : _mapAndVideo.z + 2 |
|
|
|
|
anchors.left: _mapAndVideo.left |
|
|
|
|
anchors.bottom: _mapAndVideo.bottom |
|
|
|
|
visible: mainIsMap || _isPipVisible && !QGroundControl.videoManager.fullScreen |
|
|
|
|
width: mainIsMap ? _mapAndVideo.width : _pipSize |
|
|
|
|
height: mainIsMap ? _mapAndVideo.height : _pipSize * (9/16) |
|
|
|
|
states: [ |
|
|
|
|
State { |
|
|
|
|
name: "pipMode" |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightMapContainer |
|
|
|
|
anchors.margins: ScreenTools.defaultFontPixelHeight |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
State { |
|
|
|
|
name: "fullMode" |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightMapContainer |
|
|
|
|
anchors.margins: 0 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
FlightDisplayViewMap { |
|
|
|
|
id: _fMap |
|
|
|
|
anchors.fill: parent |
|
|
|
|
guidedActionsController: _guidedController |
|
|
|
|
planMasterController: _planController |
|
|
|
|
flightWidgets: flightDisplayViewWidgets |
|
|
|
|
rightPanelWidth: ScreenTools.defaultFontPixelHeight * 9 |
|
|
|
|
scaleState: (mainIsMap && flyViewOverlay.item) ? (flyViewOverlay.item.scaleState ? flyViewOverlay.item.scaleState : "bottomMode") : "bottomMode" |
|
|
|
|
Component.onCompleted: { |
|
|
|
|
mainWindow.flightDisplayMap = _fMap |
|
|
|
|
_fMap.adjustMapSize() |
|
|
|
|
} |
|
|
|
|
FlightDisplayViewMap { |
|
|
|
|
id: mapControl |
|
|
|
|
guidedActionsController: _guidedController |
|
|
|
|
planMasterController: _planController |
|
|
|
|
flightWidgets: flightDisplayViewWidgets |
|
|
|
|
rightPanelWidth: ScreenTools.defaultFontPixelHeight * 9 |
|
|
|
|
scaleState: (_mainWindowIsMap && flyViewOverlay.item) ? (flyViewOverlay.item.scaleState ? flyViewOverlay.item.scaleState : "bottomMode") : "bottomMode" |
|
|
|
|
mainWindowIsMap: _mainWindowIsMap |
|
|
|
|
|
|
|
|
|
property var pipState: mapPipState |
|
|
|
|
QGCPipState { |
|
|
|
|
id: mapPipState |
|
|
|
|
pipOverlay: _pipOverlay |
|
|
|
|
isDark: _isMapDark |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-- Video View |
|
|
|
|
Item { |
|
|
|
|
id: _flightVideo |
|
|
|
|
z: mainIsMap ? _mapAndVideo.z + 2 : _mapAndVideo.z + 1 |
|
|
|
|
width: !mainIsMap ? _mapAndVideo.width : _pipSize |
|
|
|
|
height: !mainIsMap ? _mapAndVideo.height : _pipSize * (9/16) |
|
|
|
|
anchors.left: _mapAndVideo.left |
|
|
|
|
anchors.bottom: _mapAndVideo.bottom |
|
|
|
|
visible: QGroundControl.videoManager.hasVideo && (!mainIsMap || _isPipVisible) |
|
|
|
|
|
|
|
|
|
onParentChanged: { |
|
|
|
|
/* If video comes back from popup |
|
|
|
|
* correct anchors. |
|
|
|
|
* Such thing is not possible with ParentChange. |
|
|
|
|
*/ |
|
|
|
|
if(parent == _mapAndVideo) { |
|
|
|
|
// Do anchors again after popup |
|
|
|
|
anchors.left = _mapAndVideo.left |
|
|
|
|
anchors.bottom = _mapAndVideo.bottom |
|
|
|
|
anchors.margins = _toolsMargin |
|
|
|
|
id: videoControl |
|
|
|
|
visible: QGroundControl.videoManager.hasVideo |
|
|
|
|
|
|
|
|
|
property var pipState: videoPipState |
|
|
|
|
QGCPipState { |
|
|
|
|
id: videoPipState |
|
|
|
|
pipOverlay: _pipOverlay |
|
|
|
|
isDark: true |
|
|
|
|
|
|
|
|
|
onWindowAboutToOpen: { |
|
|
|
|
console.log("about to open") |
|
|
|
|
QGroundControl.videoManager.stopVideo() |
|
|
|
|
videoStartDelay.start() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
states: [ |
|
|
|
|
State { |
|
|
|
|
name: "pipMode" |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightVideo |
|
|
|
|
anchors.margins: ScreenTools.defaultFontPixelHeight |
|
|
|
|
} |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightVideoPipControl |
|
|
|
|
inPopup: false |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
State { |
|
|
|
|
name: "fullMode" |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightVideo |
|
|
|
|
anchors.margins: 0 |
|
|
|
|
} |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightVideoPipControl |
|
|
|
|
inPopup: false |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
State { |
|
|
|
|
name: "popup" |
|
|
|
|
StateChangeScript { |
|
|
|
|
script: { |
|
|
|
|
// Stop video, restart it again with Timer |
|
|
|
|
// Avoiding crashes if ParentChange is not yet done |
|
|
|
|
QGroundControl.videoManager.stopVideo() |
|
|
|
|
videoPopUpTimer.running = true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightVideoPipControl |
|
|
|
|
inPopup: true |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
State { |
|
|
|
|
name: "popup-finished" |
|
|
|
|
ParentChange { |
|
|
|
|
target: _flightVideo |
|
|
|
|
parent: videoItem |
|
|
|
|
x: 0 |
|
|
|
|
y: 0 |
|
|
|
|
width: videoItem.width |
|
|
|
|
height: videoItem.height |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
State { |
|
|
|
|
name: "unpopup" |
|
|
|
|
StateChangeScript { |
|
|
|
|
script: { |
|
|
|
|
QGroundControl.videoManager.stopVideo() |
|
|
|
|
videoPopUpTimer.running = true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ParentChange { |
|
|
|
|
target: _flightVideo |
|
|
|
|
parent: _mapAndVideo |
|
|
|
|
} |
|
|
|
|
PropertyChanges { |
|
|
|
|
target: _flightVideoPipControl |
|
|
|
|
inPopup: false |
|
|
|
|
} |
|
|
|
|
onWindowAboutToClose: { |
|
|
|
|
console.log("about to close") |
|
|
|
|
QGroundControl.videoManager.stopVideo() |
|
|
|
|
videoStartDelay.start() |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Timer { |
|
|
|
|
id: videoStartDelay |
|
|
|
|
interval: 2000; |
|
|
|
|
running: false |
|
|
|
|
repeat: false |
|
|
|
|
onTriggered: QGroundControl.videoManager.startVideo() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//-- Video Streaming |
|
|
|
|
FlightDisplayViewVideo { |
|
|
|
|
id: videoStreaming |
|
|
|
|
anchors.fill: parent |
|
|
|
|
useSmallFont: videoControl.pipState.state !== videoControl.pipState.fullState |
|
|
|
|
visible: QGroundControl.videoManager.isGStreamer |
|
|
|
|
} |
|
|
|
|
//-- UVC Video (USB Camera or Video Device) |
|
|
|
@ -297,33 +157,16 @@ Item {
@@ -297,33 +157,16 @@ Item {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QGCPipable { |
|
|
|
|
id: _flightVideoPipControl |
|
|
|
|
z: _flightVideo.z + 3 |
|
|
|
|
width: _pipSize |
|
|
|
|
height: _pipSize * (9/16) |
|
|
|
|
anchors.left: _mapAndVideo.left |
|
|
|
|
anchors.bottom: _mapAndVideo.bottom |
|
|
|
|
anchors.margins: ScreenTools.defaultFontPixelHeight |
|
|
|
|
visible: QGroundControl.videoManager.hasVideo && !QGroundControl.videoManager.fullScreen && _flightVideo.state != "popup" |
|
|
|
|
isHidden: !_isPipVisible |
|
|
|
|
isDark: isBackgroundDark |
|
|
|
|
enablePopup: mainIsMap |
|
|
|
|
onActivated: { |
|
|
|
|
mainIsMap = !mainIsMap |
|
|
|
|
setStates() |
|
|
|
|
_fMap.adjustMapSize() |
|
|
|
|
} |
|
|
|
|
onHideIt: { |
|
|
|
|
setPipVisibility(!state) |
|
|
|
|
} |
|
|
|
|
onPopup: { |
|
|
|
|
videoWindow.visible = true |
|
|
|
|
_flightVideo.state = "popup" |
|
|
|
|
} |
|
|
|
|
onNewWidth: { |
|
|
|
|
_pipSize = newWidth |
|
|
|
|
} |
|
|
|
|
QGCPipOverlay { |
|
|
|
|
id: _pipOverlay |
|
|
|
|
anchors.left: parent.left |
|
|
|
|
anchors.bottom: parent.bottom |
|
|
|
|
anchors.margins: ScreenTools.defaultFontPixelHeight |
|
|
|
|
item1IsFullSettingsKey: "MainFlyWindowIsMap" |
|
|
|
|
item1: mapControl |
|
|
|
|
item2: QGroundControl.videoManager.hasVideo ? videoControl : null |
|
|
|
|
fullZOrder: 0 |
|
|
|
|
pipZOrder: QGroundControl.zOrderWidgets |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MultiVehiclePanel { |
|
|
|
@ -331,20 +174,20 @@ Item {
@@ -331,20 +174,20 @@ Item {
|
|
|
|
|
anchors.margins: _toolsMargin |
|
|
|
|
anchors.top: parent.top |
|
|
|
|
anchors.right: parent.right |
|
|
|
|
z: _mapAndVideo.z + 4 |
|
|
|
|
z: QGroundControl.zOrderWidgets |
|
|
|
|
availableHeight: mainWindow.availableHeight - (anchors.margins * 2) |
|
|
|
|
guidedActionsController: _guidedController |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
FlightDisplayViewWidgets { |
|
|
|
|
id: flightDisplayViewWidgets |
|
|
|
|
z: _mapAndVideo.z + 4 |
|
|
|
|
z: QGroundControl.zOrderWidgets |
|
|
|
|
height: availableHeight - (singleMultiSelector.visible ? singleMultiSelector.height + _toolsMargin : 0) - _toolsMargin |
|
|
|
|
anchors.left: parent.left |
|
|
|
|
anchors.right: altitudeSlider.visible ? altitudeSlider.left : parent.right |
|
|
|
|
anchors.bottom: parent.bottom |
|
|
|
|
anchors.top: singleMultiSelector.visible? singleMultiSelector.bottom : undefined |
|
|
|
|
useLightColors: isBackgroundDark |
|
|
|
|
useLightColors: _isMapDark |
|
|
|
|
missionController: _missionController |
|
|
|
|
visible: singleMultiSelector.singleVehiclePanel && !QGroundControl.videoManager.fullScreen |
|
|
|
|
} |
|
|
|
@ -353,7 +196,7 @@ Item {
@@ -353,7 +196,7 @@ Item {
|
|
|
|
|
//-- Loader helper for plugins to overlay elements over the fly view |
|
|
|
|
Loader { |
|
|
|
|
id: flyViewOverlay |
|
|
|
|
z: flightDisplayViewWidgets.z + 1 |
|
|
|
|
z: QGroundControl.zOrderWidgets |
|
|
|
|
visible: !QGroundControl.videoManager.fullScreen |
|
|
|
|
height: mainWindow.height - mainWindow.header.height |
|
|
|
|
anchors.left: parent.left |
|
|
|
@ -364,17 +207,17 @@ Item {
@@ -364,17 +207,17 @@ Item {
|
|
|
|
|
//-- Virtual Joystick |
|
|
|
|
Loader { |
|
|
|
|
id: virtualJoystickMultiTouch |
|
|
|
|
z: _mapAndVideo.z + 5 |
|
|
|
|
width: parent.width - (_flightVideoPipControl.width / 2) |
|
|
|
|
z: QGroundControl.zOrderTopMost + 1 |
|
|
|
|
width: parent.width - (_pipOverlay.width / 2) |
|
|
|
|
height: Math.min(mainWindow.height * 0.25, ScreenTools.defaultFontPixelWidth * 16) |
|
|
|
|
visible: (_virtualJoystick ? _virtualJoystick.value : false) && !QGroundControl.videoManager.fullScreen && !(_activeVehicle ? _activeVehicle.highLatencyLink : false) |
|
|
|
|
anchors.bottom: _flightVideoPipControl.top |
|
|
|
|
anchors.bottom: _pipOverlay.top |
|
|
|
|
anchors.bottomMargin: ScreenTools.defaultFontPixelHeight * 2 |
|
|
|
|
anchors.horizontalCenter: flightDisplayViewWidgets.horizontalCenter |
|
|
|
|
source: "qrc:/qml/VirtualJoystick.qml" |
|
|
|
|
active: (_virtualJoystick ? _virtualJoystick.value : false) && !(_activeVehicle ? _activeVehicle.highLatencyLink : false) |
|
|
|
|
|
|
|
|
|
property bool useLightColors: isBackgroundDark |
|
|
|
|
property bool useLightColors: _isMapDark |
|
|
|
|
// The default behaviour is not centralized throttle |
|
|
|
|
property bool centralizeThrottle: _virtualJoystickCentralized ? _virtualJoystickCentralized.value : false |
|
|
|
|
|
|
|
|
@ -390,8 +233,8 @@ Item {
@@ -390,8 +233,8 @@ Item {
|
|
|
|
|
anchors.right: isInstrumentRight() ? undefined : _mapAndVideo.right |
|
|
|
|
anchors.topMargin: _toolsMargin |
|
|
|
|
anchors.top: parent.top |
|
|
|
|
z: _mapAndVideo.z + 4 |
|
|
|
|
maxHeight: parent.height - toolStrip.y + (_flightVideo.visible ? (_flightVideo.y - parent.height) : 0) |
|
|
|
|
z: QGroundControl.zOrderWidgets |
|
|
|
|
maxHeight: parent.height - toolStrip.y + (_pipOverlay.visible ? (_pipOverlay.y - parent.height) : 0) |
|
|
|
|
guidedActionsController: _guidedController |
|
|
|
|
guidedActionList: _guidedList |
|
|
|
|
usePreFlightChecklist: preFlightChecklistPopup.useChecklist |
|
|
|
@ -413,7 +256,7 @@ Item {
@@ -413,7 +256,7 @@ Item {
|
|
|
|
|
anchors.margins: _margins |
|
|
|
|
anchors.bottom: parent.bottom |
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter |
|
|
|
|
z: _guidedZOrder |
|
|
|
|
z: QGroundControl.zOrderTopMost |
|
|
|
|
guidedController: _guidedController |
|
|
|
|
altitudeSlider: _guidedSlider |
|
|
|
|
} |
|
|
|
@ -423,7 +266,7 @@ Item {
@@ -423,7 +266,7 @@ Item {
|
|
|
|
|
anchors.margins: _margins |
|
|
|
|
anchors.bottom: parent.bottom |
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter |
|
|
|
|
z: _guidedZOrder |
|
|
|
|
z: QGroundControl.zOrderTopMost |
|
|
|
|
guidedController: _guidedController |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -435,7 +278,7 @@ Item {
@@ -435,7 +278,7 @@ Item {
|
|
|
|
|
anchors.topMargin: ScreenTools.toolbarHeight + _margins |
|
|
|
|
anchors.top: parent.top |
|
|
|
|
anchors.bottom: parent.bottom |
|
|
|
|
z: _guidedZOrder |
|
|
|
|
z: QGroundControl.zOrderTopMost |
|
|
|
|
radius: ScreenTools.defaultFontPixelWidth / 2 |
|
|
|
|
width: ScreenTools.defaultFontPixelWidth * 10 |
|
|
|
|
color: qgcPal.window |
|
|
|
@ -447,7 +290,7 @@ Item {
@@ -447,7 +290,7 @@ Item {
|
|
|
|
|
anchors.top: parent.top |
|
|
|
|
anchors.topMargin: ScreenTools.defaultFontPixelHeight * 0.25 |
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter |
|
|
|
|
show: mainIsMap |
|
|
|
|
show: _mainWindowIsMap |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
FlyViewPreFlightChecklistPopup { |
|
|
|
|