Commit 1bcd33e3 authored by Don Gagne's avatar Don Gagne

Fix relative altitude fact

parent ae0fb2c2
...@@ -233,7 +233,8 @@ void MissionItem::_connectSignals(void) ...@@ -233,7 +233,8 @@ void MissionItem::_connectSignals(void)
connect(_longitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged); connect(_longitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
connect(_altitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged); connect(_altitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
connect(_headingDegreesFact, &Fact::valueChanged, this, &MissionItem::_headingDegreesFactChanged); connect(_headingDegreesFact, &Fact::valueChanged, this, &MissionItem::_headingDegreesFactChanged);
connect(_altitudeRelativeToHomeFact, &Fact::valueChanged, this, &MissionItem::_altitudeRelativeToHomeFactChanged);
} }
MissionItem::~MissionItem() MissionItem::~MissionItem()
...@@ -284,7 +285,6 @@ void MissionItem::setSequenceNumber(int sequenceNumber) ...@@ -284,7 +285,6 @@ void MissionItem::setSequenceNumber(int sequenceNumber)
{ {
_sequenceNumber = sequenceNumber; _sequenceNumber = sequenceNumber;
emit sequenceNumberChanged(_sequenceNumber); emit sequenceNumberChanged(_sequenceNumber);
emit changed(this);
} }
void MissionItem::setX(double x) void MissionItem::setX(double x)
...@@ -316,7 +316,6 @@ void MissionItem::setLatitude(double lat) ...@@ -316,7 +316,6 @@ void MissionItem::setLatitude(double lat)
if (_latitudeFact->value().toDouble() != lat) if (_latitudeFact->value().toDouble() != lat)
{ {
_latitudeFact->setValue(lat); _latitudeFact->setValue(lat);
emit changed(this);
emit coordinateChanged(coordinate()); emit coordinateChanged(coordinate());
} }
} }
...@@ -326,7 +325,6 @@ void MissionItem::setLongitude(double lon) ...@@ -326,7 +325,6 @@ void MissionItem::setLongitude(double lon)
if (_longitudeFact->value().toDouble() != lon) if (_longitudeFact->value().toDouble() != lon)
{ {
_longitudeFact->setValue(lon); _longitudeFact->setValue(lon);
emit changed(this);
emit coordinateChanged(coordinate()); emit coordinateChanged(coordinate());
} }
} }
...@@ -336,7 +334,6 @@ void MissionItem::setAltitude(double altitude) ...@@ -336,7 +334,6 @@ void MissionItem::setAltitude(double altitude)
if (_altitudeFact->value().toDouble() != altitude) if (_altitudeFact->value().toDouble() != altitude)
{ {
_altitudeFact->setValue(altitude); _altitudeFact->setValue(altitude);
emit changed(this);
emit valueStringsChanged(valueStrings()); emit valueStringsChanged(valueStrings());
emit coordinateChanged(coordinate()); emit coordinateChanged(coordinate());
} }
...@@ -378,7 +375,6 @@ void MissionItem::setAction(int /*MAV_CMD*/ action) ...@@ -378,7 +375,6 @@ void MissionItem::setAction(int /*MAV_CMD*/ action)
setFrame(MAV_FRAME_MISSION); setFrame(MAV_FRAME_MISSION);
} }
emit changed(this);
emit commandNameChanged(commandName()); emit commandNameChanged(commandName());
emit commandChanged((MavlinkQmlSingleton::Qml_MAV_CMD)_command); emit commandChanged((MavlinkQmlSingleton::Qml_MAV_CMD)_command);
emit valueLabelsChanged(valueLabels()); emit valueLabelsChanged(valueLabels());
...@@ -400,7 +396,7 @@ void MissionItem::setFrame(int /*MAV_FRAME*/ frame) ...@@ -400,7 +396,7 @@ void MissionItem::setFrame(int /*MAV_FRAME*/ frame)
if (_frame != frame) { if (_frame != frame) {
_altitudeRelativeToHomeFact->setValue(frame == MAV_FRAME_GLOBAL_RELATIVE_ALT); _altitudeRelativeToHomeFact->setValue(frame == MAV_FRAME_GLOBAL_RELATIVE_ALT);
_frame = frame; _frame = frame;
emit changed(this); emit frameChanged(_frame);
} }
} }
...@@ -408,7 +404,7 @@ void MissionItem::setAutocontinue(bool autoContinue) ...@@ -408,7 +404,7 @@ void MissionItem::setAutocontinue(bool autoContinue)
{ {
if (_autocontinue != autoContinue) { if (_autocontinue != autoContinue) {
_autocontinue = autoContinue; _autocontinue = autoContinue;
emit changed(this); emit autoContinueChanged(_autocontinue);
} }
} }
...@@ -430,7 +426,6 @@ void MissionItem::setParam1(double param) ...@@ -430,7 +426,6 @@ void MissionItem::setParam1(double param)
if (param1() != param) if (param1() != param)
{ {
_param1Fact->setValue(param); _param1Fact->setValue(param);
emit changed(this);
emit valueStringsChanged(valueStrings()); emit valueStringsChanged(valueStrings());
} }
} }
...@@ -441,7 +436,6 @@ void MissionItem::setParam2(double param) ...@@ -441,7 +436,6 @@ void MissionItem::setParam2(double param)
{ {
_param2Fact->setValue(param); _param2Fact->setValue(param);
emit valueStringsChanged(valueStrings()); emit valueStringsChanged(valueStrings());
emit changed(this);
} }
} }
...@@ -475,7 +469,6 @@ void MissionItem::setLoiterOrbitRadius(double radius) ...@@ -475,7 +469,6 @@ void MissionItem::setLoiterOrbitRadius(double radius)
if (loiterOrbitRadius() != radius) { if (loiterOrbitRadius() != radius) {
_loiterOrbitRadiusFact->setValue(radius); _loiterOrbitRadiusFact->setValue(radius);
emit valueStringsChanged(valueStrings()); emit valueStringsChanged(valueStrings());
emit changed(this);
} }
} }
...@@ -815,7 +808,6 @@ void MissionItem::setHeadingDegrees(double headingDegrees) ...@@ -815,7 +808,6 @@ void MissionItem::setHeadingDegrees(double headingDegrees)
{ {
if (_headingDegreesFact->value().toDouble() != headingDegrees) { if (_headingDegreesFact->value().toDouble() != headingDegrees) {
_headingDegreesFact->setValue(headingDegrees); _headingDegreesFact->setValue(headingDegrees);
emit changed(this);
emit valueStringsChanged(valueStrings()); emit valueStringsChanged(valueStrings());
emit headingDegreesChanged(headingDegrees); emit headingDegreesChanged(headingDegrees);
} }
...@@ -913,6 +905,17 @@ void MissionItem::_headingDegreesFactChanged(QVariant value) ...@@ -913,6 +905,17 @@ void MissionItem::_headingDegreesFactChanged(QVariant value)
emit headingDegreesChanged(value.toDouble()); emit headingDegreesChanged(value.toDouble());
} }
void MissionItem::_altitudeRelativeToHomeFactChanged(QVariant value)
{
// Don't call setFrame, that will cause a signalling loop
int frame = value.toBool() ? MAV_FRAME_GLOBAL_RELATIVE_ALT : MAV_FRAME_GLOBAL;
if (_frame != frame) {
_frame = frame;
emit frameChanged(_frame);
}
}
void MissionItem::setHomePositionValid(bool homePositionValid) void MissionItem::setHomePositionValid(bool homePositionValid)
{ {
_homePositionValid = homePositionValid; _homePositionValid = homePositionValid;
......
...@@ -213,6 +213,8 @@ public: ...@@ -213,6 +213,8 @@ public:
void setHomePositionSpecialCase(bool homePositionSpecialCase) { _homePositionSpecialCase = homePositionSpecialCase; } void setHomePositionSpecialCase(bool homePositionSpecialCase) { _homePositionSpecialCase = homePositionSpecialCase; }
bool relativeAltitude(void) { return _frame == MAV_FRAME_GLOBAL_RELATIVE_ALT; }
static const double defaultPitch; static const double defaultPitch;
static const double defaultHeading; static const double defaultHeading;
static const double defaultAltitude; static const double defaultAltitude;
...@@ -228,15 +230,12 @@ signals: ...@@ -228,15 +230,12 @@ signals:
void dirtyChanged(bool dirty); void dirtyChanged(bool dirty);
void homePositionValidChanged(bool homePostionValid); void homePositionValidChanged(bool homePostionValid);
void distanceChanged(float distance); void distanceChanged(float distance);
void frameChanged(int frame);
/** @brief Announces a change to the waypoint data */
void changed(MissionItem* wp);
void commandNameChanged(QString type); void commandNameChanged(QString type);
void commandChanged(MavlinkQmlSingleton::Qml_MAV_CMD command); void commandChanged(MavlinkQmlSingleton::Qml_MAV_CMD command);
void valueLabelsChanged(QStringList valueLabels); void valueLabelsChanged(QStringList valueLabels);
void valueStringsChanged(QStringList valueStrings); void valueStringsChanged(QStringList valueStrings);
bool autoContinueChanged(bool autoContinue);
public: public:
/** @brief Set the waypoint action */ /** @brief Set the waypoint action */
...@@ -260,14 +259,11 @@ public: ...@@ -260,14 +259,11 @@ public:
/** @brief Wether this waypoint has been reached yet */ /** @brief Wether this waypoint has been reached yet */
bool isReached () { return (_reachedTime > 0); } bool isReached () { return (_reachedTime > 0); }
void setChanged() {
emit changed(this);
}
private slots: private slots:
void _factValueChanged(QVariant value); void _factValueChanged(QVariant value);
void _coordinateFactChanged(QVariant value); void _coordinateFactChanged(QVariant value);
void _headingDegreesFactChanged(QVariant value); void _headingDegreesFactChanged(QVariant value);
void _altitudeRelativeToHomeFactChanged(QVariant value);
private: private:
QString _oneDecimalString(double value); QString _oneDecimalString(double value);
......
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