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

@@ -623,9 +623,9 @@ namespace BlackCore
// VTOL // VTOL
ScoredModels map; ScoredModels map;
if (remoteAircraft.isVtol() && modelSet.contains(&CAircraftModel::isVtol, true)) if (remoteAircraft.isVtol() && modelSet.containsVtol())
{ {
usedModelSet = modelSet.findBy(&CAircraftModel::isVtol, true); usedModelSet = modelSet.findByVtolFlag(true);
} }
else else
{ {

View File

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

View File

@@ -214,6 +214,9 @@ namespace BlackMisc
//! Military model? //! Military model?
bool isMilitary() const; bool isMilitary() const;
//! Civilian model?
bool isCivilian() const;
//! Get livery //! Get livery
const BlackMisc::Aviation::CLivery &getLivery() const { return m_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 CAircraftModelList CAircraftModelList::getAllFsFamilyModels() const
{ {
return this->findBy([](const CAircraftModel & model) 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 CAircraftModelList CAircraftModelList::findByDistributors(const CDistributorList &distributors) const
{ {
if (distributors.isEmpty()) { return CAircraftModelList(); } if (distributors.isEmpty()) { return CAircraftModelList(); }

View File

@@ -62,30 +62,42 @@ namespace BlackMisc
//! Construct from a base class object. //! Construct from a base class object.
CAircraftModelList(const CSequence<CAircraftModel> &other); CAircraftModelList(const CSequence<CAircraftModel> &other);
//! Contains model string //! Contains model string?
bool containsModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const; 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; 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; bool containsCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Contains given combined type //! Contains given combined type?
bool containsCombinedType(const QString &combinedType) const; 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; 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; 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; 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; 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 //! Find by model string
//! \remark normally CAircraftModelList::findFirstByModelStringOrDefault would be used //! \remark normally CAircraftModelList::findFirstByModelStringOrDefault would be used
CAircraftModelList findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const; CAircraftModelList findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const;
@@ -156,9 +168,12 @@ namespace BlackMisc
//! Find models with color liveries //! Find models with color liveries
CAircraftModelList findColorLiveries() const; CAircraftModelList findColorLiveries() const;
//! Find by military flag //! Find by military flag, \c false returns civilian models
CAircraftModelList findByMilitaryFlag(bool military) const; CAircraftModelList findByMilitaryFlag(bool military) const;
//! Find by VTOL flag, \c false returns non VTOL models
CAircraftModelList findByVtolFlag(bool vtol) const;
//! Model icon path //! Model icon path
QString findModelIconPathByModelString(const QString &modelString) const; QString findModelIconPathByModelString(const QString &modelString) const;