From ad48fda2cbd1507578564789ee5c52c534a42e08 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Tue, 27 Mar 2018 13:05:50 -0700 Subject: [PATCH] Power components allow setup while armed but not flying --- src/AutoPilotPlugins/APM/APMPowerComponent.h | 21 ++++++++++---------- src/AutoPilotPlugins/Common/SetupPage.qml | 15 ++++++++------ src/AutoPilotPlugins/PX4/PowerComponent.h | 21 ++++++++++---------- src/VehicleSetup/VehicleComponent.cc | 6 ------ src/VehicleSetup/VehicleComponent.h | 8 ++++++-- 5 files changed, 37 insertions(+), 34 deletions(-) diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.h b/src/AutoPilotPlugins/APM/APMPowerComponent.h index bf9267723..e033041fb 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 a2912e368..82dc1ddef 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 fb4835d3e..9be937d99 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 3afc798ac..071940bc0 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 f452467ab..9b6488ed0 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 -- 2.22.0