mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-02 15:15:39 +08:00
refs #291, airports in range:
* added descriptive name for airport * airport list model
This commit is contained in:
36
src/blackgui/airportlistmodel.cpp
Normal file
36
src/blackgui/airportlistmodel.cpp
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
25
src/blackgui/airportlistmodel.h
Normal file
25
src/blackgui/airportlistmodel.h
Normal 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
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user