diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 2424e3656..b81c7c3ca 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -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; diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index 7d68df9c7..16f279914 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -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);