From e89e2de025634afd73a736a2769316626aefac67 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Thu, 5 Apr 2018 13:50:29 -0700 Subject: [PATCH] Allow flight modes to differ from normal to advanced ui mode --- src/FirmwarePlugin/FirmwarePlugin.h | 3 ++- src/Vehicle/Vehicle.cc | 3 +++ src/Vehicle/Vehicle.h | 3 ++- src/ui/toolbar/ModeIndicator.qml | 13 ++++++------- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index 461020d51..07971cd22 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -79,7 +79,8 @@ public: /// free when no longer needed. virtual QList componentsForVehicle(AutoPilotPlugin* vehicle); - /// Returns the list of available flight modes + /// Returns the list of available flight modes. Flight modes can be different in normal/advanced ui mode. + /// Call will be made again if advanced mode changes. virtual QStringList flightModes(Vehicle* vehicle) { Q_UNUSED(vehicle); return QStringList(); diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index fbbb2890a..38cac87fe 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -418,6 +418,9 @@ void Vehicle::_commonInit(void) connect(_settingsManager->appSettings()->offlineEditingCruiseSpeed(), &Fact::rawValueChanged, this, &Vehicle::_offlineCruiseSpeedSettingChanged); connect(_settingsManager->appSettings()->offlineEditingHoverSpeed(), &Fact::rawValueChanged, this, &Vehicle::_offlineHoverSpeedSettingChanged); + // Flight modes can differ based on advanced mode + connect(_toolbox->corePlugin(), &QGCCorePlugin::showAdvancedUIChanged, this, &Vehicle::flightModesChanged); + // Build FactGroup object model _addFact(&_rollFact, _rollFactName); diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 827444ac6..2059b7eb2 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -315,7 +315,7 @@ public: Q_PROPERTY(bool armed READ armed WRITE setArmed NOTIFY armedChanged) Q_PROPERTY(bool autoDisarm READ autoDisarm NOTIFY autoDisarmChanged) Q_PROPERTY(bool flightModeSetAvailable READ flightModeSetAvailable CONSTANT) - Q_PROPERTY(QStringList flightModes READ flightModes CONSTANT) + Q_PROPERTY(QStringList flightModes READ flightModes NOTIFY flightModesChanged) Q_PROPERTY(QString flightMode READ flightMode WRITE setFlightMode NOTIFY flightModeChanged) Q_PROPERTY(bool hilMode READ hilMode WRITE setHilMode NOTIFY hilModeChanged) Q_PROPERTY(QmlObjectListModel* trajectoryPoints READ trajectoryPoints CONSTANT) @@ -860,6 +860,7 @@ signals: void telemetryLNoiseChanged (int value); void telemetryRNoiseChanged (int value); void autoDisarmChanged (void); + void flightModesChanged (void); void firmwareVersionChanged(void); void firmwareCustomVersionChanged(void); diff --git a/src/ui/toolbar/ModeIndicator.qml b/src/ui/toolbar/ModeIndicator.qml index 358a8897f..bb540ceec 100644 --- a/src/ui/toolbar/ModeIndicator.qml +++ b/src/ui/toolbar/ModeIndicator.qml @@ -24,7 +24,10 @@ Item { anchors.bottom: parent.bottom width: flightModeSelector.width - property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property var _flightModes: _activeVehicle ? _activeVehicle.flightModes : [ ] + + on_FlightModesChanged: flightModeSelector.updateFlightModesMenu() QGCLabel { id: flightModeSelector @@ -50,18 +53,14 @@ Item { } flightModesMenuItems.length = 0 // Add new items - for (var i = 0; i < _activeVehicle.flightModes.length; i++) { - var menuItem = flightModeMenuItemComponent.createObject(null, { "text": _activeVehicle.flightModes[i] }) + for (var i = 0; i < _flightModes.length; i++) { + var menuItem = flightModeMenuItemComponent.createObject(null, { "text": _flightModes[i] }) flightModesMenuItems.push(menuItem) flightModesMenu.insertItem(i, menuItem) } } } Component.onCompleted: flightModeSelector.updateFlightModesMenu() - Connections { - target: QGroundControl.multiVehicleManager - onActiveVehicleChanged: flightModeSelector.updateFlightModesMenu() - } MouseArea { visible: _activeVehicle && _activeVehicle.flightModeSetAvailable anchors.fill: parent -- 2.22.0