swift
Loading...
Searching...
No Matches
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
8
9#include <QFlags>
10#include <QString>
11#include <QStringList>
12#include <QTextStream>
13
14#include "sampleutils.h"
15
26#include "misc/stringutils.h"
27
28using namespace swift::core;
29using namespace swift::misc;
30using namespace swift::misc::simulation;
31using namespace swift::misc::simulation::fscommon;
32using namespace swift::misc::simulation::settings;
33using namespace swift::misc::aviation;
34
35namespace swift::sample
36{
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 = CSimulatorInfo::MSFS;
52 CMultiSimulatorSettings multiSettings;
53 const CSimulatorSettings originalSettings = multiSettings.getSettings(sim);
54 CSimulatorSettings newSettings(originalSettings);
55 newSettings.setModelDirectory(fsDir);
56 multiSettings.setSettings(newSettings, sim); // set, but do NOT(!) save
57
58 CAircraftCfgParser cfgParser(sim);
59 streamOut << "Start reading models" << Qt::endl;
61 streamOut << "Read models: " << cfgParser.getAircraftCfgEntriesList().size() << Qt::endl;
62 streamOut << "Ambigious models: " << cfgParser.getAircraftCfgEntriesList().detectAmbiguousTitles().join(", ")
63 << Qt::endl;
64
65 // sync definitions, remove redundant ones
66 CAircraftMatcher matcher;
67 matcher.setModelSet(vpRulesReader.getAsModelsFromCache(), CSimulatorInfo::MSFS, true);
68
69 const CAircraftIcaoCode icao("C172");
70 streamOut << "Searching for " << icao << Qt::endl;
71 streamOut << matcher.getModelSetRef().findByIcaoDesignators(icao, CAirlineIcaoCode()) << Qt::endl;
72
73 // restore settings: DO NOT SAVE !!!
74 multiSettings.setSettings(originalSettings, sim);
75 }
76} // 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.
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.
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...
@ LoadDirectly
load synchronously (blocking), normally for testing
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.
static const QString & standardMappingsDirectory()
The standard directory for vPilot mappings.
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.
static void samples(QTextStream &streamOut, QTextStream &streamIn)
Run the samples.
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.
QString join(QChar separator) const const
QTextStream & endl(QTextStream &stream)