From 74988db4726557b335dc6bb46d7961194d1f3f0a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 4 Jul 2014 22:37:23 +0200 Subject: [PATCH] refs #291, airports in range: * added descriptive name for airport * airport list model --- src/blackgui/airportlistmodel.cpp | 36 +++++++++++++++++++++++++++++++ src/blackgui/airportlistmodel.h | 25 +++++++++++++++++++++ src/blackmisc/avairport.cpp | 5 +++++ src/blackmisc/avairport.h | 14 +++++++++--- 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 src/blackgui/airportlistmodel.cpp create mode 100644 src/blackgui/airportlistmodel.h diff --git a/src/blackgui/airportlistmodel.cpp b/src/blackgui/airportlistmodel.cpp new file mode 100644 index 000000000..f5daa67c3 --- /dev/null +++ b/src/blackgui/airportlistmodel.cpp @@ -0,0 +1,36 @@ +#include "airportlistmodel.h" +#include "blackmisc/blackmiscfreefunctions.h" +#include +#include + +using namespace BlackMisc::Aviation; +using namespace BlackMisc::Geo; + +namespace BlackGui +{ + /* + * Constructor + */ + CAirportListModel::CAirportListModel(QObject *parent) : + CListModelBase("ViewAirportList", parent) + { + this->m_columns.addColumn(CColumn("ICAO", CAirport::IndexIcao)); + this->m_columns.addColumn(CColumn("distance", CAirport::IndexDistance, Qt::AlignRight | Qt::AlignVCenter)); + this->m_columns.addColumn(CColumn("bearing", CAirport::IndexBearing, Qt::AlignRight | Qt::AlignVCenter)); + this->m_columns.addColumn(CColumn("name", CAirport::IndexDescriptiveName)); + this->m_columns.addColumn(CColumn("elevation", CAirport::IndexElevation, Qt::AlignRight | Qt::AlignVCenter)); + this->m_columns.addColumn(CColumn("latitude", CCoordinateGeodetic::IndexLatitude, Qt::AlignRight | Qt::AlignVCenter)); + this->m_columns.addColumn(CColumn("longitude", CCoordinateGeodetic::IndexLongitude, Qt::AlignRight | Qt::AlignVCenter)); + + // default sort order + this->setSortColumnByPropertyIndex(CAirport::IndexDistance); + this->m_sortOrder = Qt::AscendingOrder; + + // force strings for translation in resource files + (void)QT_TRANSLATE_NOOP("ViewAirportList", "ICAO"); + (void)QT_TRANSLATE_NOOP("ViewAirportList", "distance"); + (void)QT_TRANSLATE_NOOP("ViewAirportList", "name"); + (void)QT_TRANSLATE_NOOP("ViewAirportList", "elevation"); + (void)QT_TRANSLATE_NOOP("ViewAirportList", "bearing"); + } +} diff --git a/src/blackgui/airportlistmodel.h b/src/blackgui/airportlistmodel.h new file mode 100644 index 000000000..b8aa0f2bb --- /dev/null +++ b/src/blackgui/airportlistmodel.h @@ -0,0 +1,25 @@ +#ifndef BLACKGUI_AIRPORTLISTMODEL_H +#define BLACKGUI_AIRPORTLISTMODEL_H + +#include +#include "blackmisc/avairportlist.h" +#include "blackgui/listmodelbase.h" + +namespace BlackGui +{ + /*! + * Airport list model + */ + class CAirportListModel : public CListModelBase + { + + public: + + //! \brief Constructor + explicit CAirportListModel(QObject *parent = nullptr); + + //! \brief Destructor + virtual ~CAirportListModel() {} + }; +} +#endif // guard diff --git a/src/blackmisc/avairport.cpp b/src/blackmisc/avairport.cpp index d6909690b..9ea2ba561 100644 --- a/src/blackmisc/avairport.cpp +++ b/src/blackmisc/avairport.cpp @@ -152,6 +152,8 @@ namespace BlackMisc return this->m_icao.toQVariant(); case IndexIcaoAsString: return QVariant(this->m_icao.asString()); + case IndexDescriptiveName: + return QVariant(this->m_descriptiveName); case IndexPosition: return this->getPosition().toQVariant(); case IndexDistanceToPlane: @@ -178,6 +180,9 @@ namespace BlackMisc case IndexIcaoAsString: this->setIcao(CAirportIcao(variant.toString())); break; + case IndexDescriptiveName: + this->setDescriptiveName(variant.toString()); + break; case IndexPosition: this->setPosition(variant.value()); break; diff --git a/src/blackmisc/avairport.h b/src/blackmisc/avairport.h index 935a1ba81..fc61c8e06 100644 --- a/src/blackmisc/avairport.h +++ b/src/blackmisc/avairport.h @@ -27,6 +27,7 @@ namespace BlackMisc { IndexIcao = 0, IndexIcaoAsString, + IndexDescriptiveName, IndexPosition, IndexDistanceToPlane }; @@ -52,11 +53,17 @@ namespace BlackMisc //! Get ICAO code. const CAirportIcao &getIcao() const { return m_icao; } + //! Get ICAO code as string. + QString getIcaoAsString() const { return m_icao.asString(); } + //! Set ICAO code. void setIcao(const CAirportIcao &icao) { m_icao = icao; } - //! Get ICAO code as string. - QString getIcaoAsString() const { return m_icao.asString(); } + //! Get descriptive name + QString getDescriptiveName() const { return m_descriptiveName; } + + //! Set descriptive name + void setDescriptiveName(const QString &name) { this->m_descriptiveName = name; } //! Get the position const BlackMisc::Geo::CCoordinateGeodetic &getPosition() const { return m_position; } @@ -138,8 +145,9 @@ namespace BlackMisc private: BLACK_ENABLE_TUPLE_CONVERSION(CAirport) CAirportIcao m_icao; + QString m_descriptiveName; BlackMisc::Geo::CCoordinateGeodetic m_position; - BlackMisc::PhysicalQuantities::CLength m_distanceToPlane; + BlackMisc::PhysicalQuantities::CLength m_distanceToPlane; // make mutable ? }; } // namespace