10 #include <QStringList>
17 namespace swift::misc::simulation::fscommon
35 QString mn(modelName.trimmed().toUpper());
40 QStringList CVPilotModelRuleSet::toUpper(
const QStringList &stringList)
43 upper.reserve(stringList.size());
44 for (
const QString &s : stringList) { upper.append(s.toUpper()); }
52 for (
const CVPilotModelRule &rule : (*
this)) { ms.append(rule.getModelName()); }
53 ms.sort(Qt::CaseInsensitive);
59 QStringList distributors;
62 QString d(rule.getDistributor());
63 if (distributors.contains(d)) {
continue; }
64 distributors.append(d);
66 distributors.sort(Qt::CaseInsensitive);
73 if (knownModels.isEmpty()) {
return 0; }
75 QStringList
remove(toUpper(modelsToBeRemoved));
78 QSet<QString> removeSet(knownModels.begin(), knownModels.end());
79 removeSet &= QSet<QString>(
remove.begin(),
remove.end());
81 for (
const QString &model : std::as_const(removeSet))
91 if (knownModels.isEmpty()) {
return 0; }
93 QStringList keep(toUpper(modelsToBeKept));
96 QSet<QString> removeSet(knownModels.begin(), knownModels.end());
97 removeSet.subtract(QSet<QString>(keep.begin(), keep.end()));
105 QStringList modelNames;
110 if (m.isEmpty()) {
continue; }
111 if (modelNames.contains(m, Qt::CaseInsensitive))
116 if (!exisitingModel.matchesModelString(m, Qt::CaseInsensitive)) {
continue; }
117 exisitingModel.updateMissingParts(model);
124 modelNames.append(m);
size_type size() const
Returns number of elements in the collection.
void remove(const CVPilotModelRule &object)
Efficient remove using the find and erase of the implementation container. Typically O(log n).
int removeIf(Predicate p)
Remove elements for which a given predicate returns true.
auto findBy(Predicate p) const
Return a copy containing only those elements for which a given predicate returns true.
auto findFirstByOrDefault(Predicate p, const Value &def) const
Return a copy of the first element for which a given predicate returns true, or a default value if th...
void push_back(const T &value)
Appends an element at the end of the sequence.
Aircraft model (used by another pilot, my models on disk)
Value object encapsulating a list of aircraft models.
Value object encapsulating information of software distributor.
CAircraftModel toAircraftModel() const
Convert into aircraft model.
const QString & getModelName() const
Get model name.
Value object reading a set of vPilot rules.
QStringList getSortedModelNames() const
Model strings.
CVPilotModelRuleSet()=default
Default constructor.
int removeModels(const QStringList &modelsToBeRemoved)
Removed given models.
QStringList getSortedDistributors() const
List of distributors.
simulation::CAircraftModelList toAircraftModels() const
To aircraft models.
CVPilotModelRuleSet findModelsStartingWith(const QString &modelName) const
Find models starting with.
int keepModels(const QStringList &modelsToBeKept)
Keep given models (if in list)
CVPilotModelRuleSet findByModelName(const QString &modelName) const
Find by model string.
CVPilotModelRule findFirstByModelName(const QString &modelName) const
Find first by model string.
#define SWIFT_DEFINE_COLLECTION_MIXINS(Namespace, T, Set)
Explicit template definition of mixins for a CCollection subclass.