diff --git a/custom-example/res/CustomCameraControl.qml b/custom-example/res/CustomCameraControl.qml index 431b875fce84af2d862fbc6446fbe8eb1c1e62d4..5e47f696e7d5817d8c32cb90df064746f4cc412f 100644 --- a/custom-example/res/CustomCameraControl.qml +++ b/custom-example/res/CustomCameraControl.qml @@ -88,7 +88,7 @@ Item { id: backgroundRect width: buttonsRow.width + (ScreenTools.defaultFontPixelWidth * 4) height: buttonsRow.height + (ScreenTools.defaultFontPixelHeight) - visible: _irPaletteFact && QGroundControl.videoManager.hasThermal || _camera.vendor === "NextVision" + visible: _irPaletteFact && (QGroundControl.videoManager.hasThermal || _camera.vendor === "NextVision") anchors.horizontalCenter: parent.horizontalCenter Component.onCompleted: { if(_irPaletteFact && QGroundControl.videoManager.hasThermal) { @@ -965,19 +965,25 @@ Item { contentHeight: comboListCol.height contentWidth: comboListCol.width anchors.horizontalCenter: parent.horizontalCenter - Column { + ColumnLayout { id: comboListCol spacing: ScreenTools.defaultFontPixelHeight anchors.margins: ScreenTools.defaultFontPixelHeight anchors.horizontalCenter: parent.horizontalCenter + QGCLabel { + text: qsTr("Thermal Palettes") + Layout.alignment: Qt.AlignHCenter + } Repeater { model: _irPaletteFact ? _irPaletteFact.enumStrings : [] QGCButton { - text: modelData - width: ScreenTools.defaultFontPixelWidth * 30 - height: ScreenTools.defaultFontPixelHeight * 2 - checked: index === _irPaletteFact.value - anchors.horizontalCenter: parent.horizontalCenter + text: modelData + Layout.minimumHeight: ScreenTools.defaultFontPixelHeight * 3 + Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 30 + Layout.fillHeight: true + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + checked: index === _irPaletteFact.value onClicked: { _irPaletteFact.value = index thermalPalettes.close() diff --git a/custom-example/res/MainToolbar/CustomModeIndicator.qml b/custom-example/res/MainToolbar/CustomModeIndicator.qml index 3cffb64b123c4f23de2485d8984ac5006fee252f..770aa4d9fad6b5c9048f8883f4d234a9651669c2 100644 --- a/custom-example/res/MainToolbar/CustomModeIndicator.qml +++ b/custom-example/res/MainToolbar/CustomModeIndicator.qml @@ -9,8 +9,11 @@ * @author Gus Grubba */ -import QtQuick 2.11 -import QtQuick.Controls 1.4 + +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.11 +import QtQuick.Dialogs 1.3 import QGroundControl 1.0 import QGroundControl.Controls 1.0 @@ -25,10 +28,6 @@ Item { anchors.bottom: parent.bottom width: selectorRow.width - property var _flightModes: activeVehicle ? activeVehicle.flightModes : [ ] - - on_FlightModesChanged: flightModeSelector.updateFlightModesMenu() - Row { id: selectorRow spacing: ScreenTools.defaultFontPixelWidth @@ -39,32 +38,6 @@ Item { color: qgcPal.text font.pointSize: ScreenTools.defaultFontPointSize anchors.verticalCenter: parent.verticalCenter - Menu { - id: flightModesMenu - } - Component { - id: flightModeMenuItemComponent - MenuItem { - onTriggered: activeVehicle.flightMode = text - } - } - property var flightModesMenuItems: [] - function updateFlightModesMenu() { - if (activeVehicle && activeVehicle.flightModeSetAvailable) { - // Remove old menu items - var i = 0 - for (i = 0; i < flightModesMenuItems.length; i++) { - flightModesMenu.removeItem(flightModesMenuItems[i]) - } - flightModesMenuItems.length = 0 - // Add new items - for (i = 0; i < _flightModes.length; i++) { - var menuItem = flightModeMenuItemComponent.createObject(null, { "text": _flightModes[i] }) - flightModesMenuItems.push(menuItem) - flightModesMenu.insertItem(i, menuItem) - } - } - } } QGCColoredImage { anchors.verticalCenter: parent.verticalCenter @@ -76,10 +49,53 @@ Item { color: qgcPal.text } } - Component.onCompleted: flightModeSelector.updateFlightModesMenu() MouseArea { visible: activeVehicle && activeVehicle.flightModeSetAvailable anchors.fill: parent - onClicked: flightModesMenu.popup() + onClicked: flightModesMenu.open() + } + //------------------------------------------------------------------------- + //-- Flight Modes + Popup { + id: flightModesMenu + width: Math.min(mainWindow.width * 0.666, ScreenTools.defaultFontPixelWidth * 40) + height: mainWindow.height * 0.5 + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside + property int selectedIndex: 0 + background: Rectangle { + anchors.fill: parent + color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) + border.color: qgcPal.text + radius: ScreenTools.defaultFontPixelWidth + } + ColumnLayout { + id: comboListCol + spacing: ScreenTools.defaultFontPixelHeight + anchors.centerIn: parent + QGCLabel { + text: qsTr("Flight Modes") + Layout.alignment: Qt.AlignHCenter + } + Repeater { + model: activeVehicle ? activeVehicle.flightModes : [ ] + QGCButton { + text: modelData + Layout.minimumHeight: ScreenTools.defaultFontPixelHeight * 3 + Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 30 + Layout.fillHeight: true + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + onClicked: { + activeVehicle.flightMode = modelData + flightModesMenu.close() + } + } + } + } } } diff --git a/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc b/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc index 3f3a664c4531d63c119b76452dae9cd1b393f7ac..ba0107af4b300d23bffe5a68ecbc12b4b69dc50a 100644 --- a/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc +++ b/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc @@ -19,6 +19,14 @@ //----------------------------------------------------------------------------- CustomFirmwarePlugin::CustomFirmwarePlugin() { + for (int i = 0; i < _flightModeInfoList.count(); i++) { + FlightModeInfo_t& info = _flightModeInfoList[i]; + //-- Narrow the options to only these two + if (info.name != _altCtlFlightMode && + info.name != _posCtlFlightMode) { + info.canBeSet = false; + } + } } //-----------------------------------------------------------------------------