6 #ifndef SWIFT_MISC_SIMULATION_AIRCRAFTMODELLIST_H
7 #define SWIFT_MISC_SIMULATION_AIRCRAFTMODELLIST_H
13 #include <QJsonDocument>
18 #include <QStringList>
45 class CAirlineIcaoCode;
72 bool containsModelString(
const QString &modelString,
73 Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive)
const;
77 Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive)
const;
83 bool containsCombinedType(
const QString &combinedType)
const;
86 bool containsModelsWithAircraftIcaoDesignator(
const QString &aircraftDesignator)
const;
89 bool containsModelsWithAircraftAndAirlineIcaoDesignator(
const QString &aircraftDesignator,
90 const QString &airlineDesignator)
const;
96 bool containsMatchingSimulator(
const CSimulatorInfo &simulators)
const;
99 bool containsNotMatchingSimulator(
const CSimulatorInfo &simulators)
const;
102 bool containsMilitary()
const;
105 bool containsCivilian()
const;
108 bool containsCivilianAndMilitary()
const;
111 bool containsVtol()
const;
114 bool containsCategory()
const;
117 bool containsCategory(
int firstLevel)
const;
122 Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive)
const;
128 CAircraftModel findFirstByModelStringOrDefault(
const QString &modelString,
129 Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive)
const;
133 findFirstByModelStringAliasOrDefault(
const QString &modelString,
134 Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive)
const;
141 Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive)
const;
145 Qt::CaseSensitivity sensitivity)
const;
149 Qt::CaseSensitivity sensitivity)
const;
160 CAircraftModelList findByAircraftDesignatorAndLiveryCombinedCode(
const QString &aircraftDesignator,
161 const QString &combinedCode)
const;
171 CAircraftModelList findByAirlineNameAndTelephonyDesignator(
const QString &name,
const QString &telephony,
172 bool onlyIfExistInModel =
true)
const;
175 CAircraftModelList findByAirlineNamesOrTelephonyDesignator(
const QString &name)
const;
193 CAircraftModelList findWithAircraftDesignator(
const QSet<QString> &designators)
const;
211 CAircraftModelList findByDesignatorsOrFamilyWithColorLivery(
const QStringList &designators)
const;
217 CAircraftModelList findByCombinedTypeAndWtc(
const QString &combinedType,
const QString &wtc)
const;
220 CAircraftModelList findByCombinedTypeWithColorLivery(
const QString &combinedType)
const;
223 CAircraftModelList findByCombinedTypeAndWtcWithColorLivery(
const QString &combinedType,
224 const QString &wtc)
const;
235 const QString &manufacturer)
const;
314 bool isLikelyFsFamilyModelList()
const;
317 bool isLikelyFsxFamilyModelList()
const;
320 bool isLikelyXPlaneModelList()
const;
333 int keepModelsWithString(
const QStringList &modelStrings, Qt::CaseSensitivity sensitivity);
337 bool removeModelWithString(
const QString &modelString, Qt::CaseSensitivity sensitivity);
341 int removeModelsWithString(
const CAircraftModelList &models, Qt::CaseSensitivity sensitivity);
345 int removeModelsWithString(
const QStringList &modelStrings, Qt::CaseSensitivity sensitivity);
349 int removeIfNotMatchingSimulator(
const CSimulatorInfo &needToMatch);
353 int removeAllWithoutModelString();
357 int removeIfExcluded();
360 int removeXPlaneFlyablePlanes();
364 int removeByDistributor(
const CDistributor &distributor);
378 int removeIfNotFsFamily();
382 CAircraftModelList removeIfFileButNotInSet(
const QString &fileName,
const QSet<QString> &modelStrings);
386 bool replaceOrAddModelWithString(
const CAircraftModel &addOrReplaceModel, Qt::CaseSensitivity sensitivity);
391 Qt::CaseSensitivity sensitivity);
394 QStringList getModelStringList(
bool sort =
true)
const;
397 QSet<QString> getModelStringSet()
const;
421 int countModelsWithColorLivery()
const;
424 int countModelsWithAirlineLivery()
const;
427 int countVtolAircraft()
const;
433 int countMilitaryAircraft()
const;
436 int countCivilianAircraft()
const;
439 int countDifferentAirlines()
const;
442 int countCombinedTypes()
const;
445 int countAliases()
const;
448 void sortByFileName();
451 void updateDistributor(
const CDistributor &distributor);
460 QSet<QString> getAircraftDesignators()
const;
475 QSet<QString> getAirlineDesignators()
const;
478 QSet<QString> getAirlineVDesignators()
const;
484 QSet<QString> getAirlineDesignatorsForGroup(
int groupId)
const;
487 QSet<QString> getAirlineVDesignatorsForGroup(
int groupId)
const;
490 QSet<QString> getCombinedTypes()
const;
493 QSet<QString> getAllFileNames()
const;
497 QSet<QString> getAllUNCFileNames()
const;
500 QString getCombinedTypesAsString(
const QString &separator =
", ")
const;
503 QSet<QString> getAicraftAndAirlineDesignators(
bool withDbId)
const;
506 QString getAicraftAndAirlineDesignatorsAsString(
bool withDbId,
const QString &separator =
", ")
const;
518 void normalizeFileNamesForDb();
525 QStringList toCompleterStrings(
bool sorted =
true,
542 bool ignoreEmptyFileNames,
int stopAtFailedFiles,
543 std::atomic_bool &wasStopped,
const QString &simRootDirectory,
544 bool alreadySortedByFn =
false)
const;
547 QJsonObject toMemoizedJson()
const;
550 void convertFromMemoizedJson(
const QJsonObject &json,
bool fallbackToConvertToJson =
false);
553 QJsonArray toDatabaseJson()
const;
556 QString toDatabaseJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Compact)
const;
559 QString asHtmlSummary()
const;
562 QString coverageSummary(
const QString &separator =
"\n")
const;
566 QString coverageSummaryForModel(
const CAircraftModel &checkModel,
const QString &separator =
"\n")
const;
569 QString htmlStatistics(
bool aircraftStats,
bool airlineStats)
const;
575 static const QString &invalidModelFileAndPath();
576 static bool hasInvalidModelFile();
581 static void addAsValidOrInvalidModel(
const CAircraftModel &model,
bool valid,
QMultiMap< int, CAircraftModel > ScoredModels
Individual (matching) score for each model.
Generic ordered container with value semantics.
Generic sequential container with value semantics.
CSequence()=default
Default constructor.
Streamable status message, e.g.
Status messages, e.g. from Core -> GUI.
List of orderable IOrderable objects.
Value object for aircraft categories.
Value object encapsulating a list of ICAO codes.
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
Value object encapsulating information of a callsign.
Value object encapsulating information about an airpot.
Value object for a list of airports.
List of objects with callsign.
List of objects read from database. Such objects should implement.
Physical unit length (length)
Aircraft model (used by another pilot, my models on disk)
ModelMode
Mode, decides if a model is supposed to be used in the model set for model matching or not....
Value object encapsulating a list of aircraft models.
Count per simulator, small utility class allows to retrieve values as per simulator.
Value object encapsulating information of software distributor.
Value object encapsulating a list of distributors.
Simple hardcoded info about the corresponding simulator.
Free functions in swift::misc.
#define SWIFT_DECLARE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template declaration of mixins for a CSequence subclass to be placed near the top of the hea...
#define SWIFT_MISC_EXPORT
Export a class or function from the library.