refs #296 minor improvements in initializing and sorting CAirport and CAirportList

This commit is contained in:
Mathew Sutcliffe
2014-07-14 23:32:04 +01:00
parent 527fa8a492
commit b1ac4defdf
4 changed files with 26 additions and 0 deletions

View File

@@ -30,6 +30,13 @@ namespace BlackMisc
m_icao(icao), m_position(position), m_distanceToPlane(0, CLengthUnit::nullUnit())
{ }
/*
* Constructor
*/
CAirport::CAirport(const CAirportIcao &icao, const BlackMisc::Geo::CCoordinateGeodetic &position, const QString &descriptiveName) :
m_icao(icao), m_descriptiveName(descriptiveName), m_position(position), m_distanceToPlane(0, CLengthUnit::nullUnit())
{ }
/*
* Convert to string
*/

View File

@@ -43,6 +43,9 @@ namespace BlackMisc
//! ATC station constructor
CAirport(const CAirportIcao &icao, const BlackMisc::Geo::CCoordinateGeodetic &position);
//! ATC station constructor
CAirport(const CAirportIcao &icao, const BlackMisc::Geo::CCoordinateGeodetic &position, const QString &descriptiveName);
//! \copydoc CValueObject::toQVariant()
virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }

View File

@@ -91,5 +91,18 @@ namespace BlackMisc
return airport.calculcateDistanceAndBearingToPlane(position, updateValues) > maxDistance;
});
}
/*
* Sort by range
*/
void CAirportList::sortByRange(const BlackMisc::Geo::CCoordinateGeodetic &position, bool updateValues)
{
if (updateValues)
{
this->calculcateDistanceAndBearingToPlane(position);
}
this->sort([ & ](const CAirport &a, const CAirport &b) { return a.getDistanceToPlane() < b.getDistanceToPlane(); });
}
} // namespace
} // namespace

View File

@@ -52,6 +52,9 @@ namespace BlackMisc
//! Remove if outside given radius
void removeIfOutsideRange(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::PhysicalQuantities::CLength &maxDistance, bool updateDistance);
//! Sort by range from a given coordinate
void sortByRange(const BlackMisc::Geo::CCoordinateGeodetic &position, bool updateDistance);
//! Register metadata
static void registerMetadata();
};