From 27c9fa2372bad3a918fd2318de8c9063750ba3af Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Thu, 15 Sep 2016 01:42:58 +0200 Subject: [PATCH] LP-245 config: made binding more NULL safe --- .../uavobjectwidgetutils/configtaskwidget.cpp | 11 ++++++----- .../uavobjectwidgetutils/smartsavebutton.cpp | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ground/gcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp b/ground/gcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp index 68fcc2887..e9eb4c072 100644 --- a/ground/gcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp +++ b/ground/gcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp @@ -366,7 +366,7 @@ void ConfigTaskWidget::refreshWidgetsValues(UAVObject *obj) QList bindings = obj == NULL ? m_widgetBindingsPerObject.values() : m_widgetBindingsPerObject.values(obj); foreach(WidgetBinding * binding, bindings) { - if (binding->field() != NULL && binding->widget() != NULL) { + if (binding->field() && binding->widget()) { if (binding->isEnabled()) { setWidgetFromField(binding->widget(), binding->field(), binding); } else { @@ -384,7 +384,7 @@ void ConfigTaskWidget::refreshWidgetsValues(UAVObject *obj) void ConfigTaskWidget::updateObjectsFromWidgets() { foreach(WidgetBinding * binding, m_widgetBindingsPerObject) { - if (binding->object() != NULL && binding->field() != NULL) { + if (binding->object() && binding->field()) { binding->updateObjectFieldFromValue(); } } @@ -419,9 +419,10 @@ void ConfigTaskWidget::addApplySaveButtons(QPushButton *update, QPushButton *sav m_saveButton->addSaveButton(save); } foreach(WidgetBinding * binding, m_widgetBindingsPerWidget) { - m_saveButton->addObject((UAVDataObject *)binding->object()); + if (binding->object()) { + m_saveButton->addObject((UAVDataObject *)binding->object()); + } } - updateEnableControls(); } void ConfigTaskWidget::enableControls(bool enable) @@ -824,7 +825,7 @@ void ConfigTaskWidget::reloadButtonClicked() QList temp; foreach(WidgetBinding * binding, bindings) { - if (binding->isEnabled() && binding->object() != NULL) { + if (binding->isEnabled() && binding->object()) { objectComparator value; value.objid = binding->object()->getObjID(); value.objinstid = binding->object()->getInstID(); diff --git a/ground/gcs/src/plugins/uavobjectwidgetutils/smartsavebutton.cpp b/ground/gcs/src/plugins/uavobjectwidgetutils/smartsavebutton.cpp index 454743191..4c6aa15d5 100644 --- a/ground/gcs/src/plugins/uavobjectwidgetutils/smartsavebutton.cpp +++ b/ground/gcs/src/plugins/uavobjectwidgetutils/smartsavebutton.cpp @@ -42,11 +42,13 @@ void SmartSaveButton::addApplyButton(QPushButton *apply) buttonList.insert(apply, apply_button); connect(apply, SIGNAL(clicked()), this, SLOT(processClick())); } + void SmartSaveButton::addSaveButton(QPushButton *save) { buttonList.insert(save, save_button); connect(save, SIGNAL(clicked()), this, SLOT(processClick())); } + void SmartSaveButton::processClick() { emit beginOp(); @@ -76,6 +78,9 @@ void SmartSaveButton::processOperation(QPushButton *button, bool save) ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); UAVObjectUtilManager *utilMngr = pm->getObject(); foreach(UAVDataObject * obj, objects) { + if (!obj) { + continue; + } UAVObject::Metadata mdata = obj->getMetadata(); // Should we really save this object to the board? @@ -165,24 +170,29 @@ void SmartSaveButton::setObjects(QList list) void SmartSaveButton::addObject(UAVDataObject *obj) { Q_ASSERT(obj); - if (!objects.contains(obj)) { + if (obj && !objects.contains(obj)) { objects.append(obj); } } + void SmartSaveButton::removeObject(UAVDataObject *obj) { - if (objects.contains(obj)) { + Q_ASSERT(obj); + if (obj && objects.contains(obj)) { objects.removeAll(obj); } } + void SmartSaveButton::removeAllObjects() { objects.clear(); } + void SmartSaveButton::clearObjects() { objects.clear(); } + void SmartSaveButton::transaction_finished(UAVObject *obj, bool result) { if (current_object == obj) {