Skip to content

Commit

Permalink
Merge pull request #6274 from DonLakeFlyer/allowSetupWhileFlying
Browse files Browse the repository at this point in the history
Power components allow setup while armed but not flying
  • Loading branch information
DonLakeFlyer authored Mar 28, 2018
2 parents e8c6509 + ad48fda commit 07805f1
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 34 deletions.
21 changes: 11 additions & 10 deletions src/AutoPilotPlugins/APM/APMPowerComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
15 changes: 9 additions & 6 deletions src/AutoPilotPlugins/Common/SetupPage.qml
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,24 @@ 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 : ""
property string pageDescription: vehicleComponent ? vehicleComponent.description : ""
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 {
Expand All @@ -57,7 +60,7 @@ QGCView {

QGCLabel {
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
}

Expand All @@ -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
Expand Down
21 changes: 11 additions & 10 deletions src/AutoPilotPlugins/PX4/PowerComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 0 additions & 6 deletions src/VehicleSetup/VehicleComponent.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
8 changes: 6 additions & 2 deletions src/VehicleSetup/VehicleComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -51,8 +52,11 @@ class VehicleComponent : public QObject
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
Expand Down

0 comments on commit 07805f1

Please sign in to comment.