diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp index d032b9164..e7ca51fd1 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configccpmwidget.cpp @@ -489,7 +489,7 @@ void ConfigCcpmWidget::UpdateCurveWidgets() } // Setup all Throttle1 curves for all types of airframes if (Changed==1) - m_ccpm->ThrottleCurve->setCurve(curveValues); + m_ccpm->ThrottleCurve->setCurve(&curveValues); curveValues.clear(); Changed=0; @@ -502,7 +502,7 @@ void ConfigCcpmWidget::UpdateCurveWidgets() } // Setup all Throttle1 curves for all types of airframes if (Changed==1) - m_ccpm->PitchCurve->setCurve(curveValues); + m_ccpm->PitchCurve->setCurve(&curveValues); } void ConfigCcpmWidget::updatePitchCurveValue(QList curveValues0,double Value0) diff --git a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp index 05e9987c5..84b531d6b 100644 --- a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp @@ -274,7 +274,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions() case SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON: case SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL: { - ConfigFixedWingWidget* fixedwing = new ConfigFixedWingWidget(); + QPointer fixedwing = new ConfigFixedWingWidget(); channelDesc = fixedwing->getChannelDescriptions(); } break; @@ -282,7 +282,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions() // helicp case SystemSettings::AIRFRAMETYPE_HELICP: { - ConfigCcpmWidget* heli = new ConfigCcpmWidget(); + QPointer heli = new ConfigCcpmWidget(); channelDesc = heli->getChannelDescriptions(); } break; @@ -300,7 +300,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions() case SystemSettings::AIRFRAMETYPE_HEXACOAX: case SystemSettings::AIRFRAMETYPE_HEXA: { - ConfigMultiRotorWidget* multi = new ConfigMultiRotorWidget(); + QPointer multi = new ConfigMultiRotorWidget(); channelDesc = multi->getChannelDescriptions(); } break; @@ -310,7 +310,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions() case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIAL: case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEMOTORCYCLE: { - ConfigGroundVehicleWidget* ground = new ConfigGroundVehicleWidget(); + QPointer ground = new ConfigGroundVehicleWidget(); channelDesc = ground->getChannelDescriptions(); } break; @@ -643,9 +643,9 @@ void ConfigVehicleTypeWidget::refreshWidgetsValues(UAVObject * o) // is at least one of the curve values != 0? if (vconfig->isValidThrottleCurve(&curveValues)) { // yes, use the curve we just read from mixersettings - m_aircraft->multiThrottleCurve->initCurve(curveValues); - m_aircraft->fixedWingThrottle->initCurve(curveValues); - m_aircraft->groundVehicleThrottle1->initCurve(curveValues); + m_aircraft->multiThrottleCurve->initCurve(&curveValues); + m_aircraft->fixedWingThrottle->initCurve(&curveValues); + m_aircraft->groundVehicleThrottle1->initCurve(&curveValues); } else { // no, init a straight curve @@ -658,7 +658,7 @@ void ConfigVehicleTypeWidget::refreshWidgetsValues(UAVObject * o) vconfig->getThrottleCurve(mixer, VehicleConfig::MIXER_THROTTLECURVE2, &curveValues); if (vconfig->isValidThrottleCurve(&curveValues)) { - m_aircraft->groundVehicleThrottle2->initCurve(curveValues); + m_aircraft->groundVehicleThrottle2->initCurve(&curveValues); } else { m_aircraft->groundVehicleThrottle2->initLinearCurve(curveValues.count(), 1.0); @@ -767,7 +767,7 @@ void ConfigVehicleTypeWidget::updateCustomAirframeUI() // yes, use the curve we just read from mixersettings m_aircraft->customThrottle1Curve->setMin(vconfig->getCurveMin(&curveValues)); m_aircraft->customThrottle1Curve->setMax(vconfig->getCurveMax(&curveValues)); - m_aircraft->customThrottle1Curve->initCurve(curveValues); + m_aircraft->customThrottle1Curve->initCurve(&curveValues); } else { // no, init a straight curve @@ -780,7 +780,7 @@ void ConfigVehicleTypeWidget::updateCustomAirframeUI() if (vconfig->isValidThrottleCurve(&curveValues)) { m_aircraft->customThrottle2Curve->setMin(vconfig->getCurveMin(&curveValues)); m_aircraft->customThrottle2Curve->setMax(vconfig->getCurveMax(&curveValues)); - m_aircraft->customThrottle2Curve->initCurve(curveValues); + m_aircraft->customThrottle2Curve->initCurve(&curveValues); } else { m_aircraft->customThrottle2Curve->initLinearCurve(curveValues.count(),(double)1); diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.cpp b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.cpp index b04b2f378..a19692ff9 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.cpp @@ -123,9 +123,9 @@ Edge* MixerCurveWidget::getEdge(int index, Node* sourceNode, Node* destNode) If a curve exists already, resets it. Points should be between 0 and 1. */ -void MixerCurveWidget::initCurve(QList points) +void MixerCurveWidget::initCurve(const QList* points) { - if (points.length() < 2) + if (points->length() < 2) return; // We need at least 2 points on a curve! // finally, set node positions @@ -192,16 +192,16 @@ void MixerCurveWidget::initLinearCurve(int numPoints, double maxValue, double mi double val = (range * ( i / (double)(numPoints-1) ) ) + minValue; points.append(val); } - initCurve(points); + initCurve(&points); } /** Setd the current curve settings */ -void MixerCurveWidget::setCurve(QList points) +void MixerCurveWidget::setCurve(const QList* points) { curveUpdating = true; - int ptCnt = points.count(); + int ptCnt = points->count(); if (nodeList.count() != ptCnt) initNodes(ptCnt); @@ -211,7 +211,7 @@ void MixerCurveWidget::setCurve(QList points) qreal h = plot->boundingRect().height(); for (int i=0; i curveMax) ? curveMax : points.at(i); + double val = (points->at(i) < curveMin) ? curveMin : (points->at(i) > curveMax) ? curveMax : points->at(i); val += range; val -= (curveMin + range); @@ -248,7 +248,8 @@ void MixerCurveWidget::resizeEvent(QResizeEvent* event) void MixerCurveWidget::itemMoved(double itemValue) { if (!curveUpdating) { - emit curveUpdated(getCurve(), itemValue); + QList curve = getCurve(); + emit curveUpdated(&curve, itemValue); } } diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.h b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.h index 1f5a8ee88..031a70733 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.h +++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/mixercurvewidget.h @@ -44,10 +44,10 @@ public: MixerCurveWidget(QWidget *parent = 0); ~MixerCurveWidget(); void itemMoved(double itemValue); // Callback when a point is moved, to be updated - void initCurve (QList points); + void initCurve (const QList* points); QList getCurve(); void initLinearCurve(int numPoints, double maxValue = 1, double minValue = 0); - void setCurve(QList); + void setCurve(const QList* points); void setMin(double value); double getMin(); void setMax(double value); @@ -57,7 +57,7 @@ public: static const int NODE_NUMELEM = 5; signals: - void curveUpdated(QList, double ); + void curveUpdated(const QList* points, const double value); private slots: