diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.h b/src/AutoPilotPlugins/APM/APMPowerComponent.h
index bf92677..e033041 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 a2912e3..82dc1dd 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 fb4835d..9be937d 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 3afc798..071940b 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 f452467..9b6488e 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