Ref T441, model list utility functions

This commit is contained in:
Klaus Basan
2018-11-25 18:21:52 +01:00
parent 3edbd09732
commit 1f1fa6d7aa
2 changed files with 57 additions and 3 deletions

View File

@@ -150,6 +150,11 @@ namespace BlackMisc
});
}
CAircraftModelList CAircraftModelList::findByAircraftAndAirline(const CAircraftIcaoCode &aircraftIcaoCode, const CAirlineIcaoCode &airlineIcaoCode) const
{
return this->findBy(&CAircraftModel::getAircraftIcaoCode, aircraftIcaoCode, &CAircraftModel::getAirlineIcaoCode, airlineIcaoCode);
}
CAircraftModelList CAircraftModelList::findByAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const
{
if (aircraftDesignator.isEmpty()) { return CAircraftModelList(); }
@@ -160,6 +165,11 @@ namespace BlackMisc
});
}
CAircraftModelList CAircraftModelList::findByAircraftAndLivery(const CAircraftIcaoCode &aircraftIcaoCode, const CLivery &livery) const
{
return this->findBy(&CAircraftModel::getAircraftIcaoCode, aircraftIcaoCode, &CAircraftModel::getLivery, livery);
}
CAircraftModelList CAircraftModelList::findByLiveryCode(const CLivery &livery) const
{
if (!livery.hasCombinedCode()) { return CAircraftModelList(); }
@@ -179,6 +189,14 @@ namespace BlackMisc
});
}
CAircraftModelList CAircraftModelList::findByDistributor(const CDistributor &distributor) const
{
return this->findBy([ & ](const CAircraftModel & model)
{
return model.getDistributor() == distributor;
});
}
CAircraftModelList CAircraftModelList::findWithAircraftDesignator() const
{
return this->findBy([](const CAircraftModel & model)
@@ -572,6 +590,21 @@ namespace BlackMisc
return diff;
}
int CAircraftModelList::removeByDistributor(const CDistributor &distributor)
{
return this->removeIf(&CAircraftModel::getDistributor, distributor);
}
int CAircraftModelList::removeByAircraftAndLivery(const CAircraftIcaoCode &aircraftIcao, const CLivery &livery)
{
return this->removeIf(&CAircraftModel::getAircraftIcaoCode, aircraftIcao, &CAircraftModel::getLivery, livery);
}
int CAircraftModelList::removeByAircraftAndAirline(const CAircraftIcaoCode &aircraftIcao, const CAirlineIcaoCode &airline)
{
return this->removeIf(&CAircraftModel::getAircraftIcaoCode, aircraftIcao, &CAircraftModel::getAirlineIcaoCode, airline);
}
bool CAircraftModelList::replaceOrAddModelWithString(const CAircraftModel &addOrReplaceModel, Qt::CaseSensitivity sensitivity)
{
bool r = false;

View File

@@ -121,21 +121,30 @@ namespace BlackMisc
//! Find by a given list of models by strings
CAircraftModelList findByModelStrings(const QStringList &modelStrings, Qt::CaseSensitivity sensitivity) const;
//! Find by a given list of models trings
//! Find by excluding given list of models strings
CAircraftModelList findByNotInModelStrings(const QStringList &modelStrings, Qt::CaseSensitivity sensitivity) const;
//! Find by model string
//! Find by ICAO designators
CAircraftModelList findByIcaoDesignators(const Aviation::CAircraftIcaoCode &aircraftIcaoCode, const Aviation::CAirlineIcaoCode &airlineIcaoCode) const;
//! Find by model string
//! Find by ICAO of aircraft and airline
CAircraftModelList findByAircraftAndAirline(const Aviation::CAircraftIcaoCode &aircraftIcaoCode, const Aviation::CAirlineIcaoCode &airlineIcaoCode) const;
//! Find by designator and livery code
CAircraftModelList findByAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const;
//! Find by aircraft and livery
CAircraftModelList findByAircraftAndLivery(const Aviation::CAircraftIcaoCode &aircraftIcaoCode, const Aviation::CLivery &livery) const;
//! Find by livery code
CAircraftModelList findByLiveryCode(const Aviation::CLivery &livery) const;
//! Models with file name
CAircraftModelList findWithFileName() const;
//! All models from given distributors
CAircraftModelList findByDistributor(const CDistributor &distributor) const;
//! All models from given distributors
CAircraftModelList findByDistributors(const CDistributorList &distributors) const;
@@ -247,6 +256,18 @@ namespace BlackMisc
//! \return number of elements removed
int removeIfExcluded();
//! Remove by distributor
//! \return number of elements removed
int removeByDistributor(const CDistributor &distributor);
//! Remove if aircraft and livery
//! \return number of elements removed
int removeByAircraftAndLivery(const Aviation::CAircraftIcaoCode &aircraftIcao, const Aviation::CLivery &livery);
//! Remove if aircraft and airline
//! \return number of elements removed
int removeByAircraftAndAirline(const Aviation::CAircraftIcaoCode &aircraftIcao, const Aviation::CAirlineIcaoCode &airline);
//! Replace or add based on model string
//! \return element removed?
bool replaceOrAddModelWithString(const CAircraftModel &addOrReplaceModel, Qt::CaseSensitivity sensitivity);