From c8942215ce04952e3dd0ba500a352031e0ae8a48 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sun, 22 Nov 2015 11:13:50 -0800 Subject: [PATCH] Work correctly when no Vehicle --- .../FactControls/FactPanelController.cc | 25 +++++++++---------- src/QmlControls/ParameterEditorController.cc | 12 +++++---- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/FactSystem/FactControls/FactPanelController.cc b/src/FactSystem/FactControls/FactPanelController.cc index 3bfc1f3b5..850116b0a 100644 --- a/src/FactSystem/FactControls/FactPanelController.cc +++ b/src/FactSystem/FactControls/FactPanelController.cc @@ -33,19 +33,18 @@ QGC_LOGGING_CATEGORY(FactPanelControllerLog, "FactPanelControllerLog") -FactPanelController::FactPanelController(void) : - _factPanel(NULL) +FactPanelController::FactPanelController(void) + : _vehicle(NULL) + , _uas(NULL) + , _autopilot(NULL) + , _factPanel(NULL) { _vehicle = qgcApp()->toolbox()->multiVehicleManager()->activeVehicle(); - Q_ASSERT(_vehicle); - _uas = _vehicle->uas(); - Q_ASSERT(_uas); - - _autopilot = _vehicle->autopilotPlugin(); - Q_ASSERT(_autopilot); - Q_ASSERT(_autopilot->parametersReady()); - Q_ASSERT(!_autopilot->missingParameters()); + if (_vehicle) { + _uas = _vehicle->uas(); + _autopilot = _vehicle->autopilotPlugin(); + } // Do a delayed check for the _factPanel finally being set correctly from Qml QTimer::singleShot(1000, this, &FactPanelController::_checkForMissingFactPanel); @@ -114,7 +113,7 @@ bool FactPanelController::_allParametersExists(int componentId, QStringList name bool noMissingFacts = true; foreach (QString name, names) { - if (!_autopilot->parameterExists(componentId, name)) { + if (_autopilot && !_autopilot->parameterExists(componentId, name)) { _reportMissingParameter(componentId, name); noMissingFacts = false; } @@ -132,7 +131,7 @@ void FactPanelController::_checkForMissingFactPanel(void) Fact* FactPanelController::getParameterFact(int componentId, const QString& name) { - if (_autopilot->parameterExists(componentId, name)) { + if (_autopilot && _autopilot->parameterExists(componentId, name)) { Fact* fact = _autopilot->getParameterFact(componentId, name); QQmlEngine::setObjectOwnership(fact, QQmlEngine::CppOwnership); return fact; @@ -144,7 +143,7 @@ Fact* FactPanelController::getParameterFact(int componentId, const QString& name bool FactPanelController::parameterExists(int componentId, const QString& name) { - return _autopilot->parameterExists(componentId, name); + return _autopilot ? _autopilot->parameterExists(componentId, name) : false; } void FactPanelController::_showInternalError(const QString& errorMsg) diff --git a/src/QmlControls/ParameterEditorController.cc b/src/QmlControls/ParameterEditorController.cc index 4818152ce..8cab46d3c 100644 --- a/src/QmlControls/ParameterEditorController.cc +++ b/src/QmlControls/ParameterEditorController.cc @@ -34,11 +34,13 @@ /// @Brief Constructs a new ParameterEditorController Widget. This widget is used within the PX4VehicleConfig set of screens. ParameterEditorController::ParameterEditorController(void) { - const QMap >& groupMap = _autopilot->getGroupMap(); - - foreach (int componentId, groupMap.keys()) { - _componentIds += QString("%1").arg(componentId); - } + if (_autopilot) { + const QMap >& groupMap = _autopilot->getGroupMap(); + + foreach (int componentId, groupMap.keys()) { + _componentIds += QString("%1").arg(componentId); + } + } } ParameterEditorController::~ParameterEditorController() -- 2.22.0