diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.h b/src/AutoPilotPlugins/APM/APMPowerComponent.h index bf9267723386b7df2d6c6e72bf7355531434fcbd..e033041fba18f84c2c1040b34305e90a61e030dd 100644 --- a/src/AutoPilotPlugins/APM/APMPowerComponent.h +++ b/src/AutoPilotPlugins/APM/APMPowerComponent.h @@ -20,18 +20,19 @@ class APMPowerComponent : public VehicleComponent public: APMPowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); - // Virtuals from VehicleComponent - QStringList setupCompleteChangedTriggerList(void) const final; + // Overrides from VehicleComponent + QStringList setupCompleteChangedTriggerList(void) const override; // Virtuals from VehicleComponent - QString name (void) const final; - QString description (void) const final; - QString iconResource (void) const final; - bool requiresSetup (void) const final; - bool setupComplete (void) const final; - QUrl setupSource (void) const final; - QUrl summaryQmlSource (void) const final; - + QString name (void) const override; + QString description (void) const override; + QString iconResource (void) const override; + bool requiresSetup (void) const override; + bool setupComplete (void) const override; + QUrl setupSource (void) const override; + QUrl summaryQmlSource (void) const override; + bool allowSetupWhileArmed (void) const override { return true; } + private: const QString _name; QVariantList _summaryItems; diff --git a/src/AutoPilotPlugins/Common/SetupPage.qml b/src/AutoPilotPlugins/Common/SetupPage.qml index a2912e368a4de630873568b4028d8779386e2427..82dc1ddef72f957d49518b5ef26d295a7a889fdb 100644 --- a/src/AutoPilotPlugins/Common/SetupPage.qml +++ b/src/AutoPilotPlugins/Common/SetupPage.qml @@ -23,7 +23,7 @@ import QGroundControl.Controllers 1.0 QGCView { id: setupView viewPanel: setupPanel - enabled: !_shouldDisableWhenArmed + enabled: !_disableDueToArmed && !_disableDueToFlying property alias pageComponent: pageLoader.sourceComponent property string pageName: vehicleComponent ? vehicleComponent.name : "" @@ -31,13 +31,16 @@ QGCView { property real availableWidth: width - pageLoader.x property real availableHeight: height - pageLoader.y - property bool _vehicleArmed: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle.armed : false - property bool _shouldDisableWhenArmed: _vehicleArmed ? (vehicleComponent ? !vehicleComponent.allowSetupWhileArmed : false) : false + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property bool _vehicleArmed: _activeVehicle ? _activeVehicle.armed : false + property bool _vehicleFlying: _activeVehicle ? _activeVehicle.flying : false + property bool _disableDueToArmed: vehicleComponent ? (!vehicleComponent.allowSetupWhileArmed && _vehicleArmed) : false + property bool _disableDueToFlying: vehicleComponent ? (!vehicleComponent.allowSetupWhileFlying && _vehicleFlying) : false + property string _disableReason: _disableDueToArmed ? qsTr("armed") : qsTr("flying") property real _margins: ScreenTools.defaultFontPixelHeight * 0.5 property string _pageTitle: qsTr("%1 Setup").arg(pageName) - QGCPalette { id: qgcPal; colorGroupEnabled: setupPanel.enabled } QGCViewPanel { @@ -57,7 +60,7 @@ QGCView { QGCLabel { font.pointSize: ScreenTools.largeFontPointSize - text: _shouldDisableWhenArmed ? _pageTitle + "" + qsTr(" (Disabled while the vehicle is armed)") + "" : _pageTitle + text: !setupView.enabled ? _pageTitle + "" + qsTr(" (Disabled while the vehicle is %1)").arg(_disableReason) + "" : _pageTitle visible: !ScreenTools.isShortScreen } @@ -78,7 +81,7 @@ QGCView { // Overlay to display when vehicle is armed and this setup page needs // to be disabled Rectangle { - visible: _shouldDisableWhenArmed + visible: !setupView.enabled anchors.fill: pageLoader color: "black" opacity: 0.5 diff --git a/src/AutoPilotPlugins/PX4/PowerComponent.h b/src/AutoPilotPlugins/PX4/PowerComponent.h index fb4835d3eef38b226dd0f9026cbfe42156c08836..9be937d99c80778b06b02ef59329ba51edaf726e 100644 --- a/src/AutoPilotPlugins/PX4/PowerComponent.h +++ b/src/AutoPilotPlugins/PX4/PowerComponent.h @@ -24,18 +24,19 @@ class PowerComponent : public VehicleComponent public: PowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); - // Virtuals from VehicleComponent + // Overrides from VehicleComponent virtual QStringList setupCompleteChangedTriggerList(void) const; - // Virtuals from VehicleComponent - virtual QString name (void) const; - virtual QString description (void) const; - virtual QString iconResource (void) const; - virtual bool requiresSetup (void) const; - virtual bool setupComplete (void) const; - virtual QUrl setupSource (void) const; - virtual QUrl summaryQmlSource (void) const; - + // Overrides from VehicleComponent + QString name (void) const override; + QString description (void) const override; + QString iconResource (void) const override; + bool requiresSetup (void) const override; + bool setupComplete (void) const override; + QUrl setupSource (void) const override; + QUrl summaryQmlSource (void) const override; + bool allowSetupWhileArmed (void) const override { return true; } + private: const QString _name; QVariantList _summaryItems; diff --git a/src/VehicleSetup/VehicleComponent.cc b/src/VehicleSetup/VehicleComponent.cc index 3afc798ace843aa43f4ed8909e2db2cd4960dd67..071940bc0f38a233fd58e58f4cd0a4d13dcac81b 100644 --- a/src/VehicleSetup/VehicleComponent.cc +++ b/src/VehicleSetup/VehicleComponent.cc @@ -66,9 +66,3 @@ void VehicleComponent::_triggerUpdated(QVariant /*value*/) { emit setupCompleteChanged(setupComplete()); } - -bool VehicleComponent::allowSetupWhileArmed(void) const -{ - // Default is to not allow setup while armed - return false; -} diff --git a/src/VehicleSetup/VehicleComponent.h b/src/VehicleSetup/VehicleComponent.h index f452467ab7955e319c2aabb4779ad496bbc65914..9b6488ed0bf025929360d3d3136910d3ac1a454e 100644 --- a/src/VehicleSetup/VehicleComponent.h +++ b/src/VehicleSetup/VehicleComponent.h @@ -37,7 +37,8 @@ class VehicleComponent : public QObject Q_PROPERTY(QUrl setupSource READ setupSource NOTIFY setupSourceChanged) Q_PROPERTY(QUrl summaryQmlSource READ summaryQmlSource CONSTANT) Q_PROPERTY(bool allowSetupWhileArmed READ allowSetupWhileArmed CONSTANT) - + Q_PROPERTY(bool allowSetupWhileFlying READ allowSetupWhileFlying CONSTANT) + public: VehicleComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); ~VehicleComponent(); @@ -51,8 +52,11 @@ public: virtual QUrl summaryQmlSource(void) const = 0; // @return true: Setup panel can be shown while vehicle is armed - virtual bool allowSetupWhileArmed(void) const; + virtual bool allowSetupWhileArmed(void) const { return false; } // Defaults to false + // @return true: Setup panel can be shown while vehicle is flying (and armed) + virtual bool allowSetupWhileFlying(void) const { return false; } // Defaults to false + virtual void addSummaryQmlComponent(QQmlContext* context, QQuickItem* parent); /// @brief Returns an list of parameter names for which a change should cause the setupCompleteChanged