swift
samplesmodelmapping.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
6 
7 #include "samplesmodelmapping.h"
8 
9 #include <QFlags>
10 #include <QString>
11 #include <QStringList>
12 #include <QTextStream>
13 
14 #include "sampleutils.h"
15 
16 #include "core/aircraftmatcher.h"
26 #include "misc/stringutils.h"
27 
28 using namespace swift::core;
29 using namespace swift::misc;
30 using namespace swift::misc::simulation;
31 using namespace swift::misc::simulation::fscommon;
32 using namespace swift::misc::simulation::settings;
33 using namespace swift::misc::aviation;
34 
35 namespace swift::sample
36 {
37  void CSamplesModelMapping::samples(QTextStream &streamOut, QTextStream &streamIn)
38  {
39  CVPilotRulesReader vpRulesReader;
40  const bool s = vpRulesReader.read(true);
41  streamOut << "directory: " << CVPilotRulesReader::standardMappingsDirectory() << Qt::endl;
42  streamOut << "loaded: " << swift::misc::boolToYesNo(s)
43  << " size: " << vpRulesReader.getAsModelsFromCache().size() << Qt::endl;
44 
45  // mapper with rule set, handing over ownership
46  const QString fsDir = CSampleUtils::selectDirectory({ QStringLiteral("P:/FlightSimulatorX (MSI)/SimObjects"),
47  QStringLiteral("P:/Temp/SimObjects"),
48  QStringLiteral("C:/Flight Simulator 9/Aircraft") },
49  streamOut, streamIn);
50 
51  const CSimulatorInfo sim =
52  fsDir.contains("simobjects", Qt::CaseInsensitive) ? CSimulatorInfo::FSX : CSimulatorInfo::FS9;
53  CMultiSimulatorSettings multiSettings;
54  const CSimulatorSettings originalSettings = multiSettings.getSettings(sim);
55  CSimulatorSettings newSettings(originalSettings);
56  newSettings.setModelDirectory(fsDir);
57  multiSettings.setSettings(newSettings, sim); // set, but do NOT(!) save
58 
59  CAircraftCfgParser cfgParser(sim);
60  streamOut << "Start reading models" << Qt::endl;
61  cfgParser.startLoading(CAircraftCfgParser::CacheSkipped | CAircraftCfgParser::LoadDirectly);
62  streamOut << "Read models: " << cfgParser.getAircraftCfgEntriesList().size() << Qt::endl;
63  streamOut << "Ambigious models: " << cfgParser.getAircraftCfgEntriesList().detectAmbiguousTitles().join(", ")
64  << Qt::endl;
65 
66  // sync definitions, remove redundant ones
67  CAircraftMatcher matcher;
68  matcher.setModelSet(vpRulesReader.getAsModelsFromCache(), CSimulatorInfo::FSX, true);
69 
70  const CAircraftIcaoCode icao("C172");
71  streamOut << "Searching for " << icao << Qt::endl;
72  streamOut << matcher.getModelSetRef().findByIcaoDesignators(icao, CAirlineIcaoCode()) << Qt::endl;
73 
74  // restore settings: DO NOT SAVE !!!
75  multiSettings.setSettings(originalSettings, sim);
76  }
77 } // namespace swift::sample
Matcher for all models.
virtual const swift::misc::simulation::CAircraftModelList & getModelSetRef() const
Model set as reference.
int setModelSet(const swift::misc::simulation::CAircraftModelList &models, const swift::misc::simulation::CSimulatorInfo &simulator, bool forced)
Set the models we want to use.
static QString selectDirectory(const QStringList &directoryOptions, QTextStream &streamOut, QTextStream &streamIn)
Select directory among given ones.
Definition: sampleutils.cpp:13
size_type size() const
Returns number of elements in the sequence.
Definition: sequence.h:273
Value object for ICAO classification.
Value object for ICAO classification.
CAircraftModelList findByIcaoDesignators(const aviation::CAircraftIcaoCode &aircraftIcaoCode, const aviation::CAirlineIcaoCode &airlineIcaoCode) const
Find by ICAO designators.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
void startLoading(LoadMode mode=InBackgroundWithCache, const ModelConsolidationCallback &modelConsolidation={}, const QStringList &modelDirectories={})
Start the loading process from disk. Optional DB models can be passed and used for data consolidation...
Utility, parsing the aircraft.cfg files.
const CAircraftCfgEntriesList & getAircraftCfgEntriesList() const
Get parsed aircraft cfg entries list.
swift::misc::simulation::CAircraftModelList getAsModelsFromCache() const
Get as models from cache.
CStatusMessage setSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator)
Set settings per simulator.
CSimulatorSettings getSettings(const CSimulatorInfo &simulator) const
Settings per simulator.
Settings for simulator Driver independent parts (such as directories), also used in model loaders.
void setModelDirectory(const QString &modelDirectory)
Set single model directory.
Backend services of the swift project, like dealing with the network or the simulators.
Definition: actionbind.cpp:7
Free functions in swift::misc.
SWIFT_MISC_EXPORT const QString & boolToYesNo(bool v)
Bool to yes/no.