Commit ad48fda2 authored by DonLakeFlyer's avatar DonLakeFlyer

Power components allow setup while armed but not flying

parent e8c6509d
...@@ -20,18 +20,19 @@ class APMPowerComponent : public VehicleComponent ...@@ -20,18 +20,19 @@ class APMPowerComponent : public VehicleComponent
public: public:
APMPowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); APMPowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL);
// Virtuals from VehicleComponent // Overrides from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const final; QStringList setupCompleteChangedTriggerList(void) const override;
// Virtuals from VehicleComponent // Virtuals from VehicleComponent
QString name (void) const final; QString name (void) const override;
QString description (void) const final; QString description (void) const override;
QString iconResource (void) const final; QString iconResource (void) const override;
bool requiresSetup (void) const final; bool requiresSetup (void) const override;
bool setupComplete (void) const final; bool setupComplete (void) const override;
QUrl setupSource (void) const final; QUrl setupSource (void) const override;
QUrl summaryQmlSource (void) const final; QUrl summaryQmlSource (void) const override;
bool allowSetupWhileArmed (void) const override { return true; }
private: private:
const QString _name; const QString _name;
QVariantList _summaryItems; QVariantList _summaryItems;
......
...@@ -23,7 +23,7 @@ import QGroundControl.Controllers 1.0 ...@@ -23,7 +23,7 @@ import QGroundControl.Controllers 1.0
QGCView { QGCView {
id: setupView id: setupView
viewPanel: setupPanel viewPanel: setupPanel
enabled: !_shouldDisableWhenArmed enabled: !_disableDueToArmed && !_disableDueToFlying
property alias pageComponent: pageLoader.sourceComponent property alias pageComponent: pageLoader.sourceComponent
property string pageName: vehicleComponent ? vehicleComponent.name : "" property string pageName: vehicleComponent ? vehicleComponent.name : ""
...@@ -31,13 +31,16 @@ QGCView { ...@@ -31,13 +31,16 @@ QGCView {
property real availableWidth: width - pageLoader.x property real availableWidth: width - pageLoader.x
property real availableHeight: height - pageLoader.y property real availableHeight: height - pageLoader.y
property bool _vehicleArmed: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle.armed : false property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property bool _shouldDisableWhenArmed: _vehicleArmed ? (vehicleComponent ? !vehicleComponent.allowSetupWhileArmed : false) : false 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 real _margins: ScreenTools.defaultFontPixelHeight * 0.5
property string _pageTitle: qsTr("%1 Setup").arg(pageName) property string _pageTitle: qsTr("%1 Setup").arg(pageName)
QGCPalette { id: qgcPal; colorGroupEnabled: setupPanel.enabled } QGCPalette { id: qgcPal; colorGroupEnabled: setupPanel.enabled }
QGCViewPanel { QGCViewPanel {
...@@ -57,7 +60,7 @@ QGCView { ...@@ -57,7 +60,7 @@ QGCView {
QGCLabel { QGCLabel {
font.pointSize: ScreenTools.largeFontPointSize font.pointSize: ScreenTools.largeFontPointSize
text: _shouldDisableWhenArmed ? _pageTitle + "<font color=\"red\">" + qsTr(" (Disabled while the vehicle is armed)") + "</font>" : _pageTitle text: !setupView.enabled ? _pageTitle + "<font color=\"red\">" + qsTr(" (Disabled while the vehicle is %1)").arg(_disableReason) + "</font>" : _pageTitle
visible: !ScreenTools.isShortScreen visible: !ScreenTools.isShortScreen
} }
...@@ -78,7 +81,7 @@ QGCView { ...@@ -78,7 +81,7 @@ QGCView {
// Overlay to display when vehicle is armed and this setup page needs // Overlay to display when vehicle is armed and this setup page needs
// to be disabled // to be disabled
Rectangle { Rectangle {
visible: _shouldDisableWhenArmed visible: !setupView.enabled
anchors.fill: pageLoader anchors.fill: pageLoader
color: "black" color: "black"
opacity: 0.5 opacity: 0.5
......
...@@ -24,18 +24,19 @@ class PowerComponent : public VehicleComponent ...@@ -24,18 +24,19 @@ class PowerComponent : public VehicleComponent
public: public:
PowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); PowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL);
// Virtuals from VehicleComponent // Overrides from VehicleComponent
virtual QStringList setupCompleteChangedTriggerList(void) const; virtual QStringList setupCompleteChangedTriggerList(void) const;
// Virtuals from VehicleComponent // Overrides from VehicleComponent
virtual QString name (void) const; QString name (void) const override;
virtual QString description (void) const; QString description (void) const override;
virtual QString iconResource (void) const; QString iconResource (void) const override;
virtual bool requiresSetup (void) const; bool requiresSetup (void) const override;
virtual bool setupComplete (void) const; bool setupComplete (void) const override;
virtual QUrl setupSource (void) const; QUrl setupSource (void) const override;
virtual QUrl summaryQmlSource (void) const; QUrl summaryQmlSource (void) const override;
bool allowSetupWhileArmed (void) const override { return true; }
private: private:
const QString _name; const QString _name;
QVariantList _summaryItems; QVariantList _summaryItems;
......
...@@ -66,9 +66,3 @@ void VehicleComponent::_triggerUpdated(QVariant /*value*/) ...@@ -66,9 +66,3 @@ void VehicleComponent::_triggerUpdated(QVariant /*value*/)
{ {
emit setupCompleteChanged(setupComplete()); emit setupCompleteChanged(setupComplete());
} }
bool VehicleComponent::allowSetupWhileArmed(void) const
{
// Default is to not allow setup while armed
return false;
}
...@@ -37,7 +37,8 @@ class VehicleComponent : public QObject ...@@ -37,7 +37,8 @@ class VehicleComponent : public QObject
Q_PROPERTY(QUrl setupSource READ setupSource NOTIFY setupSourceChanged) Q_PROPERTY(QUrl setupSource READ setupSource NOTIFY setupSourceChanged)
Q_PROPERTY(QUrl summaryQmlSource READ summaryQmlSource CONSTANT) Q_PROPERTY(QUrl summaryQmlSource READ summaryQmlSource CONSTANT)
Q_PROPERTY(bool allowSetupWhileArmed READ allowSetupWhileArmed CONSTANT) Q_PROPERTY(bool allowSetupWhileArmed READ allowSetupWhileArmed CONSTANT)
Q_PROPERTY(bool allowSetupWhileFlying READ allowSetupWhileFlying CONSTANT)
public: public:
VehicleComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); VehicleComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL);
~VehicleComponent(); ~VehicleComponent();
...@@ -51,8 +52,11 @@ public: ...@@ -51,8 +52,11 @@ public:
virtual QUrl summaryQmlSource(void) const = 0; virtual QUrl summaryQmlSource(void) const = 0;
// @return true: Setup panel can be shown while vehicle is armed // @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); virtual void addSummaryQmlComponent(QQmlContext* context, QQuickItem* parent);
/// @brief Returns an list of parameter names for which a change should cause the setupCompleteChanged /// @brief Returns an list of parameter names for which a change should cause the setupCompleteChanged
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment