diff --git a/src/VehicleSetup/SetupView.qml b/src/VehicleSetup/SetupView.qml index 4a845efbdb2682c50667fd0a83b0bc3a25708846..4719e8e8a9ef628e1b9e0e7982c36ae221e22c3c 100644 --- a/src/VehicleSetup/SetupView.qml +++ b/src/VehicleSetup/SetupView.qml @@ -41,7 +41,7 @@ Rectangle { function showSummaryPanel() { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } if (_fullParameterVehicleAvailable) { @@ -58,7 +58,7 @@ Rectangle { } function showPanel(button, qmlSource) { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } button.checked = true @@ -67,7 +67,7 @@ Rectangle { function showVehicleComponentPanel(vehicleComponent) { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } var autopilotPlugin = QGroundControl.multiVehicleManager.activeVehicle.autopilot diff --git a/src/ui/AppSettings.qml b/src/ui/AppSettings.qml index ec41b27860c88bd1a2134c3cb83281156cdc963c..0f8da228fef30fee986a2bac5a7acd1136eb6bd7 100644 --- a/src/ui/AppSettings.qml +++ b/src/ui/AppSettings.qml @@ -74,7 +74,7 @@ Rectangle { Layout.fillWidth: true onClicked: { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } if (__rightPanel.source !== modelData.url) { diff --git a/src/ui/MainRootWindow.qml b/src/ui/MainRootWindow.qml index ff8e280c591f410025204725bc8c1e4c15cea330..47a3b06fa6f0d3ab73f69ab85be7be4fe94c815a 100644 --- a/src/ui/MainRootWindow.qml +++ b/src/ui/MainRootWindow.qml @@ -38,6 +38,9 @@ ApplicationWindow { } } + property var _rgPreventViewSwitch: [ false ] + + readonly property real _topBottomMargins: ScreenTools.defaultFontPixelHeight * 0.5 readonly property string _mainToolbar: QGroundControl.corePlugin.options.mainToolbarUrl readonly property string _planToolbar: QGroundControl.corePlugin.options.planToolbarUrl @@ -49,7 +52,6 @@ ApplicationWindow { property bool communicationLost: activeVehicle ? activeVehicle.connectionLost : false property string formatedMessage: activeVehicle ? activeVehicle.formatedMessage : "" property real availableHeight: mainWindow.height - mainWindow.header.height - mainWindow.footer.height - property bool preventViewSwitch: false property var currentPlanMissionItem: planMasterControllerPlan ? planMasterControllerPlan.missionController.currentPlanViewItem : null property var planMasterControllerPlan: null @@ -73,6 +75,25 @@ ApplicationWindow { //------------------------------------------------------------------------- //-- Global Scope Functions + /// Prevent view switching + function pushPreventViewSwitch() { + _rgPreventViewSwitch.push(true) + } + + /// Allow view switching + function popPreventViewSwitch() { + if (_rgPreventViewSwitch.length == 1) { + console.warning("mainWindow.popPreventViewSwitch called when nothing pushed") + return + } + _rgPreventViewSwitch.pop() + } + + /// @return true: View switches are not currently allowed + function preventViewSwitch() { + return _rgPreventViewSwitch[_rgPreventViewSwitch.length - 1] + } + function viewSwitch(isPlanView) { settingsWindow.visible = false setupWindow.visible = false @@ -152,8 +173,7 @@ ApplicationWindow { mainWindowDialog.dialogComponent = component mainWindowDialog.dialogTitle = title mainWindowDialog.dialogButtons = buttons - console.log("Prevent view switch") - mainWindow.preventViewSwitch = true + mainWindow.pushPreventViewSwitch() mainWindowDialog.open() if (buttons & StandardButton.Cancel || buttons & StandardButton.Close || buttons & StandardButton.Discard || buttons & StandardButton.Abort || buttons & StandardButton.Ignore) { mainWindowDialog.closePolicy = Popup.NoAutoClose; @@ -188,7 +208,7 @@ ApplicationWindow { } onClosed: { console.log("View switch ok") - mainWindow.preventViewSwitch = false + mainWindow.popPreventViewSwitch() dlgLoader.source = "" } } diff --git a/src/ui/toolbar/MainToolBar.qml b/src/ui/toolbar/MainToolBar.qml index ba99ad25ea3db86ace13a26d9382c21dbf463f28..ea55f12a758d1512c5b848a25051a4bb7864a2be 100644 --- a/src/ui/toolbar/MainToolBar.qml +++ b/src/ui/toolbar/MainToolBar.qml @@ -124,7 +124,7 @@ Item { logo: true visible: !QGroundControl.corePlugin.options.combineSettingsAndSetup onClicked: { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } buttonRow.clearAllChecks() @@ -138,7 +138,7 @@ Item { Layout.fillHeight: true icon.source: "/qmlimages/Gears.svg" onClicked: { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } buttonRow.clearAllChecks() @@ -152,7 +152,7 @@ Item { Layout.fillHeight: true icon.source: "/qmlimages/Plan.svg" onClicked: { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } buttonRow.clearAllChecks() @@ -166,7 +166,7 @@ Item { Layout.fillHeight: true icon.source: "/qmlimages/PaperPlane.svg" onClicked: { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } buttonRow.clearAllChecks() @@ -181,7 +181,7 @@ Item { icon.source: "/qmlimages/Analyze.svg" visible: QGroundControl.corePlugin.showAdvancedUI onClicked: { - if (mainWindow.preventViewSwitch) { + if (mainWindow.preventViewSwitch()) { return } buttonRow.clearAllChecks()