Ref T182, utility functions for model/model list

This commit is contained in:
Klaus Basan
2017-11-06 01:24:34 +01:00
parent e257d96b73
commit 8e9411edb1
5 changed files with 71 additions and 11 deletions

View File

@@ -328,6 +328,11 @@ namespace BlackMisc
this->getLivery().isMilitary();
}
bool CAircraftModel::isCivilian() const
{
return !this->isMilitary();
}
bool CAircraftModel::setDistributorOrder(int order)
{
if (order < 0) { return false; }

View File

@@ -214,6 +214,9 @@ namespace BlackMisc
//! Military model?
bool isMilitary() const;
//! Civilian model?
bool isCivilian() const;
//! Get livery
const BlackMisc::Aviation::CLivery &getLivery() const { return m_livery; }

View File

@@ -281,6 +281,14 @@ namespace BlackMisc
});
}
CAircraftModelList CAircraftModelList::findByVtolFlag(bool vtol) const
{
return this->findBy([ = ](const CAircraftModel & model)
{
return (model.isVtol() == vtol);
});
}
CAircraftModelList CAircraftModelList::getAllFsFamilyModels() const
{
return this->findBy([](const CAircraftModel & model)
@@ -350,6 +358,35 @@ namespace BlackMisc
});
}
bool CAircraftModelList::containsMilitary() const
{
return this->containsBy([ & ](const CAircraftModel & model)
{
return model.isMilitary();
});
}
bool CAircraftModelList::containsCivilian() const
{
return this->containsBy([ & ](const CAircraftModel & model)
{
return model.isCivilian();
});
}
bool CAircraftModelList::containsCivilianAndMilitary() const
{
return this->containsMilitary() && this->containsCivilian();
}
bool CAircraftModelList::containsVtol() const
{
return this->containsBy([ & ](const CAircraftModel & model)
{
return model.isVtol();
});
}
CAircraftModelList CAircraftModelList::findByDistributors(const CDistributorList &distributors) const
{
if (distributors.isEmpty()) { return CAircraftModelList(); }

View File

@@ -62,30 +62,42 @@ namespace BlackMisc
//! Construct from a base class object.
CAircraftModelList(const CSequence<CAircraftModel> &other);
//! Contains model string
//! Contains model string?
bool containsModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const;
//! Contains model with model string or id
//! Contains model with model string or id?
bool containsModelStringOrDbKey(const BlackMisc::Simulation::CAircraftModel &model, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const;
//! Contains model for callsign
//! Contains model for callsign?
bool containsCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Contains given combined type
//! Contains given combined type?
bool containsCombinedType(const QString &combinedType) const;
//! Contains any model with aircraft ICAO designator
//! Contains any model with aircraft ICAO designator?
bool containsModelsWithAircraftIcaoDesignator(const QString &aircraftDesignator) const;
//! Contains any model with aircraft and airline ICAO designator
//! Contains any model with aircraft and airline ICAO designator?
bool containsModelsWithAircraftAndAirlineIcaoDesignator(const QString &aircraftDesignator, const QString &airlineDesignator) const;
//! Contains any model matching any of of passed simulators
//! Contains any model matching any of of passed simulators?
bool containsMatchingSimulator(const CSimulatorInfo &simulators) const;
//! Contains any model not matching any of of passed simulators
//! Contains any model not matching any of of passed simulators?
bool containsNotMatchingSimulator(const CSimulatorInfo &simulators) const;
//! Contains military models?
bool containsMilitary() const;
//! Contains civilian models?
bool containsCivilian() const;
//! Contains both, military and civilian models?
bool containsCivilianAndMilitary() const;
//! Contains VTOL models?
bool containsVtol() const;
//! Find by model string
//! \remark normally CAircraftModelList::findFirstByModelStringOrDefault would be used
CAircraftModelList findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const;
@@ -156,9 +168,12 @@ namespace BlackMisc
//! Find models with color liveries
CAircraftModelList findColorLiveries() const;
//! Find by military flag
//! Find by military flag, \c false returns civilian models
CAircraftModelList findByMilitaryFlag(bool military) const;
//! Find by VTOL flag, \c false returns non VTOL models
CAircraftModelList findByVtolFlag(bool vtol) const;
//! Model icon path
QString findModelIconPathByModelString(const QString &modelString) const;