Ref T472, further utility functions for category handling

This commit is contained in:
Klaus Basan
2019-03-09 02:05:07 +01:00
committed by Mat Sutcliffe
parent c899bfbea7
commit 54adb40329
8 changed files with 95 additions and 4 deletions

View File

@@ -276,6 +276,17 @@ namespace BlackMisc
});
}
CAircraftModelList CAircraftModelList::findByDesignatorsOrFamilyWithColorLivery(const QStringList &designators) const
{
return this->findBy([ & ](const CAircraftModel & model)
{
if (!model.getLivery().isColorLivery()) { return false; }
const CAircraftIcaoCode modelIcao(model.getAircraftIcaoCode());
if (designators.contains(modelIcao.getDesignator())) { return true; }
return modelIcao.hasFamily() && designators.contains(modelIcao.getFamily());
});
}
CAircraftModelList CAircraftModelList::findByCombinedType(const QString &combinedType) const
{
const QString cc(combinedType.trimmed().toUpper());
@@ -356,6 +367,33 @@ namespace BlackMisc
});
}
CAircraftModelList CAircraftModelList::findByCategoryFirstLevel(int firstLevel) const
{
if (firstLevel < 0) { return CAircraftModelList(); }
return this->findBy([ = ](const CAircraftModel & model)
{
return (model.hasCategory() && model.getAircraftIcaoCode().getCategory().getFirstLevel() == firstLevel);
});
}
CAircraftModelList CAircraftModelList::findByCategory(const CAircraftCategory &category) const
{
if (category.isNull()) { return CAircraftModelList(); }
return this->findBy([ = ](const CAircraftModel & model)
{
return (model.hasCategory() && model.getAircraftIcaoCode().getCategory() == category);
});
}
CAircraftModelList CAircraftModelList::findByCategories(const CAircraftCategoryList &categories) const
{
if (categories.isEmpty()) { return CAircraftModelList(); }
return this->findBy([ = ](const CAircraftModel & model)
{
return (model.hasCategory() && categories.contains(model.getAircraftIcaoCode().getCategory()));
});
}
CAircraftModelList CAircraftModelList::findFsFamilyModels() const
{
return this->findBy([](const CAircraftModel & model)
@@ -545,6 +583,23 @@ namespace BlackMisc
});
}
bool CAircraftModelList::containsCategory() const
{
return this->containsBy([ & ](const CAircraftModel & model)
{
return model.hasCategory();
});
}
bool CAircraftModelList::containsCategory(int firstLevel) const
{
if (firstLevel < 0) { return false; }
return this->containsBy([ & ](const CAircraftModel & model)
{
return model.hasCategory() && model.getAircraftIcaoCode().getCategory().getFirstLevel() == firstLevel;
});
}
CAircraftModelList CAircraftModelList::findByDistributors(const CDistributorList &distributors) const
{
if (distributors.isEmpty()) { return CAircraftModelList(); }