refs #590, military flag in airline ICAO

(plus fixes in prefix of aircraft ICAO)
This commit is contained in:
Klaus Basan
2016-02-04 17:54:56 +01:00
parent 2662f03e81
commit de27c2af8a
6 changed files with 41 additions and 9 deletions

View File

@@ -29,7 +29,8 @@ namespace BlackGui
col.setSortPropertyIndex(CAirlineIcaoCode::IndexAirlineDesignator);
this->m_columns.addColumn(col);
this->m_columns.addColumn(CColumn("VA", "Virtual airline", CAirlineIcaoCode::IndexIsVirtualAirline, new CBoolIconFormatter("VA", "real airline")));
this->m_columns.addColumn(CColumn("VA", "virtual airline", CAirlineIcaoCode::IndexIsVirtualAirline, new CBoolIconFormatter("VA", "real airline")));
this->m_columns.addColumn(CColumn("mil.", "military (air force)", CAirlineIcaoCode::IndexIsMilitary, new CBoolIconFormatter("military", "civilian")));
this->m_columns.addColumn(CColumn("op.", "operating", CAirlineIcaoCode::IndexIsOperating, new CBoolIconFormatter("operating", "ceased")));
this->m_columns.addColumn(CColumn::standardValueObject("name", CAirlineIcaoCode::IndexAirlineName));

View File

@@ -451,7 +451,7 @@ namespace BlackMisc
const QStringList &CAircraftIcaoCode::getSpecialDesignators()
{
static const QStringList s({ "ZZZZ", "SHIP", "BALL", "GLID", "ULAC", "GYRO", "UHEL", "GLID", "ULAC", "GYRO", "UHEL"});
static const QStringList s({ "ZZZZ", "SHIP", "BALL", "GLID", "ULAC", "GYRO", "UHEL" });
return s;
}
@@ -483,18 +483,18 @@ namespace BlackMisc
QString engine(json.value(prefix + "engine").toString());
int engineCount(json.value(prefix + "enginecount").toInt(-1));
QString combined(createdCombinedString(type, engineCount, engine));
QString wtc(json.value("wtc").toString());
QString wtc(json.value(prefix + "wtc").toString());
if (wtc.length() > 1 && wtc.contains("/"))
{
// "L/M" -> "M"
wtc = wtc.right(1);
}
Q_ASSERT_X(wtc.length() < 2, Q_FUNC_INFO, "WTC too long");
bool real = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "realworld").toString());
bool legacy = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "legacy").toString());
bool military = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "military").toString());
int rank(json.value("rank").toInt(10));
Q_ASSERT_X(wtc.length() < 2, Q_FUNC_INFO, "WTC too long");
int rank(json.value(prefix + "rank").toInt(10));
CAircraftIcaoCode code(
designator, iata, combined,

View File

@@ -12,6 +12,7 @@
#include "blackmisc/blackmiscfreefunctions.h"
#include "blackmisc/variant.h"
#include "blackmisc/comparefunctions.h"
#include "blackmisc/datastoreutility.h"
#include <tuple>
#include <QThreadStorage>
@@ -153,6 +154,8 @@ namespace BlackMisc
return CVariant::fromValue(this->m_isVa);
case IndexIsOperating:
return CVariant::fromValue(this->m_isOperating);
case IndexIsMilitary:
return CVariant::fromValue(this->m_isMilitary);
case IndexDesignatorNameCountry:
return CVariant::fromValue(this->getDesignatorNameCountry());
default:
@@ -188,6 +191,9 @@ namespace BlackMisc
case IndexIsOperating:
this->setOperating(variant.toBool());
break;
case IndexIsMilitary:
this->setMilitary(variant.toBool());
break;
default:
CValueObject::setPropertyByIndex(variant, index);
break;
@@ -217,6 +223,8 @@ namespace BlackMisc
return Compare::compare(this->isVirtualAirline(), compareValue.isVirtualAirline());
case IndexIsOperating:
return Compare::compare(this->isOperating(), compareValue.isOperating());
case IndexIsMilitary:
return Compare::compare(this->isMilitary(), compareValue.isMilitary());
default:
break;
}
@@ -301,14 +309,17 @@ namespace BlackMisc
QString name(json.value(prefix + "name").toString());
QString countryIso(json.value(prefix + "country").toString());
QString countryName(json.value(prefix + "countryname").toString());
bool va = json.value(prefix + "va").toString().startsWith("Y", Qt::CaseInsensitive); // VA
bool operating = json.value(prefix + "operating").toString().startsWith("Y", Qt::CaseInsensitive); // operating
bool va = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "va").toString());
bool operating = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "operating").toString());
bool military = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "military").toString());
CAirlineIcaoCode code(
designator, name,
CCountry(countryIso, countryName),
telephony, va, operating
);
code.setIataCode(iata);
code.setMilitary(military);
code.setKeyAndTimestampFromDatabaseJson(json, prefix);
return code;
}

View File

@@ -41,6 +41,7 @@ namespace BlackMisc
IndexTelephonyDesignator,
IndexIsVirtualAirline,
IndexIsOperating,
IndexIsMilitary,
IndexDesignatorNameCountry,
};
@@ -107,6 +108,12 @@ namespace BlackMisc
//! Operating airline?
void setOperating(bool operating) { m_isOperating = operating; }
//! Military, air force or such?
bool isMilitary() const { return m_isMilitary; }
//! Military, air force or such?
void setMilitary(bool military) { m_isMilitary = military; }
//! Country?
bool hasValidCountry() const;
@@ -179,6 +186,7 @@ namespace BlackMisc
QString m_telephonyDesignator; //!< "Speedbird"
bool m_isVa = false; //!< virtual airline
bool m_isOperating = true; //!< still operating?
bool m_isMilitary = false; //!< air force or such
};
} // namespace
} // namespace
@@ -192,7 +200,8 @@ BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Aviation::CAirlineIcaoCode, (
o.m_country,
o.m_telephonyDesignator,
o.m_isVa,
o.m_isOperating
o.m_isOperating,
o.m_isMilitary
))
#endif // guard

View File

@@ -72,6 +72,14 @@ namespace BlackMisc
});
}
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByMilitary(bool military) const
{
return this->findBy([&](const CAirlineIcaoCode & code)
{
return code.isMilitary() == military;
});
}
CAirlineIcaoCode CAirlineIcaoCodeList::smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern) const
{
if (icaoPattern.hasValidDbKey())

View File

@@ -59,6 +59,9 @@ namespace BlackMisc
//! Find by country code
CAirlineIcaoCodeList findByCountryIsoCode(const QString &isoCode) const;
//! Find by military flag
CAirlineIcaoCodeList findByMilitary(bool military) const;
//! Best selection by given pattern
CAirlineIcaoCode smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern) const;