mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-29 20:55:42 +08:00
Resolve airline group during reduction
This commit is contained in:
@@ -125,6 +125,7 @@ namespace BlackCore
|
|||||||
"- Aircraft: %3 -> %4\n"
|
"- Aircraft: %3 -> %4\n"
|
||||||
"- Airline: %5 -> %6\n"
|
"- Airline: %5 -> %6\n"
|
||||||
"- Livery: %7 -> %8\n"
|
"- Livery: %7 -> %8\n"
|
||||||
|
"- Model: %9 -> %10\n"
|
||||||
"-----------------------------------------\n");
|
"-----------------------------------------\n");
|
||||||
|
|
||||||
const QDateTime startTime = QDateTime::currentDateTimeUtc();
|
const QDateTime startTime = QDateTime::currentDateTimeUtc();
|
||||||
@@ -247,13 +248,16 @@ namespace BlackCore
|
|||||||
|
|
||||||
if (log)
|
if (log)
|
||||||
{
|
{
|
||||||
|
static const QString nms = "no model string";
|
||||||
CMatchingUtils::addLogDetailsToList(log, remoteAircraft, QStringLiteral("Picking among %1 by strategy '%2'").arg(candidates.size()).arg(CAircraftMatcherSetup::strategyToString(usedStrategy)));
|
CMatchingUtils::addLogDetailsToList(log, remoteAircraft, QStringLiteral("Picking among %1 by strategy '%2'").arg(candidates.size()).arg(CAircraftMatcherSetup::strategyToString(usedStrategy)));
|
||||||
CMatchingUtils::addLogDetailsToList(log, remoteAircraft,
|
CMatchingUtils::addLogDetailsToList(log, remoteAircraft,
|
||||||
summary.arg(
|
summary.arg(
|
||||||
remoteAircraft.getAircraftIcaoCode().getCombinedType(), matchedModel.getAircraftIcaoCode().getCombinedType(),
|
remoteAircraft.getAircraftIcaoCode().getCombinedType(), matchedModel.getAircraftIcaoCode().getCombinedType(),
|
||||||
remoteAircraft.getAircraftIcaoCode().getDesignatorDbKey(), matchedModel.getAircraftIcaoCode().getDesignatorDbKey(),
|
remoteAircraft.getAircraftIcaoCode().getDesignatorDbKey(), matchedModel.getAircraftIcaoCode().getDesignatorDbKey(),
|
||||||
remoteAircraft.getAirlineIcaoCode().getVDesignatorDbKey(), matchedModel.getAirlineIcaoCode().getVDesignatorDbKey(),
|
remoteAircraft.getAirlineIcaoCode().getVDesignatorDbKey(), matchedModel.getAirlineIcaoCode().getVDesignatorDbKey()
|
||||||
remoteAircraft.getLivery().getCombinedCodePlusInfoAndId(), matchedModel.getLivery().getCombinedCodePlusInfoAndId()
|
).arg(
|
||||||
|
remoteAircraft.getLivery().getCombinedCodePlusInfoAndId(), matchedModel.getLivery().getCombinedCodePlusInfoAndId(),
|
||||||
|
defaultIfEmpty(remoteAircraft.getModel().getModelStringAndDbKey(), nms), matchedModel.getModelStringAndDbKey()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -590,13 +594,13 @@ namespace BlackCore
|
|||||||
|
|
||||||
if (foundIcaos.size() < 1)
|
if (foundIcaos.size() < 1)
|
||||||
{
|
{
|
||||||
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1'', nothing found").arg(designator), CAircraftMatcher::getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1', nothing found").arg(designator), CAircraftMatcher::getLogCategories());
|
||||||
return CAircraftIcaoCode(icaoCandidate);
|
return CAircraftIcaoCode(icaoCandidate);
|
||||||
}
|
}
|
||||||
else if (foundIcaos.size() == 1)
|
else if (foundIcaos.size() == 1)
|
||||||
{
|
{
|
||||||
const CAircraftIcaoCode icao(foundIcaos.front());
|
const CAircraftIcaoCode icao(foundIcaos.front());
|
||||||
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1'', found one manufacturer '%2' in DB").arg(designator, icao.getDesignatorManufacturer()), CAircraftMatcher::getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1', found one manufacturer '%2' in DB").arg(designator, icao.getDesignatorManufacturer()), CAircraftMatcher::getLogCategories());
|
||||||
return icao;
|
return icao;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -604,7 +608,7 @@ namespace BlackCore
|
|||||||
// multiple ICAOs
|
// multiple ICAOs
|
||||||
Q_ASSERT_X(foundIcaos.size() > 1, Q_FUNC_INFO, "Wrong size");
|
Q_ASSERT_X(foundIcaos.size() > 1, Q_FUNC_INFO, "Wrong size");
|
||||||
const QPair<QString, int> maxManufacturer = foundIcaos.maxCountManufacturer();
|
const QPair<QString, int> maxManufacturer = foundIcaos.maxCountManufacturer();
|
||||||
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1'', found %2 values (ambiguous): %3").arg(designator).arg(foundIcaos.size()).arg(foundIcaos.dbKeysAsString(", ")), CAircraftMatcher::getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1', found %2 values (ambiguous): %3").arg(designator).arg(foundIcaos.size()).arg(foundIcaos.dbKeysAsString(", ")), CAircraftMatcher::getLogCategories());
|
||||||
if (maxManufacturer.second < foundIcaos.size())
|
if (maxManufacturer.second < foundIcaos.size())
|
||||||
{
|
{
|
||||||
foundIcaos = foundIcaos.findByManufacturer(maxManufacturer.first);
|
foundIcaos = foundIcaos.findByManufacturer(maxManufacturer.first);
|
||||||
@@ -612,7 +616,7 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
foundIcaos.sortByRank();
|
foundIcaos.sortByRank();
|
||||||
const CAircraftIcaoCode icao = foundIcaos.front(); // best rank
|
const CAircraftIcaoCode icao = foundIcaos.front(); // best rank
|
||||||
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1'', using ICAO '%2' with rank %3").arg(designator, icao.toQString(), icao.getRankString()), CAircraftMatcher::getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, logCallsign, QStringLiteral("Reverse lookup of aircraft ICAO '%1', using ICAO '%2' with rank %3").arg(designator, icao.toQString(), icao.getRankString()), CAircraftMatcher::getLogCategories());
|
||||||
return icao;
|
return icao;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1016,7 +1020,7 @@ namespace BlackCore
|
|||||||
// combined code
|
// combined code
|
||||||
if (mode.testFlag(CAircraftMatcherSetup::ByCombinedType))
|
if (mode.testFlag(CAircraftMatcherSetup::ByCombinedType))
|
||||||
{
|
{
|
||||||
matchedModels = ifPossibleReduceByCombinedType(remoteAircraft, matchedModels, reduced, reduceLog);
|
matchedModels = ifPossibleReduceByCombinedType(remoteAircraft, matchedModels, setup, reduced, reduceLog);
|
||||||
if (reduced) { break; }
|
if (reduced) { break; }
|
||||||
}
|
}
|
||||||
else if (log)
|
else if (log)
|
||||||
@@ -1157,7 +1161,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
bool r1 = false;
|
bool r1 = false;
|
||||||
bool r2 = false;
|
bool r2 = false;
|
||||||
CAircraftModelList models = ifPossibleReduceByAirline(remoteAircraft, inList, QStringLiteral("Reduce by airline first."), r1, log);
|
CAircraftModelList models = ifPossibleReduceByAirline(remoteAircraft, inList, setup, QStringLiteral("Reduce by airline first."), r1, log);
|
||||||
models = ifPossibleReduceByAircraftOrFamily(remoteAircraft, UsePseudoFamily, models, setup, QStringLiteral("Reduce by aircraft ICAO second."), r2, log);
|
models = ifPossibleReduceByAircraftOrFamily(remoteAircraft, UsePseudoFamily, models, setup, QStringLiteral("Reduce by aircraft ICAO second."), r2, log);
|
||||||
reduced = r1 || r2;
|
reduced = r1 || r2;
|
||||||
if (reduced) { return models; }
|
if (reduced) { return models; }
|
||||||
@@ -1167,7 +1171,7 @@ namespace BlackCore
|
|||||||
bool r1 = false;
|
bool r1 = false;
|
||||||
bool r2 = false;
|
bool r2 = false;
|
||||||
CAircraftModelList models = ifPossibleReduceByAircraftOrFamily(remoteAircraft, UsePseudoFamily, inList, setup, QStringLiteral("Reduce by aircraft ICAO first."), r1, log);
|
CAircraftModelList models = ifPossibleReduceByAircraftOrFamily(remoteAircraft, UsePseudoFamily, inList, setup, QStringLiteral("Reduce by aircraft ICAO first."), r1, log);
|
||||||
models = ifPossibleReduceByAirline(remoteAircraft, models, QStringLiteral("Reduce aircraft ICAO by airline second."), r2, log);
|
models = ifPossibleReduceByAirline(remoteAircraft, models, setup, QStringLiteral("Reduce aircraft ICAO by airline second."), r2, log);
|
||||||
|
|
||||||
// not finding anything so far means we have no valid aircraft/airline ICAO combination
|
// not finding anything so far means we have no valid aircraft/airline ICAO combination
|
||||||
// but it can happen we found B738, and for DLH there is no B738 but B737, so we search again
|
// but it can happen we found B738, and for DLH there is no B738 but B737, so we search again
|
||||||
@@ -1182,12 +1186,12 @@ namespace BlackCore
|
|||||||
bool r3 = false;
|
bool r3 = false;
|
||||||
QString usedFamily;
|
QString usedFamily;
|
||||||
CAircraftModelList models2nd = ifPossibleReduceByFamily(remoteAircraft, UsePseudoFamily, inList, r3, usedFamily, log);
|
CAircraftModelList models2nd = ifPossibleReduceByFamily(remoteAircraft, UsePseudoFamily, inList, r3, usedFamily, log);
|
||||||
models2nd = ifPossibleReduceByAirline(remoteAircraft, models2nd, "Reduce family by airline second.", r3, log);
|
models2nd = ifPossibleReduceByAirline(remoteAircraft, models2nd, setup, "Reduce family by airline second.", r3, log);
|
||||||
if (r3)
|
if (r3)
|
||||||
{
|
{
|
||||||
// we found family / airline combination
|
// we found family / airline combination
|
||||||
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Found aircraft family/airline '" % usedFamily % u"' combination", getLogCategories()); }
|
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Found " % QString::number(models2nd.sizeInt()) % " aircraft family/airline '" % usedFamily % u"' combination", getLogCategories()); }
|
||||||
return models;
|
return models2nd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1254,7 +1258,7 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
reduced = true;
|
reduced = true;
|
||||||
CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Found by family '" % family % u"' (" % hint % u") size " % QString::number(found.size()), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Found by family '" % family % u"' (" % hint % u") size " % QString::number(found.sizeInt()), getLogCategories());
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1350,7 +1354,7 @@ namespace BlackCore
|
|||||||
return ifPossibleReduceByFamily(remoteAircraft, allowPseudoFamily, inList, reduced, family, log);
|
return ifPossibleReduceByFamily(remoteAircraft, allowPseudoFamily, inList, reduced, family, log);
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftMatcher::ifPossibleReduceByAirline(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, const QString &info, bool &reduced, CStatusMessageList *log)
|
CAircraftModelList CAircraftMatcher::ifPossibleReduceByAirline(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, const CAircraftMatcherSetup &setup, const QString &info, bool &reduced, CStatusMessageList *log)
|
||||||
{
|
{
|
||||||
reduced = false;
|
reduced = false;
|
||||||
if (inList.isEmpty())
|
if (inList.isEmpty())
|
||||||
@@ -1365,7 +1369,24 @@ namespace BlackCore
|
|||||||
return inList;
|
return inList;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CAircraftModelList outList(inList.findByIcaoDesignators(CAircraftIcaoCode::null(), remoteAircraft.getAirlineIcaoCode()));
|
CAircraftMatcherSetup::MatchingMode mode = setup.getMatchingMode();
|
||||||
|
CAircraftModelList outList(inList.findByIcaoDesignators(CAircraftIcaoCode::null(), remoteAircraft.getAirlineIcaoCode()));
|
||||||
|
if (
|
||||||
|
mode.testFlag(CAircraftMatcherSetup::ByAirlineGroupSameAsAirline) ||
|
||||||
|
(outList.isEmpty() || mode.testFlag(CAircraftMatcherSetup::ByAirlineGroupIfNoAirline)))
|
||||||
|
{
|
||||||
|
const CAircraftModelList groupModels = inList.findByAirlineGroup(remoteAircraft.getAirlineIcaoCode());
|
||||||
|
outList.replaceOrAddModelsWithString(groupModels, Qt::CaseInsensitive);
|
||||||
|
if (log)
|
||||||
|
{
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, remoteAircraft,
|
||||||
|
groupModels.isEmpty() ?
|
||||||
|
QStringLiteral("No group models found by using airline group '%2'").arg(groupModels.sizeInt()).arg(remoteAircraft.getAirlineIcaoCode().getGroupDesignator()) :
|
||||||
|
QStringLiteral("Added %1 model(s) by using airline group '%2', all members: '%3'").arg(groupModels.sizeInt()).arg(remoteAircraft.getAirlineIcaoCode().getGroupDesignator(), joinStringSet(groupModels.getAirlineVDesignators(), ", ")),
|
||||||
|
getLogCategories());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (outList.isEmpty())
|
if (outList.isEmpty())
|
||||||
{
|
{
|
||||||
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, info % u" Cannot reduce by '" % remoteAircraft.getAirlineIcaoCodeDesignator() % u"' results: " % QString::number(outList.size()), getLogCategories()); }
|
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, info % u" Cannot reduce by '" % remoteAircraft.getAirlineIcaoCodeDesignator() % u"' results: " % QString::number(outList.size()), getLogCategories()); }
|
||||||
@@ -1377,7 +1398,7 @@ namespace BlackCore
|
|||||||
return outList;
|
return outList;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftMatcher::ifPossibleReduceByCombinedType(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, bool &reduced, CStatusMessageList *log)
|
CAircraftModelList CAircraftMatcher::ifPossibleReduceByCombinedType(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, const CAircraftMatcherSetup &setup, bool &reduced, CStatusMessageList *log)
|
||||||
{
|
{
|
||||||
reduced = false;
|
reduced = false;
|
||||||
if (!remoteAircraft.getAircraftIcaoCode().hasValidCombinedType())
|
if (!remoteAircraft.getAircraftIcaoCode().hasValidCombinedType())
|
||||||
@@ -1387,21 +1408,21 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
const QString cc = remoteAircraft.getAircraftIcaoCode().getCombinedType();
|
const QString cc = remoteAircraft.getAircraftIcaoCode().getCombinedType();
|
||||||
CAircraftModelList byCombinedCode(inList.findByCombinedType(cc));
|
CAircraftModelList modelsByCombinedCode(inList.findByCombinedType(cc));
|
||||||
if (byCombinedCode.isEmpty())
|
if (modelsByCombinedCode.isEmpty())
|
||||||
{
|
{
|
||||||
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Not found by combined code " % cc, getLogCategories()); }
|
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Not found by combined code " % cc, getLogCategories()); }
|
||||||
return inList;
|
return inList;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Found by combined code " % cc % u", possible " % QString::number(byCombinedCode.size()), getLogCategories()); }
|
if (log) { CMatchingUtils::addLogDetailsToList(log, remoteAircraft, u"Found by combined code " % cc % u", possible " % QString::number(modelsByCombinedCode.size()), getLogCategories()); }
|
||||||
if (byCombinedCode.size() > 1)
|
if (modelsByCombinedCode.size() > 1)
|
||||||
{
|
{
|
||||||
byCombinedCode = ifPossibleReduceByAirline(remoteAircraft, byCombinedCode, QStringLiteral("Combined code airline reduction. "), reduced, log);
|
modelsByCombinedCode = ifPossibleReduceByAirline(remoteAircraft, modelsByCombinedCode, setup, QStringLiteral("Combined code airline reduction. "), reduced, log);
|
||||||
byCombinedCode = ifPossibleReduceByManufacturer(remoteAircraft, byCombinedCode, QStringLiteral("Combined code manufacturer reduction. "), reduced, log);
|
modelsByCombinedCode = ifPossibleReduceByManufacturer(remoteAircraft, modelsByCombinedCode, QStringLiteral("Combined code manufacturer reduction. "), reduced, log);
|
||||||
reduced = true;
|
reduced = true;
|
||||||
}
|
}
|
||||||
return byCombinedCode;
|
return modelsByCombinedCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftMatcher::ifPossibleReduceByMilitaryFlag(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, bool &reduced, CStatusMessageList *log)
|
CAircraftModelList CAircraftMatcher::ifPossibleReduceByMilitaryFlag(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, bool &reduced, CStatusMessageList *log)
|
||||||
|
|||||||
@@ -291,11 +291,11 @@ namespace BlackCore
|
|||||||
|
|
||||||
//! Reduce by airline ICAO
|
//! Reduce by airline ICAO
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceByAirline(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::Simulation::CAircraftModelList &inList, const QString &info, bool &reduced, BlackMisc::CStatusMessageList *log);
|
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceByAirline(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::Simulation::CAircraftModelList &inList, const BlackMisc::Simulation::CAircraftMatcherSetup &setup, const QString &info, bool &reduced, BlackMisc::CStatusMessageList *log);
|
||||||
|
|
||||||
//! Installed models by combined code (ie L2J, L1P, ...)
|
//! Installed models by combined code (ie L2J, L1P, ...)
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceByCombinedType(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::Simulation::CAircraftModelList &inList, bool &reduced, BlackMisc::CStatusMessageList *log);
|
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceByCombinedType(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::Simulation::CAircraftModelList &inList, const BlackMisc::Simulation::CAircraftMatcherSetup &setup, bool &reduced, BlackMisc::CStatusMessageList *log);
|
||||||
|
|
||||||
//! By military flag
|
//! By military flag
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
|
|||||||
@@ -180,6 +180,16 @@ namespace BlackMisc
|
|||||||
return this->findBy(&CAircraftModel::getAircraftIcaoCode, aircraftIcaoCode, &CAircraftModel::getLivery, livery);
|
return this->findBy(&CAircraftModel::getAircraftIcaoCode, aircraftIcaoCode, &CAircraftModel::getLivery, livery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftModelList CAircraftModelList::findByAirlineGroup(const CAirlineIcaoCode &airline) const
|
||||||
|
{
|
||||||
|
const int id = airline.getGroupId();
|
||||||
|
if (id < 0) return {};
|
||||||
|
return this->findBy([ & ](const CAircraftModel & model)
|
||||||
|
{
|
||||||
|
return model.getAirlineIcaoCode().getGroupId() == id;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftModelList::findByLiveryCode(const CLivery &livery) const
|
CAircraftModelList CAircraftModelList::findByLiveryCode(const CLivery &livery) const
|
||||||
{
|
{
|
||||||
if (!livery.hasCombinedCode()) { return CAircraftModelList(); }
|
if (!livery.hasCombinedCode()) { return CAircraftModelList(); }
|
||||||
@@ -1181,7 +1191,31 @@ namespace BlackMisc
|
|||||||
|
|
||||||
QString CAircraftModelList::getCombinedTypesAsString(const QString &separator) const
|
QString CAircraftModelList::getCombinedTypesAsString(const QString &separator) const
|
||||||
{
|
{
|
||||||
return this->getCombinedTypes().values().join(separator);
|
if (this->isEmpty()) { return {}; }
|
||||||
|
return joinStringSet(this->getCombinedTypes(), separator);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSet<QString> CAircraftModelList::getAicraftAndAirlineDesignators(bool withDbId) const
|
||||||
|
{
|
||||||
|
QSet<QString> str;
|
||||||
|
for (const CAircraftModel &model : *this)
|
||||||
|
{
|
||||||
|
const QString s = (model.hasAircraftDesignator() ?
|
||||||
|
(withDbId ? model.getAircraftIcaoCode().getDesignatorDbKey() : model.getAircraftIcaoCodeDesignator()) :
|
||||||
|
"no aircraft") %
|
||||||
|
u"/" %
|
||||||
|
(model.hasAircraftDesignator() ?
|
||||||
|
(withDbId ? model.getAirlineIcaoCode().getDesignatorDbKey() : model.getAirlineIcaoCodeVDesignator()) :
|
||||||
|
"no airline");
|
||||||
|
str.insert(s);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CAircraftModelList::getAicraftAndAirlineDesignatorsAsString(bool withDbId, const QString &separator) const
|
||||||
|
{
|
||||||
|
if (this->isEmpty()) { return {}; }
|
||||||
|
return joinStringSet(this->getAicraftAndAirlineDesignators(withDbId), separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAircraftModelList::updateAircraftIcao(const CAircraftIcaoCode &icao)
|
void CAircraftModelList::updateAircraftIcao(const CAircraftIcaoCode &icao)
|
||||||
@@ -1550,6 +1584,9 @@ namespace BlackMisc
|
|||||||
u" | civilian: " % QString::number(this->countCivilianAircraft()) % separator %
|
u" | civilian: " % QString::number(this->countCivilianAircraft()) % separator %
|
||||||
u"Different airlines: " % QString::number(this->countDifferentAirlines()) % separator %
|
u"Different airlines: " % QString::number(this->countDifferentAirlines()) % separator %
|
||||||
u"Combined types: '" % this->getCombinedTypesAsString() % u'\'' % separator %
|
u"Combined types: '" % this->getCombinedTypesAsString() % u'\'' % separator %
|
||||||
|
(this->size() <= 25 ?
|
||||||
|
(u"Aircraft/airlines: " % this->getAicraftAndAirlineDesignatorsAsString(true) % separator) :
|
||||||
|
QString()) %
|
||||||
u"Simulators: " % this->countPerSimulator().toQString();
|
u"Simulators: " % this->countPerSimulator().toQString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,9 @@ namespace BlackMisc
|
|||||||
//! Find by aircraft and livery
|
//! Find by aircraft and livery
|
||||||
CAircraftModelList findByAircraftAndLivery(const Aviation::CAircraftIcaoCode &aircraftIcaoCode, const Aviation::CLivery &livery) const;
|
CAircraftModelList findByAircraftAndLivery(const Aviation::CAircraftIcaoCode &aircraftIcaoCode, const Aviation::CLivery &livery) const;
|
||||||
|
|
||||||
|
//! Find by the corresponding airline group
|
||||||
|
CAircraftModelList findByAirlineGroup(const BlackMisc::Aviation::CAirlineIcaoCode &airline) const;
|
||||||
|
|
||||||
//! Find by livery code
|
//! Find by livery code
|
||||||
CAircraftModelList findByLiveryCode(const Aviation::CLivery &livery) const;
|
CAircraftModelList findByLiveryCode(const Aviation::CLivery &livery) const;
|
||||||
|
|
||||||
@@ -436,6 +439,12 @@ namespace BlackMisc
|
|||||||
//! All combined types as string
|
//! All combined types as string
|
||||||
QString getCombinedTypesAsString(const QString &separator = ", ") const;
|
QString getCombinedTypesAsString(const QString &separator = ", ") const;
|
||||||
|
|
||||||
|
//! A set of all Aircraft/Airline ICAO codes
|
||||||
|
QSet<QString> getAicraftAndAirlineDesignators(bool withDbId) const;
|
||||||
|
|
||||||
|
//! A set of all Aircraft/Airline ICAO codes
|
||||||
|
QString getAicraftAndAirlineDesignatorsAsString(bool withDbId, const QString &separator = ", ") const;
|
||||||
|
|
||||||
//! Update aircraft ICAO
|
//! Update aircraft ICAO
|
||||||
void updateAircraftIcao(const Aviation::CAircraftIcaoCode &icao);
|
void updateAircraftIcao(const Aviation::CAircraftIcaoCode &icao);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user