6 #include <QStringBuilder>
13 using namespace swift::misc::aviation;
15 namespace swift::misc::simulation
17 const QStringList &CCategoryMatcher::getLogCategories()
43 m_militaryWingAircraft = militaryWing;
52 m_militaryRotorAircraft = militaryRotor;
69 CMatchingUtils::addLogDetailsToList(log, remoteAircraft, QStringLiteral(
"Disabled category matching"),
72 return alreadyMatchedModels;
77 CMatchingUtils::addLogDetailsToList(log, remoteAircraft, QStringLiteral(
"Disabled category matching"),
79 return alreadyMatchedModels;
83 CMatchingUtils::addLogDetailsToList(log, remoteAircraft, QStringLiteral(
"No category in remote aircraft"),
85 return alreadyMatchedModels;
90 CMatchingUtils::addLogDetailsToList(
92 QStringLiteral(
"Remote aircraft has category '%1'")
96 if (!m_gliders.isEmpty() && setup.
getMatchingMode().testFlag(CAircraftMatcherSetup::ByCategoryGlider) &&
101 const int firstLevel = this->gliderFirstLevel();
115 CMatchingUtils::addLogDetailsToList(log, remoteAircraft,
116 QStringLiteral(
"Reduced to %1 models by category: '%2'")
117 .arg(sameGliders.
size())
129 if (!otherBranchGliders.
isEmpty())
133 CMatchingUtils::addLogDetailsToList(
135 QStringLiteral(
"Reduced to %1 parallel branch models of '%2' by categories: '%3'")
136 .arg(otherBranchGliders.
size())
140 return otherBranchGliders;
152 CMatchingUtils::addLogDetailsToList(
154 QStringLiteral(
"Reduced to %1 sibling models of '%2' by categories: '%3'")
155 .arg(siblingGliders.
size())
159 return siblingGliders;
163 CMatchingUtils::addLogDetailsToList(
165 QStringLiteral(
"Reduced to %1 models by 'GLIDER' category").arg(sameGliders.
size()),
173 CMatchingUtils::addLogDetailsToList(
175 QStringLiteral(
"No glider category '%1' in set").arg(m_gliders.front().getLevelAndName()),
178 static const QStringList substituteIcaos({
"UHEL",
"GLID",
"ULAC" });
179 static const QString substituteIcaosStr = substituteIcaos.join(
", ");
191 CMatchingUtils::addLogDetailsToList(
193 QStringLiteral(
"No gliders, reduced to 'L1P' models: %1' (avoid absurd matchings)")
194 .arg(substitutes.
size()),
205 CMatchingUtils::addLogDetailsToList(log, remoteAircraft,
206 QStringLiteral(
"Reduced to %1 models by '%2'")
207 .arg(substitutes.
size())
208 .arg(substituteIcaosStr),
216 return alreadyMatchedModels;
222 const int glider1st = this->gliderFirstLevel();
227 int CCategoryMatcher::gliderFirstLevel()
const
229 if (m_gliders.isEmpty()) {
return -1; }
230 return m_gliders.front().getFirstLevel();
static const QString & matching()
Matching.
size_type size() const
Returns number of elements in the sequence.
reference front()
Access the first element.
bool isEmpty() const
Synonym for empty.
Status messages, e.g. from Core -> GUI.
Value object for aircraft categories.
QString getLevelAndName() const
Level and name.
int getFirstLevel() const
First level.
QString getNameDbKey() const
Designator and DB key.
Value object encapsulating a list of ICAO codes.
QString getLevelsString(const QString &separator=", ") const
Get all level strings.
CAircraftCategoryList findInParallelBranch(const CAircraftCategory &category) const
Find siblings.
CAircraftCategoryList findByFirstLevel(int level) const
Find by first level.
CAircraftCategoryList findFirstLevels() const
Find first levels.
void sortByLevel()
Sort by level.
CAircraftCategoryList findByName(const QString &name, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
Find by name.
CAircraftCategoryList findSiblings(const CAircraftCategory &category) const
Find siblings.
Value object for ICAO classification.
bool hasCategory() const
Has category?
const QString & getDesignator() const
Get ICAO designator, e.g. "B737".
const CAircraftCategory & getCategory() const
Get category.
static const QString & getGliderDesignator()
Get the glider designator.
QString toQString(bool i18n=false) const
Cast as QString.
MatchingMode getMatchingMode() const
Matching mode.
bool useCategoryMatching() const
Use category matching.
Value object encapsulating a list of aircraft models.
CAircraftModelList findByCategories(const aviation::CAircraftCategoryList &categories) const
Find by categories.
CAircraftModelList findByCategoryFirstLevel(int firstLevel) const
Find by first level of category.
CAircraftModelList findByCombinedType(const QString &combinedType) const
Find by combined code, wildcards possible, e.g. L*P, *2J.
CAircraftModelList findByCategory(const aviation::CAircraftCategory &category) const
Find by category.
CAircraftModelList findByDesignatorsOrFamilyWithColorLivery(const QStringList &designators) const
Models with aircraft family or designators and color livery.
Comprehensive information of an aircraft.
const aviation::CAircraftIcaoCode & getAircraftIcaoCode() const
Get aircraft ICAO info.