diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index cda73a690..e62819157 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -280,6 +280,22 @@ namespace BlackMisc }); } + bool CAircraftModelList::containsMatchingSimulator(const CSimulatorInfo &simulators) const + { + return this->containsBy([ & ](const CAircraftModel & model) + { + return model.matchesSimulator(simulators); + }); + } + + bool CAircraftModelList::containsNotMatchingSimulator(const CSimulatorInfo &simulators) const + { + return this->containsBy([ & ](const CAircraftModel & model) + { + return !model.matchesSimulator(simulators); + }); + } + CAircraftModelList CAircraftModelList::findByDistributors(const CDistributorList &distributors) const { if (distributors.isEmpty()) { return CAircraftModelList(); } diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index 7321953b5..d99093756 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -80,6 +80,12 @@ namespace BlackMisc //! 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 + bool containsMatchingSimulator(const CSimulatorInfo &simulators) const; + + //! Contains any model not matching any of of passed simulators + bool containsNotMatchingSimulator(const CSimulatorInfo &simulators) const; + //! Find by model string //! \remark normally CAircraftModelList::findFirstByModelStringOrDefault would be used CAircraftModelList findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const; diff --git a/src/blackmisc/simulation/simulatorinfo.cpp b/src/blackmisc/simulation/simulatorinfo.cpp index bb4b9918a..1c31d1a8c 100644 --- a/src/blackmisc/simulation/simulatorinfo.cpp +++ b/src/blackmisc/simulation/simulatorinfo.cpp @@ -169,6 +169,11 @@ namespace BlackMisc return set; } + void CSimulatorInfo::invertSimulators() + { + m_simulator = (m_simulator ^ static_cast(All)) & static_cast(All); + } + const QString &CSimulatorInfo::toPluginIdentifier() const { static const QString e; diff --git a/src/blackmisc/simulation/simulatorinfo.h b/src/blackmisc/simulation/simulatorinfo.h index d2015f31c..ac5d804a0 100644 --- a/src/blackmisc/simulation/simulatorinfo.h +++ b/src/blackmisc/simulation/simulatorinfo.h @@ -153,6 +153,9 @@ namespace BlackMisc //! As a set of single simulator info objects QSet asSingleSimulatorSet() const; + //! All simulators selected become unselected and vice versa + void invertSimulators(); + //! To plugin indentifier, empty string if not single simulator const QString &toPluginIdentifier() const;