Browse Source

View switch prevention support

QGC4.4
DonLakeFlyer 5 years ago
parent
commit
48fa322b08
  1. 9
      src/QmlControls/QGCToolBarButton.qml
  2. 5
      src/ui/AppSettings.qml
  3. 7
      src/ui/MainRootWindow.qml
  4. 36
      src/ui/toolbar/MainToolBar.qml

9
src/QmlControls/QGCToolBarButton.qml

@ -14,20 +14,25 @@ import QGroundControl.Controls 1.0 @@ -14,20 +14,25 @@ import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0
import QGroundControl.ScreenTools 1.0
// Important Note: Toolbar buttons must manage their checked state manually in order to support
// view switch prevention. This means they can't be checkable or autoExclusive.
Button {
id: button
height: ScreenTools.defaultFontPixelHeight * 3
leftPadding: _horizontalMargin
rightPadding: _horizontalMargin
autoExclusive: true
checkable: false
property bool logo: false
property real _horizontalMargin: ScreenTools.defaultFontPixelWidth
onCheckedChanged: checkable = false
background: Rectangle {
anchors.fill: parent
color: logo ? qgcPal.brandingPurple : (checked ? qgcPal.buttonHighlight : Qt.rgba(0,0,0,0))
color: logo ? qgcPal.brandingPurple : (button.checked ? qgcPal.buttonHighlight : Qt.rgba(0,0,0,0))
}
contentItem: Row {

5
src/ui/AppSettings.qml

@ -74,7 +74,10 @@ Rectangle { @@ -74,7 +74,10 @@ Rectangle {
Layout.fillWidth: true
onClicked: {
if(__rightPanel.source !== modelData.url) {
if (mainWindow.preventViewSwitch) {
return
}
if (__rightPanel.source !== modelData.url) {
__rightPanel.source = modelData.url
}
checked = true

7
src/ui/MainRootWindow.qml

@ -49,6 +49,7 @@ ApplicationWindow { @@ -49,6 +49,7 @@ 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
@ -151,8 +152,10 @@ ApplicationWindow { @@ -151,8 +152,10 @@ ApplicationWindow {
mainWindowDialog.dialogComponent = component
mainWindowDialog.dialogTitle = title
mainWindowDialog.dialogButtons = buttons
console.log("Prevent view switch")
mainWindow.preventViewSwitch = true
mainWindowDialog.open()
if(buttons & StandardButton.Cancel || buttons & StandardButton.Close || buttons & StandardButton.Discard || buttons & StandardButton.Abort || buttons & StandardButton.Ignore) {
if (buttons & StandardButton.Cancel || buttons & StandardButton.Close || buttons & StandardButton.Discard || buttons & StandardButton.Abort || buttons & StandardButton.Ignore) {
mainWindowDialog.closePolicy = Popup.NoAutoClose;
mainWindowDialog.interactive = false;
} else {
@ -184,6 +187,8 @@ ApplicationWindow { @@ -184,6 +187,8 @@ ApplicationWindow {
dlgLoader.source = "QGCViewDialogContainer.qml"
}
onClosed: {
console.log("View switch ok")
mainWindow.preventViewSwitch = false
dlgLoader.source = ""
}
}

36
src/ui/toolbar/MainToolBar.qml

@ -98,17 +98,25 @@ Item { @@ -98,17 +98,25 @@ Item {
anchors.bottom: parent.bottom
spacing: ScreenTools.defaultFontPixelWidth / 2
ButtonGroup {
buttons: viewRow.children
}
// Important Note: Toolbar buttons must manage their checked state manually in order to support
// view switch prevention. There doesn't seem to be a way to make this work if they are in a
// ButtonGroup.
//---------------------------------------------
// Toolbar Row
RowLayout {
id: viewRow
id: buttonRow
Layout.fillHeight: true
spacing: 0
function clearAllChecks() {
for (var i=0; i<buttonRow.children.length; i++) {
if (buttonRow.children[i].toString().startsWith("QGCToolBarButton")) {
buttonRow.children[i].checked = false
}
}
}
QGCToolBarButton {
id: settingsButton
Layout.fillHeight: true
@ -116,6 +124,10 @@ Item { @@ -116,6 +124,10 @@ Item {
logo: true
visible: !QGroundControl.corePlugin.options.combineSettingsAndSetup
onClicked: {
if (mainWindow.preventViewSwitch) {
return
}
buttonRow.clearAllChecks()
checked = true
mainWindow.showSettingsView()
}
@ -126,6 +138,10 @@ Item { @@ -126,6 +138,10 @@ Item {
Layout.fillHeight: true
icon.source: "/qmlimages/Gears.svg"
onClicked: {
if (mainWindow.preventViewSwitch) {
return
}
buttonRow.clearAllChecks()
checked = true
mainWindow.showSetupView()
}
@ -136,6 +152,10 @@ Item { @@ -136,6 +152,10 @@ Item {
Layout.fillHeight: true
icon.source: "/qmlimages/Plan.svg"
onClicked: {
if (mainWindow.preventViewSwitch) {
return
}
buttonRow.clearAllChecks()
checked = true
mainWindow.showPlanView()
}
@ -146,6 +166,10 @@ Item { @@ -146,6 +166,10 @@ Item {
Layout.fillHeight: true
icon.source: "/qmlimages/PaperPlane.svg"
onClicked: {
if (mainWindow.preventViewSwitch) {
return
}
buttonRow.clearAllChecks()
checked = true
mainWindow.showFlyView()
}
@ -157,6 +181,10 @@ Item { @@ -157,6 +181,10 @@ Item {
icon.source: "/qmlimages/Analyze.svg"
visible: QGroundControl.corePlugin.showAdvancedUI
onClicked: {
if (mainWindow.preventViewSwitch) {
return
}
buttonRow.clearAllChecks()
checked = true
mainWindow.showAnalyzeView()
}

Loading…
Cancel
Save