diff --git a/src/blackmisc/avairport.cpp b/src/blackmisc/avairport.cpp index cece9e41b..bdd41d964 100644 --- a/src/blackmisc/avairport.cpp +++ b/src/blackmisc/avairport.cpp @@ -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 */ diff --git a/src/blackmisc/avairport.h b/src/blackmisc/avairport.h index a87ee85aa..50076d509 100644 --- a/src/blackmisc/avairport.h +++ b/src/blackmisc/avairport.h @@ -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); } diff --git a/src/blackmisc/avairportlist.cpp b/src/blackmisc/avairportlist.cpp index c1954e817..a204e210f 100644 --- a/src/blackmisc/avairportlist.cpp +++ b/src/blackmisc/avairportlist.cpp @@ -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 diff --git a/src/blackmisc/avairportlist.h b/src/blackmisc/avairportlist.h index 92efbce88..7df04c41f 100644 --- a/src/blackmisc/avairportlist.h +++ b/src/blackmisc/avairportlist.h @@ -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(); };