refs #291, airports in range:

* added descriptive name for airport
* airport list model
This commit is contained in:
Klaus Basan
2014-07-04 22:37:23 +02:00
parent 5a4443487e
commit 74988db472
4 changed files with 77 additions and 3 deletions

View File

@@ -0,0 +1,36 @@
#include "airportlistmodel.h"
#include "blackmisc/blackmiscfreefunctions.h"
#include <QMetaProperty>
#include <QBrush>
using namespace BlackMisc::Aviation;
using namespace BlackMisc::Geo;
namespace BlackGui
{
/*
* Constructor
*/
CAirportListModel::CAirportListModel(QObject *parent) :
CListModelBase<BlackMisc::Aviation::CAirport, BlackMisc::Aviation::CAirportList>("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");
}
}

View File

@@ -0,0 +1,25 @@
#ifndef BLACKGUI_AIRPORTLISTMODEL_H
#define BLACKGUI_AIRPORTLISTMODEL_H
#include <QAbstractItemModel>
#include "blackmisc/avairportlist.h"
#include "blackgui/listmodelbase.h"
namespace BlackGui
{
/*!
* Airport list model
*/
class CAirportListModel : public CListModelBase<BlackMisc::Aviation::CAirport, BlackMisc::Aviation::CAirportList>
{
public:
//! \brief Constructor
explicit CAirportListModel(QObject *parent = nullptr);
//! \brief Destructor
virtual ~CAirportListModel() {}
};
}
#endif // guard

View File

@@ -152,6 +152,8 @@ namespace BlackMisc
return this->m_icao.toQVariant(); return this->m_icao.toQVariant();
case IndexIcaoAsString: case IndexIcaoAsString:
return QVariant(this->m_icao.asString()); return QVariant(this->m_icao.asString());
case IndexDescriptiveName:
return QVariant(this->m_descriptiveName);
case IndexPosition: case IndexPosition:
return this->getPosition().toQVariant(); return this->getPosition().toQVariant();
case IndexDistanceToPlane: case IndexDistanceToPlane:
@@ -178,6 +180,9 @@ namespace BlackMisc
case IndexIcaoAsString: case IndexIcaoAsString:
this->setIcao(CAirportIcao(variant.toString())); this->setIcao(CAirportIcao(variant.toString()));
break; break;
case IndexDescriptiveName:
this->setDescriptiveName(variant.toString());
break;
case IndexPosition: case IndexPosition:
this->setPosition(variant.value<CCoordinateGeodetic>()); this->setPosition(variant.value<CCoordinateGeodetic>());
break; break;

View File

@@ -27,6 +27,7 @@ namespace BlackMisc
{ {
IndexIcao = 0, IndexIcao = 0,
IndexIcaoAsString, IndexIcaoAsString,
IndexDescriptiveName,
IndexPosition, IndexPosition,
IndexDistanceToPlane IndexDistanceToPlane
}; };
@@ -52,11 +53,17 @@ namespace BlackMisc
//! Get ICAO code. //! Get ICAO code.
const CAirportIcao &getIcao() const { return m_icao; } const CAirportIcao &getIcao() const { return m_icao; }
//! Get ICAO code as string.
QString getIcaoAsString() const { return m_icao.asString(); }
//! Set ICAO code. //! Set ICAO code.
void setIcao(const CAirportIcao &icao) { m_icao = icao; } void setIcao(const CAirportIcao &icao) { m_icao = icao; }
//! Get ICAO code as string. //! Get descriptive name
QString getIcaoAsString() const { return m_icao.asString(); } QString getDescriptiveName() const { return m_descriptiveName; }
//! Set descriptive name
void setDescriptiveName(const QString &name) { this->m_descriptiveName = name; }
//! Get the position //! Get the position
const BlackMisc::Geo::CCoordinateGeodetic &getPosition() const { return m_position; } const BlackMisc::Geo::CCoordinateGeodetic &getPosition() const { return m_position; }
@@ -138,8 +145,9 @@ namespace BlackMisc
private: private:
BLACK_ENABLE_TUPLE_CONVERSION(CAirport) BLACK_ENABLE_TUPLE_CONVERSION(CAirport)
CAirportIcao m_icao; CAirportIcao m_icao;
QString m_descriptiveName;
BlackMisc::Geo::CCoordinateGeodetic m_position; BlackMisc::Geo::CCoordinateGeodetic m_position;
BlackMisc::PhysicalQuantities::CLength m_distanceToPlane; BlackMisc::PhysicalQuantities::CLength m_distanceToPlane; // make mutable ?
}; };
} // namespace } // namespace