From bd6491e738a53cb4c193274216e641b0266373e3 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Thu, 6 Jun 2019 08:38:04 -0400 Subject: [PATCH] Show vehicle options when offline editing missions --- src/FirmwarePlugin/FirmwarePluginManager.cc | 4 ++-- src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc | 4 ++-- src/PlanView/MissionSettingsEditor.qml | 5 +++-- src/QmlControls/QGroundControlQmlGlobal.cc | 14 ++++++++++++++ src/QmlControls/QGroundControlQmlGlobal.h | 4 +++- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/FirmwarePlugin/FirmwarePluginManager.cc b/src/FirmwarePlugin/FirmwarePluginManager.cc index 094ac201a..68d7e7ae1 100644 --- a/src/FirmwarePlugin/FirmwarePluginManager.cc +++ b/src/FirmwarePlugin/FirmwarePluginManager.cc @@ -16,7 +16,7 @@ FirmwarePluginManager::FirmwarePluginManager(QGCApplication* app, QGCToolbox* toolbox) : QGCTool(app, toolbox) - , _genericFirmwarePlugin(NULL) + , _genericFirmwarePlugin(nullptr) { } @@ -58,7 +58,7 @@ QList FirmwarePluginManager::supportedVehicleTypes(MAV_AUTOPILOT firmw FirmwarePlugin* FirmwarePluginManager::firmwarePluginForAutopilot(MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType) { FirmwarePluginFactory* factory = _findPluginFactory(firmwareType); - FirmwarePlugin* plugin = NULL; + FirmwarePlugin* plugin = nullptr; if (factory) { plugin = factory->firmwarePluginForAutopilot(firmwareType, vehicleType); diff --git a/src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc b/src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc index 9b667ee45..66708e219 100644 --- a/src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc +++ b/src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc @@ -16,7 +16,7 @@ PX4FirmwarePluginFactory PX4FirmwarePluginFactory; PX4FirmwarePluginFactory::PX4FirmwarePluginFactory(void) - : _pluginInstance(NULL) + : _pluginInstance(nullptr) { } @@ -40,5 +40,5 @@ FirmwarePlugin* PX4FirmwarePluginFactory::firmwarePluginForAutopilot(MAV_AUTOPIL return _pluginInstance; } - return NULL; + return nullptr; } diff --git a/src/PlanView/MissionSettingsEditor.qml b/src/PlanView/MissionSettingsEditor.qml index 9c9bffeb0..314aeb68c 100644 --- a/src/PlanView/MissionSettingsEditor.qml +++ b/src/PlanView/MissionSettingsEditor.qml @@ -30,6 +30,7 @@ Rectangle { property bool _showCruiseSpeed: !_missionVehicle.multiRotor property bool _showHoverSpeed: _missionVehicle.multiRotor || _missionVehicle.vtol property bool _multipleFirmware: QGroundControl.supportedFirmwareCount > 2 + property bool _multipleVehicleTypes: QGroundControl.supportedVehicleCount > 1 property real _fieldWidth: ScreenTools.defaultFontPixelWidth * 16 property bool _mobile: ScreenTools.isMobile property var _savePath: QGroundControl.settingsManager.appSettings.missionSavePath @@ -158,13 +159,13 @@ Rectangle { QGCLabel { text: _vehicleLabel Layout.fillWidth: true - visible: _showOfflineVehicleCombos + visible: _multipleVehicleTypes } FactComboBox { fact: QGroundControl.settingsManager.appSettings.offlineEditingVehicleType indexModel: false Layout.preferredWidth: _fieldWidth - visible: _showOfflineVehicleCombos + visible: _multipleVehicleTypes enabled: _enableOfflineVehicleCombos } diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 4365fcc65..26b263c9e 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -190,6 +190,20 @@ int QGroundControlQmlGlobal::supportedFirmwareCount() return _firmwarePluginManager->supportedFirmwareTypes().count(); } +int QGroundControlQmlGlobal::supportedVehicleCount() +{ + int count = 0; + QList list = _firmwarePluginManager->supportedFirmwareTypes(); + qDebug() << "Supported Firmwares" << list.count(); + foreach(auto firmware, list) { + if(firmware != MAV_AUTOPILOT_GENERIC) { + count += _firmwarePluginManager->supportedVehicleTypes(firmware).count(); + qDebug() << "Firmware" << firmware << "Vehicles" << _firmwarePluginManager->supportedVehicleTypes(firmware).count(); + } + } + return count; +} + bool QGroundControlQmlGlobal::px4ProFirmwareSupported() { return _firmwarePluginManager->supportedFirmwareTypes().contains(MAV_AUTOPILOT_PX4); diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index ca5477042..cfbfdca73 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -77,8 +77,9 @@ public: Q_PROPERTY(bool microhardSupported READ microhardSupported CONSTANT) Q_PROPERTY(int supportedFirmwareCount READ supportedFirmwareCount CONSTANT) + Q_PROPERTY(int supportedVehicleCount READ supportedVehicleCount CONSTANT) Q_PROPERTY(bool px4ProFirmwareSupported READ px4ProFirmwareSupported CONSTANT) - Q_PROPERTY(int apmFirmwareSupported READ apmFirmwareSupported CONSTANT) + Q_PROPERTY(int apmFirmwareSupported READ apmFirmwareSupported CONSTANT) Q_PROPERTY(qreal zOrderTopMost READ zOrderTopMost CONSTANT) ///< z order for top most items, toolbar, main window sub view Q_PROPERTY(qreal zOrderWidgets READ zOrderWidgets CONSTANT) ///< z order value to widgets, for example: zoom controls, hud widgetss @@ -203,6 +204,7 @@ public: #endif int supportedFirmwareCount (); + int supportedVehicleCount (); bool px4ProFirmwareSupported (); bool apmFirmwareSupported (); bool skipSetupPage () { return _skipSetupPage; } -- 2.22.0