diff --git a/src/ui/toolbar/MultiVehicleSelector.qml b/src/ui/toolbar/MultiVehicleSelector.qml index 5937e9f62b9e8887ca10d57e8ccded0d6e9609de..36b8e52bcae80373cb5cb27926ecd25929a77dd8 100644 --- a/src/ui/toolbar/MultiVehicleSelector.qml +++ b/src/ui/toolbar/MultiVehicleSelector.qml @@ -18,61 +18,49 @@ import QGroundControl.ScreenTools 1.0 import QGroundControl.Palette 1.0 //------------------------------------------------------------------------- -//-- Mode Indicator -Item { +//-- Multiple Vehicle Selector +QGCComboBox { anchors.top: parent.top anchors.bottom: parent.bottom - visible: _multiVehicles - width: _multiVehicles ? multiVehicleSelector.width : 0 + font.pointSize: ScreenTools.mediumFontPointSize + currentIndex: -1 + sizeToContents: true + model: _vehicleModel + visible: _multipleVehicles - property bool _multiVehicles: activeVehicle ? QGroundControl.multiVehicleManager.vehicles.count > 1 : false + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property bool _multipleVehicles: _activeVehicle ? QGroundControl.multiVehicleManager.vehicles.count > 1 : false + property var _vehicleModel: [ ] Connections { target: QGroundControl.multiVehicleManager.vehicles - onCountChanged: multiVehicleSelector.updatemultiVehiclesMenu() + onCountChanged: _updateVehicleModel() } - QGCLabel { - id: multiVehicleSelector - text: "Vehicle " + (activeVehicle ? activeVehicle.id : "None") - font.pointSize: ScreenTools.mediumFontPointSize - color: qgcPal.buttonText - anchors.verticalCenter: parent.verticalCenter - QGCMenu { - id: multiVehiclesMenu - } - Component { - id: multiVehicleMenuItemComponent - QGCMenuItem { - onTriggered: QGroundControl.multiVehicleManager.activeVehicle = vehicle - property int vehicleId: Number(text.split(" ")[1]) - property var vehicle: QGroundControl.multiVehicleManager.getVehicleById(vehicleId) - } - } - property var multiVehiclesMenuItems: [] - function updatemultiVehiclesMenu() { - if (_multiVehicles) { - // Remove old menu items - for (var i = 0; i < multiVehiclesMenuItems.length; i++) { - multiVehiclesMenu.removeItem(multiVehiclesMenuItems[i]) - } - multiVehiclesMenuItems.length = 0 - // Add new items - for (i = 0; i < QGroundControl.multiVehicleManager.vehicles.count; i++) { - var vehicle = QGroundControl.multiVehicleManager.vehicles.get(i) - var menuItem = multiVehicleMenuItemComponent.createObject(null, { "text": "Vehicle " + vehicle.id }) - multiVehiclesMenuItems.push(menuItem) - multiVehiclesMenu.insertItem(i, menuItem) + Component.onCompleted: _updateVehicleModel() + + function _updateVehicleModel() { + var newCurrentIndex = -1 + var newModel = [ ] + if (_multipleVehicles) { + for (var i = 0; i < QGroundControl.multiVehicleManager.vehicles.count; i++) { + var vehicle = QGroundControl.multiVehicleManager.vehicles.get(i) + newModel.push(qsTr("Vehicle") + " " + vehicle.id) + + if (vehicle.id === _activeVehicle.id) { + newCurrentIndex = i } } } - Component.onCompleted: { - multiVehicleSelector.updatemultiVehiclesMenu() - } + currentIndex = -1 + _vehicleModel = newModel + currentIndex = newCurrentIndex } - MouseArea { - visible: _multiVehicles - anchors.fill: parent - onClicked: multiVehiclesMenu.popup() + + onActivated: { + var vehicleId = textAt(index).split(" ")[1] + var vehicle = QGroundControl.multiVehicleManager.getVehicleById(vehicleId) + QGroundControl.multiVehicleManager.activeVehicle = vehicle } } +