mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 07:15:35 +08:00
Ref T129, formatting aircraft parts/situation
This commit is contained in:
committed by
Mathew Sutcliffe
parent
bfa3908a99
commit
db9236a266
@@ -42,21 +42,15 @@ namespace BlackMisc
|
||||
if (index.isMyself()) { return CVariant::from(*this); }
|
||||
if (ITimestampBased::canHandleIndex(index)) { return ITimestampBased::propertyByIndex(index); }
|
||||
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
const ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexEngines:
|
||||
return CVariant::fromValue(this->m_engines);
|
||||
case IndexFlapsPercentage:
|
||||
return CVariant::fromValue(this->m_flapsPercentage);
|
||||
case IndexGearDown:
|
||||
return CVariant::fromValue(this->m_gearDown);
|
||||
case IndexLights:
|
||||
return this->m_lights.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexSpoilersOut:
|
||||
return CVariant::fromValue(this->m_spoilersOut);
|
||||
default:
|
||||
return CValueObject::propertyByIndex(index);
|
||||
case IndexEngines: return CVariant::fromValue(m_engines);
|
||||
case IndexFlapsPercentage: return CVariant::fromValue(m_flapsPercentage);
|
||||
case IndexGearDown: return CVariant::fromValue(m_gearDown);
|
||||
case IndexLights: return m_lights.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexSpoilersOut: return CVariant::fromValue(m_spoilersOut);
|
||||
default: return CValueObject::propertyByIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,27 +59,15 @@ namespace BlackMisc
|
||||
if (index.isMyself()) { (*this) = variant.to<CAircraftParts>(); return; }
|
||||
if (ITimestampBased::canHandleIndex(index)) { ITimestampBased::setPropertyByIndex(index, variant); return; }
|
||||
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
const ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexEngines:
|
||||
this->m_engines = variant.to < decltype(this->m_engines) > ();
|
||||
break;
|
||||
case IndexFlapsPercentage:
|
||||
this->m_flapsPercentage = variant.toInt();
|
||||
break;
|
||||
case IndexGearDown:
|
||||
this->m_gearDown = variant.toBool();
|
||||
break;
|
||||
case IndexLights:
|
||||
this->m_lights.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexSpoilersOut:
|
||||
this->m_spoilersOut = variant.toBool();
|
||||
break;
|
||||
default:
|
||||
CValueObject::setPropertyByIndex(index, variant);
|
||||
break;
|
||||
case IndexEngines: m_engines = variant.to < decltype(m_engines) > (); break;
|
||||
case IndexFlapsPercentage: m_flapsPercentage = variant.toInt(); break;
|
||||
case IndexGearDown: m_gearDown = variant.toBool(); break;
|
||||
case IndexLights: m_lights.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexSpoilersOut: m_spoilersOut = variant.toBool(); break;
|
||||
default: CValueObject::setPropertyByIndex(index, variant); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,21 +76,15 @@ namespace BlackMisc
|
||||
if (index.isMyself()) { return ITimestampBased::comparePropertyByIndex(CPropertyIndex(), compareValue); }
|
||||
if (ITimestampBased::canHandleIndex(index)) { return ITimestampBased::comparePropertyByIndex(index, compareValue); }
|
||||
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
const ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexEngines:
|
||||
return Compare::compare(this->getEnginesCount(), compareValue.getEnginesCount());
|
||||
case IndexFlapsPercentage:
|
||||
return Compare::compare(this->m_flapsPercentage, compareValue.getFlapsPercent());
|
||||
case IndexGearDown:
|
||||
return Compare::compare(this->m_gearDown, compareValue.isGearDown());
|
||||
case IndexEngines: return Compare::compare(this->getEnginesCount(), compareValue.getEnginesCount());
|
||||
case IndexFlapsPercentage: return Compare::compare(m_flapsPercentage, compareValue.getFlapsPercent());
|
||||
case IndexGearDown: return Compare::compare(m_gearDown, compareValue.isGearDown());
|
||||
case IndexSpoilersOut: return Compare::compare(m_spoilersOut, compareValue.isSpoilersOut());
|
||||
case IndexLights:
|
||||
break;
|
||||
case IndexSpoilersOut:
|
||||
return Compare::compare(this->m_spoilersOut, compareValue.isSpoilersOut());
|
||||
default:
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
Q_ASSERT_X(false, Q_FUNC_INFO, "No comparison");
|
||||
return 0;
|
||||
@@ -126,26 +102,26 @@ namespace BlackMisc
|
||||
|
||||
CAircraftEngine CAircraftParts::getEngine(int number) const
|
||||
{
|
||||
return this->m_engines.getEngine(number);
|
||||
return m_engines.getEngine(number);
|
||||
}
|
||||
|
||||
bool CAircraftParts::isEngineOn(int number) const
|
||||
{
|
||||
return this->m_engines.isEngineOn(number);
|
||||
return m_engines.isEngineOn(number);
|
||||
}
|
||||
|
||||
bool CAircraftParts::isAnyEngineOn() const
|
||||
{
|
||||
return this->m_engines.isAnyEngineOn();
|
||||
return m_engines.isAnyEngineOn();
|
||||
}
|
||||
|
||||
double CAircraftParts::isOnGroundInterpolated() const
|
||||
{
|
||||
if (this->m_isOnGroundInterpolated < 0)
|
||||
if (m_isOnGroundInterpolated < 0)
|
||||
{
|
||||
return this->m_isOnGround ? 1.0 : 0.0;
|
||||
return m_isOnGround ? 1.0 : 0.0;
|
||||
}
|
||||
return this->m_isOnGroundInterpolated;
|
||||
return m_isOnGroundInterpolated;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace BlackMisc
|
||||
//! Value object encapsulating information of aircraft's parts
|
||||
class BLACKMISC_EXPORT CAircraftParts :
|
||||
public CValueObject<CAircraftParts>,
|
||||
public BlackMisc::ITimestampBased
|
||||
public ITimestampBased
|
||||
{
|
||||
public:
|
||||
//! Properties by index
|
||||
@@ -126,10 +126,10 @@ namespace BlackMisc
|
||||
void setOnGroundInterpolated(double onGround) { m_isOnGroundInterpolated = onGround; }
|
||||
|
||||
//! Milliseconds to add to timestamp for interpolation
|
||||
void setTimeOffsetMs(qint64 offset) { this->m_timeOffsetMs = offset; }
|
||||
void setTimeOffsetMs(qint64 offset) { m_timeOffsetMs = offset; }
|
||||
|
||||
//! Milliseconds to add to timestamp for interpolation
|
||||
qint64 getTimeOffsetMs() const { return this->m_timeOffsetMs; }
|
||||
qint64 getTimeOffsetMs() const { return m_timeOffsetMs; }
|
||||
|
||||
//! Timestamp with offset added for interpolation
|
||||
qint64 getAdjustedMSecsSinceEpoch() const { return this->getMSecsSinceEpoch() + this->getTimeOffsetMs(); }
|
||||
|
||||
@@ -42,12 +42,12 @@ namespace BlackMisc
|
||||
|
||||
QString CAircraftSituation::convertToQString(bool i18n) const
|
||||
{
|
||||
const QString s = (this->m_position.toQString(i18n)) %
|
||||
QLatin1String(" bank: ") % (this->m_bank.toQString(i18n)) %
|
||||
QLatin1String(" pitch: ") % (this->m_pitch.toQString(i18n)) %
|
||||
QLatin1String(" gs: ") % (this->m_groundSpeed.toQString(i18n)) %
|
||||
QLatin1String(" elevation: ") % (this->m_groundElevation.toQString(i18n)) %
|
||||
QLatin1String(" heading: ") % (this->m_heading.toQString(i18n)) %
|
||||
const QString s = (m_position.toQString(i18n)) %
|
||||
QLatin1String(" bank: ") % (m_bank.toQString(i18n)) %
|
||||
QLatin1String(" pitch: ") % (m_pitch.toQString(i18n)) %
|
||||
QLatin1String(" gs: ") % (m_groundSpeed.toQString(i18n)) %
|
||||
QLatin1String(" elevation: ") % (m_groundElevation.toQString(i18n)) %
|
||||
QLatin1String(" heading: ") % (m_heading.toQString(i18n)) %
|
||||
QLatin1String(" timestamp: ") % (this->hasValidTimestamp() ? this->getFormattedUtcTimestampDhms() : QStringLiteral("-"));
|
||||
return s;
|
||||
}
|
||||
@@ -97,36 +97,21 @@ namespace BlackMisc
|
||||
const ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexPosition:
|
||||
return this->m_position.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexLatitude:
|
||||
return this->latitude().propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexLongitude:
|
||||
return this->longitude().propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexAltitude:
|
||||
return this->getAltitude().propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexHeading:
|
||||
return this->m_heading.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexPitch:
|
||||
return this->m_pitch.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexBank:
|
||||
return this->m_bank.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexGroundSpeed:
|
||||
return this->m_groundSpeed.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexGroundElevation:
|
||||
return this->m_groundElevation.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexCallsign:
|
||||
return this->m_correspondingCallsign.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexIsOnGround:
|
||||
return CVariant::fromValue(m_isOnGround);
|
||||
case IndexIsOnGroundString:
|
||||
return CVariant::fromValue(this->isOnGroundAsString());
|
||||
case IndexOnGroundReliability:
|
||||
return CVariant::fromValue(m_onGroundReliability);
|
||||
case IndexOnGroundReliabilityString:
|
||||
return CVariant::fromValue(this->getOnGroundReliabilityAsString());
|
||||
default:
|
||||
return CValueObject::propertyByIndex(index);
|
||||
case IndexPosition: return m_position.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexLatitude: return this->latitude().propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexLongitude: return this->longitude().propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexAltitude: return this->getAltitude().propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexHeading: return m_heading.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexPitch: return m_pitch.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexBank: return m_bank.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexGroundSpeed: return m_groundSpeed.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexGroundElevation: return m_groundElevation.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexCallsign: return m_correspondingCallsign.propertyByIndex(index.copyFrontRemoved());
|
||||
case IndexIsOnGround: return CVariant::fromValue(m_isOnGround);
|
||||
case IndexIsOnGroundString: return CVariant::fromValue(this->isOnGroundAsString());
|
||||
case IndexOnGroundReliability: return CVariant::fromValue(m_onGroundReliability);
|
||||
case IndexOnGroundReliabilityString: return CVariant::fromValue(this->getOnGroundReliabilityAsString());
|
||||
default: return CValueObject::propertyByIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,33 +127,15 @@ namespace BlackMisc
|
||||
const ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexPosition:
|
||||
this->m_position.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexPitch:
|
||||
this->m_pitch.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexBank:
|
||||
this->m_bank.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexGroundSpeed:
|
||||
this->m_groundSpeed.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexGroundElevation:
|
||||
this->m_groundElevation.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexCallsign:
|
||||
this->m_correspondingCallsign.setPropertyByIndex(index.copyFrontRemoved(), variant);
|
||||
break;
|
||||
case IndexIsOnGround:
|
||||
this->m_isOnGround = variant.toInt();
|
||||
break;
|
||||
case IndexOnGroundReliability:
|
||||
this->m_onGroundReliability = variant.toInt();
|
||||
break;
|
||||
default:
|
||||
CValueObject::setPropertyByIndex(index, variant);
|
||||
break;
|
||||
case IndexPosition: m_position.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexPitch: m_pitch.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexBank: m_bank.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexGroundSpeed: m_groundSpeed.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexGroundElevation: m_groundElevation.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexCallsign: m_correspondingCallsign.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
|
||||
case IndexIsOnGround: m_isOnGround = variant.toInt(); break;
|
||||
case IndexOnGroundReliability: m_onGroundReliability = variant.toInt(); break;
|
||||
default: CValueObject::setPropertyByIndex(index, variant); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,28 +146,20 @@ namespace BlackMisc
|
||||
const ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexPosition:
|
||||
return this->m_position.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPosition());
|
||||
case IndexAltitude:
|
||||
return this->getAltitude().comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getAltitude());
|
||||
case IndexPitch:
|
||||
return this->m_pitch.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPitch());
|
||||
case IndexBank:
|
||||
return this->m_bank.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getBank());
|
||||
case IndexGroundSpeed:
|
||||
return this->m_groundSpeed.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getGroundSpeed());
|
||||
case IndexGroundElevation:
|
||||
return this->m_groundElevation.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getGroundElevation());
|
||||
case IndexCallsign:
|
||||
return this->m_correspondingCallsign.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getCallsign());
|
||||
case IndexPosition: return m_position.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPosition());
|
||||
case IndexAltitude: return this->getAltitude().comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getAltitude());
|
||||
case IndexPitch: return m_pitch.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPitch());
|
||||
case IndexBank: return m_bank.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getBank());
|
||||
case IndexGroundSpeed: return m_groundSpeed.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getGroundSpeed());
|
||||
case IndexGroundElevation: return m_groundElevation.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getGroundElevation());
|
||||
case IndexCallsign: return m_correspondingCallsign.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getCallsign());
|
||||
case IndexIsOnGround:
|
||||
case IndexIsOnGroundString:
|
||||
return Compare::compare(this->m_isOnGround, compareValue.m_isOnGround);
|
||||
return Compare::compare(m_isOnGround, compareValue.m_isOnGround);
|
||||
case IndexOnGroundReliability:
|
||||
case IndexOnGroundReliabilityString:
|
||||
return Compare::compare(this->m_onGroundReliability, compareValue.m_onGroundReliability);
|
||||
default:
|
||||
break;
|
||||
return Compare::compare(m_onGroundReliability, compareValue.m_onGroundReliability);
|
||||
default: break;
|
||||
}
|
||||
const QString assertMsg("No comparison for index " + index.toQString());
|
||||
BLACK_VERIFY_X(false, Q_FUNC_INFO, qUtf8Printable(assertMsg));
|
||||
@@ -262,8 +221,8 @@ namespace BlackMisc
|
||||
|
||||
void CAircraftSituation::setCallsign(const CCallsign &callsign)
|
||||
{
|
||||
this->m_correspondingCallsign = callsign;
|
||||
this->m_correspondingCallsign.setTypeHint(CCallsign::Aircraft);
|
||||
m_correspondingCallsign = callsign;
|
||||
m_correspondingCallsign.setTypeHint(CCallsign::Aircraft);
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -40,13 +40,13 @@ namespace BlackMisc
|
||||
//! Value object encapsulating information of an aircraft's situation
|
||||
class BLACKMISC_EXPORT CAircraftSituation :
|
||||
public CValueObject<CAircraftSituation>,
|
||||
public BlackMisc::Geo::ICoordinateGeodetic, public BlackMisc::ITimestampBased
|
||||
public Geo::ICoordinateGeodetic, public ITimestampBased
|
||||
{
|
||||
public:
|
||||
//! Properties by index
|
||||
enum ColumnIndex
|
||||
{
|
||||
IndexPosition = BlackMisc::CPropertyIndex::GlobalIndexCAircraftSituation,
|
||||
IndexPosition = CPropertyIndex::GlobalIndexCAircraftSituation,
|
||||
IndexLatitude,
|
||||
IndexLongitude,
|
||||
IndexAltitude,
|
||||
@@ -84,42 +84,42 @@ namespace BlackMisc
|
||||
CAircraftSituation();
|
||||
|
||||
//! Comprehensive constructor
|
||||
CAircraftSituation(const BlackMisc::Geo::CCoordinateGeodetic &position,
|
||||
const BlackMisc::Aviation::CHeading &heading = {},
|
||||
const BlackMisc::PhysicalQuantities::CAngle &pitch = {},
|
||||
const BlackMisc::PhysicalQuantities::CAngle &bank = {},
|
||||
const BlackMisc::PhysicalQuantities::CSpeed &gs = {},
|
||||
const BlackMisc::Aviation::CAltitude &groundElevation = { 0, nullptr });
|
||||
CAircraftSituation(const Geo::CCoordinateGeodetic &position,
|
||||
const CHeading &heading = {},
|
||||
const PhysicalQuantities::CAngle &pitch = {},
|
||||
const PhysicalQuantities::CAngle &bank = {},
|
||||
const PhysicalQuantities::CSpeed &gs = {},
|
||||
const CAltitude &groundElevation = { 0, nullptr });
|
||||
|
||||
//! Comprehensive constructor
|
||||
CAircraftSituation(const BlackMisc::Aviation::CCallsign &correspondingCallsign,
|
||||
const BlackMisc::Geo::CCoordinateGeodetic &position,
|
||||
const BlackMisc::Aviation::CHeading &heading = {},
|
||||
const BlackMisc::PhysicalQuantities::CAngle &pitch = {},
|
||||
const BlackMisc::PhysicalQuantities::CAngle &bank = {},
|
||||
const BlackMisc::PhysicalQuantities::CSpeed &gs = {},
|
||||
const BlackMisc::Aviation::CAltitude &groundElevation = { 0, nullptr });
|
||||
CAircraftSituation(const CCallsign &correspondingCallsign,
|
||||
const Geo::CCoordinateGeodetic &position,
|
||||
const CHeading &heading = {},
|
||||
const PhysicalQuantities::CAngle &pitch = {},
|
||||
const PhysicalQuantities::CAngle &bank = {},
|
||||
const PhysicalQuantities::CSpeed &gs = {},
|
||||
const CAltitude &groundElevation = { 0, nullptr });
|
||||
|
||||
//! \copydoc BlackMisc::Mixin::Index::propertyByIndex
|
||||
CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const;
|
||||
//! \copydoc Mixin::Index::propertyByIndex
|
||||
CVariant propertyByIndex(const CPropertyIndex &index) const;
|
||||
|
||||
//! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex
|
||||
void setPropertyByIndex(const BlackMisc::CPropertyIndex &index, const CVariant &variant);
|
||||
//! \copydoc Mixin::Index::setPropertyByIndex
|
||||
void setPropertyByIndex(const CPropertyIndex &index, const CVariant &variant);
|
||||
|
||||
//! Compare by index
|
||||
int comparePropertyByIndex(const CPropertyIndex &index, const CAircraftSituation &compareValue) const;
|
||||
|
||||
//! Get position
|
||||
const BlackMisc::Geo::CCoordinateGeodetic &getPosition() const { return this->m_position; }
|
||||
const Geo::CCoordinateGeodetic &getPosition() const { return m_position; }
|
||||
|
||||
//! Set position
|
||||
void setPosition(const BlackMisc::Geo::CCoordinateGeodetic &position) { this->m_position = position; }
|
||||
void setPosition(const Geo::CCoordinateGeodetic &position) { m_position = position; }
|
||||
|
||||
//! \copydoc Geo::ICoordinateGeodetic::latitude()
|
||||
virtual BlackMisc::Geo::CLatitude latitude() const override { return this->m_position.latitude(); }
|
||||
virtual Geo::CLatitude latitude() const override { return m_position.latitude(); }
|
||||
|
||||
//! \copydoc Geo::ICoordinateGeodetic::longitude()
|
||||
virtual BlackMisc::Geo::CLongitude longitude() const override { return this->m_position.longitude(); }
|
||||
virtual Geo::CLongitude longitude() const override { return m_position.longitude(); }
|
||||
|
||||
//! On ground?
|
||||
IsOnGround isOnGround() const { return static_cast<CAircraftSituation::IsOnGround>(m_isOnGround); }
|
||||
@@ -149,81 +149,81 @@ namespace BlackMisc
|
||||
QString getOnGroundInfo() const;
|
||||
|
||||
//! \copydoc Geo::ICoordinateGeodetic::geodeticHeight
|
||||
const BlackMisc::Aviation::CAltitude &geodeticHeight() const override { return this->m_position.geodeticHeight(); }
|
||||
const CAltitude &geodeticHeight() const override { return m_position.geodeticHeight(); }
|
||||
|
||||
//! \copydoc Geo::ICoordinateGeodetic::normalVector
|
||||
virtual QVector3D normalVector() const override { return this->m_position.normalVector(); }
|
||||
virtual QVector3D normalVector() const override { return m_position.normalVector(); }
|
||||
|
||||
//! \copydoc Geo::ICoordinateGeodetic::normalVectorDouble
|
||||
virtual std::array<double, 3> normalVectorDouble() const override { return this->m_position.normalVectorDouble(); }
|
||||
virtual std::array<double, 3> normalVectorDouble() const override { return m_position.normalVectorDouble(); }
|
||||
|
||||
//! Elevation of the ground directly beneath
|
||||
const BlackMisc::Aviation::CAltitude &getGroundElevation() const { return this->m_groundElevation; }
|
||||
const CAltitude &getGroundElevation() const { return m_groundElevation; }
|
||||
|
||||
//! Is ground elevation value available
|
||||
bool hasGroundElevation() const;
|
||||
|
||||
//! Elevation of the ground directly beneath
|
||||
void setGroundElevation(const BlackMisc::Aviation::CAltitude &elevation) { this->m_groundElevation = elevation; }
|
||||
void setGroundElevation(const CAltitude &elevation) { m_groundElevation = elevation; }
|
||||
|
||||
//! Height above ground.
|
||||
BlackMisc::PhysicalQuantities::CLength getHeightAboveGround() const;
|
||||
PhysicalQuantities::CLength getHeightAboveGround() const;
|
||||
|
||||
//! Get heading
|
||||
const BlackMisc::Aviation::CHeading &getHeading() const { return this->m_heading; }
|
||||
const CHeading &getHeading() const { return m_heading; }
|
||||
|
||||
//! Set heading
|
||||
void setHeading(const BlackMisc::Aviation::CHeading &heading) { this->m_heading = heading; }
|
||||
void setHeading(const CHeading &heading) { m_heading = heading; }
|
||||
|
||||
//! Get altitude
|
||||
const BlackMisc::Aviation::CAltitude &getAltitude() const { return this->m_position.geodeticHeight(); }
|
||||
const CAltitude &getAltitude() const { return m_position.geodeticHeight(); }
|
||||
|
||||
//! Get altitude under consideration of ground elevation
|
||||
BlackMisc::Aviation::CAltitude getCorrectedAltitude() const;
|
||||
CAltitude getCorrectedAltitude() const;
|
||||
|
||||
//! Set altitude
|
||||
void setAltitude(const BlackMisc::Aviation::CAltitude &altitude) { this->m_position.setGeodeticHeight(altitude); }
|
||||
void setAltitude(const CAltitude &altitude) { m_position.setGeodeticHeight(altitude); }
|
||||
|
||||
//! Get pitch
|
||||
const BlackMisc::PhysicalQuantities::CAngle &getPitch() const { return this->m_pitch; }
|
||||
const PhysicalQuantities::CAngle &getPitch() const { return m_pitch; }
|
||||
|
||||
//! Set pitch
|
||||
void setPitch(const BlackMisc::PhysicalQuantities::CAngle &pitch) { this->m_pitch = pitch; }
|
||||
void setPitch(const PhysicalQuantities::CAngle &pitch) { m_pitch = pitch; }
|
||||
|
||||
//! Get bank (angle)
|
||||
const BlackMisc::PhysicalQuantities::CAngle &getBank() const { return this->m_bank; }
|
||||
const PhysicalQuantities::CAngle &getBank() const { return m_bank; }
|
||||
|
||||
//! Set bank (angle)
|
||||
void setBank(const BlackMisc::PhysicalQuantities::CAngle &bank) { this->m_bank = bank; }
|
||||
void setBank(const PhysicalQuantities::CAngle &bank) { m_bank = bank; }
|
||||
|
||||
//! Get ground speed
|
||||
const BlackMisc::PhysicalQuantities::CSpeed &getGroundSpeed() const { return this->m_groundSpeed; }
|
||||
const PhysicalQuantities::CSpeed &getGroundSpeed() const { return m_groundSpeed; }
|
||||
|
||||
//! Set ground speed
|
||||
void setGroundSpeed(const BlackMisc::PhysicalQuantities::CSpeed &groundspeed) { this->m_groundSpeed = groundspeed; }
|
||||
void setGroundSpeed(const PhysicalQuantities::CSpeed &groundspeed) { m_groundSpeed = groundspeed; }
|
||||
|
||||
//! Corresponding callsign
|
||||
const BlackMisc::Aviation::CCallsign &getCallsign() const { return this->m_correspondingCallsign; }
|
||||
const CCallsign &getCallsign() const { return m_correspondingCallsign; }
|
||||
|
||||
//! Corresponding callsign
|
||||
void setCallsign(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
void setCallsign(const CCallsign &callsign);
|
||||
|
||||
//! Milliseconds to add to timestamp for interpolation
|
||||
void setTimeOffsetMs(qint64 offset) { this->m_timeOffsetMs = offset; }
|
||||
void setTimeOffsetMs(qint64 offset) { m_timeOffsetMs = offset; }
|
||||
|
||||
//! Milliseconds to add to timestamp for interpolation
|
||||
qint64 getTimeOffsetMs() const { return this->m_timeOffsetMs; }
|
||||
qint64 getTimeOffsetMs() const { return m_timeOffsetMs; }
|
||||
|
||||
//! Timestamp with offset added for interpolation
|
||||
qint64 getAdjustedMSecsSinceEpoch() const { return this->getMSecsSinceEpoch() + this->getTimeOffsetMs(); }
|
||||
|
||||
//! Set flag indicating this is an interim position update
|
||||
void setInterimFlag(bool flag) { this->m_isInterim = flag; }
|
||||
void setInterimFlag(bool flag) { m_isInterim = flag; }
|
||||
|
||||
//! Get flag indicating this is an interim position update
|
||||
bool isInterim() const { return this->m_isInterim; }
|
||||
bool isInterim() const { return m_isInterim; }
|
||||
|
||||
//! \copydoc BlackMisc::Mixin::String::toQString
|
||||
//! \copydoc Mixin::String::toQString
|
||||
QString convertToQString(bool i18n = false) const;
|
||||
|
||||
//! Enum to string
|
||||
@@ -234,12 +234,12 @@ namespace BlackMisc
|
||||
|
||||
private:
|
||||
CCallsign m_correspondingCallsign;
|
||||
BlackMisc::Geo::CCoordinateGeodetic m_position;
|
||||
BlackMisc::Aviation::CHeading m_heading;
|
||||
BlackMisc::PhysicalQuantities::CAngle m_pitch;
|
||||
BlackMisc::PhysicalQuantities::CAngle m_bank;
|
||||
BlackMisc::PhysicalQuantities::CSpeed m_groundSpeed;
|
||||
BlackMisc::Aviation::CAltitude m_groundElevation{0, BlackMisc::Aviation::CAltitude::MeanSeaLevel, BlackMisc::PhysicalQuantities::CLengthUnit::nullUnit()};
|
||||
Geo::CCoordinateGeodetic m_position;
|
||||
CHeading m_heading;
|
||||
PhysicalQuantities::CAngle m_pitch;
|
||||
PhysicalQuantities::CAngle m_bank;
|
||||
PhysicalQuantities::CSpeed m_groundSpeed;
|
||||
CAltitude m_groundElevation{0, CAltitude::MeanSeaLevel, PhysicalQuantities::CLengthUnit::nullUnit()};
|
||||
int m_isOnGround = static_cast<int>(CAircraftSituation::OnGroundSituationUnknown);
|
||||
int m_onGroundReliability = static_cast<int>(CAircraftSituation::OnGroundReliabilityNoSet);
|
||||
qint64 m_timeOffsetMs = 0;
|
||||
|
||||
Reference in New Issue
Block a user