Ref T70, filters and model

* added model descriptions in view model
* filtering for family and all 3 descriptions
* completers for filter fields
This commit is contained in:
Klaus Basan
2017-06-15 00:37:08 +02:00
parent 63598a6a4e
commit 334adbf02d
6 changed files with 84 additions and 18 deletions

View File

@@ -18,21 +18,24 @@ namespace BlackGui
{
CAircraftIcaoFilter::CAircraftIcaoFilter(
int id,
const QString &designator, const QString &name,
const QString &designator, const QString &family, const QString &manufacturer,
const QString &description, const QString &combinedType) :
m_id(id),
m_designator(designator.trimmed().toUpper()), m_manufacturer(name.trimmed()),
m_description(description.trimmed()), m_combinedType(combinedType.trimmed().toUpper())
m_designator(designator.trimmed().toUpper()),
m_family(family.trimmed().toUpper()),
m_manufacturer(manufacturer.trimmed()),
m_description(description.trimmed()),
m_combinedType(combinedType.trimmed().toUpper())
{
this->m_valid = !(this->m_id < 0 && this->m_combinedType.isEmpty() && this->m_designator.isEmpty() &&
this->m_description.isEmpty() && this->m_manufacturer.isEmpty());
this->m_family.isEmpty() && this->m_description.isEmpty() && this->m_manufacturer.isEmpty());
}
CAircraftIcaoCodeList CAircraftIcaoFilter::filter(const CAircraftIcaoCodeList &inContainer) const
{
if (!this->isValid()) { return inContainer; }
CAircraftIcaoCodeList outContainer;
bool filterCombinedCode = !this->m_combinedType.isEmpty() && !this->m_combinedType.contains('-') && CAircraftIcaoCode::isValidCombinedType(this->m_combinedType);
const bool filterCombinedCode = !this->m_combinedType.isEmpty() && !this->m_combinedType.contains('-') && CAircraftIcaoCode::isValidCombinedType(this->m_combinedType);
for (const CAircraftIcaoCode &icao : inContainer)
{
@@ -50,13 +53,21 @@ namespace BlackGui
{
if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_designator)) { continue; }
}
if (!m_family.isEmpty())
{
if (!this->stringMatchesFilterExpression(icao.getFamily(), m_family)) { continue; }
}
if (!m_manufacturer.isEmpty())
{
if (!this->stringMatchesFilterExpression(icao.getManufacturer(), m_manufacturer)) { continue; }
}
if (!m_description.isEmpty())
{
if (!this->stringMatchesFilterExpression(icao.getModelDescription(), m_description)) { continue; }
const bool ignore =
!this->stringMatchesFilterExpression(icao.getModelDescription(), m_description) &&
!this->stringMatchesFilterExpression(icao.getModelSwiftDescription(), m_description) &&
!this->stringMatchesFilterExpression(icao.getModelIataDescription(), m_description);
if (ignore) { continue; }
}
if (filterCombinedCode)
{

View File

@@ -22,7 +22,6 @@ namespace BlackGui
{
namespace Models
{
//! Filter for aircraft ICAO data
class BLACKGUI_EXPORT CAircraftIcaoFilter :
public IModelFilter<BlackMisc::Aviation::CAircraftIcaoCodeList>
@@ -31,6 +30,7 @@ namespace BlackGui
//! Constructor
CAircraftIcaoFilter(int id,
const QString &designator,
const QString &family,
const QString &manufacturer,
const QString &description,
const QString &combinedType);
@@ -41,11 +41,11 @@ namespace BlackGui
private:
int m_id = -1;
QString m_designator;
QString m_family;
QString m_manufacturer;
QString m_description;
QString m_combinedType;
};
} // namespace
} // namespace

View File

@@ -32,12 +32,13 @@ namespace BlackGui
this->m_columns.addColumn(CColumn::standardValueObject("rank", CAircraftIcaoCode::IndexRank, CDefaultFormatter::alignRightVCenter()));
this->m_columns.addColumn(CColumn::standardString("manufacturer", CAircraftIcaoCode::IndexManufacturer));
this->m_columns.addColumn(CColumn::standardString("family", CAircraftIcaoCode::IndexFamily));
this->m_columns.addColumn(CColumn::standardString("desc.", "description", CAircraftIcaoCode::IndexModelDescription));
this->m_columns.addColumn(CColumn::standardString("code", "combined code", CAircraftIcaoCode::IndexCombinedAircraftType));
this->m_columns.addColumn(CColumn::standardString("ICAO desc.", "ICAO description", CAircraftIcaoCode::IndexModelDescription));
this->m_columns.addColumn(CColumn::standardString("IATA desc.", "IATA description", CAircraftIcaoCode::IndexModelIataDescription));
this->m_columns.addColumn(CColumn::standardString("swift desc.", "swift description", CAircraftIcaoCode::IndexModelSwiftDescription));
this->m_columns.addColumn(CColumn::standardString("type", "combined type", CAircraftIcaoCode::IndexCombinedAircraftType));
this->m_columns.addColumn(CColumn::standardString("WTC", "wake turbulence category", CAircraftIcaoCode::IndexWtc));
this->m_columns.addColumn(CColumn("mil.", "military", CAircraftIcaoCode::IndexIsMilitary, new CBoolIconFormatter("military", "civil")));
this->m_columns.addColumn(CColumn("VTOL", "vertical take-off and landing", CAircraftIcaoCode::IndexIsVtol, new CBoolIconFormatter("VTOL", "non VTOL")));
this->m_columns.addColumn(CColumn("leg.", "legacy", CAircraftIcaoCode::IndexIsLegacy, new CBoolIconFormatter("legacy", "operating")));
this->m_columns.addColumn(CColumn("VTOL", "vertical take-off and landing", CAircraftIcaoCode::IndexIsVtol, new CBoolIconFormatter("VTOL", "non VTOL"))); this->m_columns.addColumn(CColumn("leg.", "legacy", CAircraftIcaoCode::IndexIsLegacy, new CBoolIconFormatter("legacy", "operating")));
this->m_columns.addColumn(CColumn("real.", "real world aircraft", CAircraftIcaoCode::IndexIsRealworld, new CBoolIconFormatter("real", "non real")));
this->m_columns.addColumn(CColumn::standardString("changed", CAircraftIcaoCode::IndexUtcTimestampFormattedYmdhms));