Skip to content

Commit 67965af

Browse files
tzoblerltoenning
authored andcommitted
fix: Correct path for MSFS2020 model validation
1 parent 69d5622 commit 67965af

File tree

7 files changed

+27
-66
lines changed

7 files changed

+27
-66
lines changed

src/core/context/contextsimulatorimpl.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,17 @@ namespace swift::core::context
9393
m_validator->startUpdating(60);
9494
}
9595

96+
// For validation we need simulator directory and model directory
97+
// this function is called at start (simulator=0) and when there is an active connection to a simulator
9698
void CContextSimulator::setValidator(const CSimulatorInfo &simulator)
9799
{
98100
if (simulator.isSingleSimulator())
99101
{
100102
const QString simDir = m_multiSimulatorSettings.getSimulatorDirectoryOrDefault(simulator);
101-
m_validator->setCurrentSimulator(simulator, simDir);
103+
const QStringList modelDirList = m_multiSimulatorSettings.getModelDirectoriesOrDefault(simulator);
104+
m_validator->setCurrentSimulator(simulator, simDir, modelDirList);
102105
}
103-
else { m_validator->setCurrentSimulator(CSimulatorInfo::None, {}); }
106+
else { m_validator->setCurrentSimulator(CSimulatorInfo::None, {}, {}); }
104107
}
105108

106109
CContextSimulator *CContextSimulator::registerWithDBus(CDBusServer *server)

src/misc/simulation/backgroundvalidation.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ namespace swift::misc::simulation
2828
m_updateTimer.setInterval(60 * 1000);
2929
}
3030

31-
void CBackgroundValidation::setCurrentSimulator(const CSimulatorInfo &simulator, const QString &simDirectory)
31+
void CBackgroundValidation::setCurrentSimulator(const CSimulatorInfo &simulator, const QString &simDirectory,
32+
const QStringList &modelDirList)
3233
{
3334
QWriteLocker l(&m_lock);
3435
m_simulator = simulator;
3536
m_simDirectory = simDirectory;
37+
m_modelDirList = modelDirList;
3638
}
3739

3840
bool CBackgroundValidation::wasAlreadyChecked(const CSimulatorInfo &simulator) const

src/misc/simulation/backgroundvalidation.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ namespace swift::misc::simulation
3535

3636
//! Corresponding simulator
3737
//! \threadsafe
38-
void setCurrentSimulator(const CSimulatorInfo &simulator, const QString &simDirectory);
38+
void setCurrentSimulator(const CSimulatorInfo &simulator, const QString &simDirectory,
39+
const QStringList &modelDirList);
3940

4041
//! Was already checked for simulator?
4142
//! \threadsafe
@@ -80,7 +81,7 @@ namespace swift::misc::simulation
8081
std::atomic_bool m_wasStopped { false }; //!< has been stopped or should be stopped
8182
CSimulatorInfo m_simulator; //!< simulator
8283
QString m_simDirectory; //!< corresponding sim directory
83-
84+
QStringList m_modelDirList; //!< corresponding modeldirectory
8485
// last result values, mostly needed when running in the distributed swift system and we want to get the values
8586
CAircraftModelList m_lastResultValid;
8687
CAircraftModelList m_lastResultInvalid;

src/misc/simulation/fscommon/fscommonutil.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ namespace swift::misc::simulation::fscommon
224224
std::atomic_bool &stopped, const QString &simulatorDir)
225225
{
226226
Q_UNUSED(simulatorDir)
227-
const QStringList simObjectPaths = CFsDirectories::msfsSimObjectsDirPlusAddOnXmlSimObjectsPaths();
227+
const QStringList simObjectPaths = CFsDirectories::msfsSimObjectsDirPath();
228228
return CFsCommonUtil::validateSimObjectsPath(QSet<QString>(simObjectPaths.begin(), simObjectPaths.end()),
229229
models, validModels, invalidModels, ignoreEmptyFileNames,
230230
stopAtFailedFiles, stopped);

src/misc/simulation/fscommon/fsdirectories.cpp

Lines changed: 6 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ namespace swift::misc::simulation::fscommon
9191
return dir;
9292
}
9393

94-
QString msfsDirImpl()
94+
static QString msfsDirImpl()
9595
{
9696
const QStringList locations = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
9797
for (const QString &path : locations)
@@ -165,7 +165,7 @@ namespace swift::misc::simulation::fscommon
165165
{
166166
QString dir(CFsDirectories::msfsDir());
167167
if (dir.isEmpty()) { return {}; }
168-
return CFsDirectories::msfsSimObjectsDirFromSimDir(dir);
168+
return CFileUtils::normalizeFilePathToQtStandard(msfsPackagesDirImpl());
169169
}
170170

171171
const QString &CFsDirectories::fsxSimObjectsDir()
@@ -186,12 +186,6 @@ namespace swift::misc::simulation::fscommon
186186
return CFileUtils::appendFilePaths(CFileUtils::normalizeFilePathToQtStandard(simDir), "SimObjects");
187187
}
188188

189-
QString CFsDirectories::msfsSimObjectsDirFromSimDir(const QString &simDir)
190-
{
191-
if (simDir.isEmpty()) { return {}; }
192-
return CFileUtils::appendFilePaths(CFileUtils::normalizeFilePathToQtStandard(simDir), "SimObjects");
193-
}
194-
195189
const QStringList &CFsDirectories::fsxSimObjectsExcludeDirectoryPatterns()
196190
{
197191
static const QStringList exclude { "SimObjects/Animals", "SimObjects/Misc", "SimObjects/GroundVehicles",
@@ -321,22 +315,11 @@ namespace swift::misc::simulation::fscommon
321315
return allPaths;
322316
}
323317

324-
QStringList CFsDirectories::msfsSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir)
318+
QStringList CFsDirectories::msfsSimObjectsDirPath(const QString &simObjectsDir)
325319
{
326-
// finding the user settings only works on P3D machine
327-
QStringList allPaths = CFsDirectories::allMsfsSimObjectPaths().values();
328-
const QString sod = CFileUtils::normalizeFilePathToQtStandard(
329-
simObjectsDir.isEmpty() ? CFsDirectories::msfsSimObjectsDir() : simObjectsDir);
330-
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
331-
{
332-
// case insensitive is important here
333-
allPaths.push_front(sod);
334-
}
335-
336-
allPaths.removeAll({}); // remove all empty
337-
allPaths.removeDuplicates();
338-
allPaths.sort(Qt::CaseInsensitive);
339-
return allPaths;
320+
Q_UNUSED(simObjectsDir);
321+
static const QStringList Path { CFsDirectories::msfsSimObjectsDir() };
322+
return Path;
340323
}
341324

342325
QStringList CFsDirectories::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir,
@@ -628,11 +611,6 @@ namespace swift::misc::simulation::fscommon
628611
return CFsDirectories::fsxSimObjectsPaths(CFsDirectories::findFsxConfigFiles(), true);
629612
}
630613

631-
QSet<QString> CFsDirectories::allMsfsSimObjectPaths()
632-
{
633-
return CFsDirectories::msfsSimObjectsPaths(CFsDirectories::findMsfsConfigFiles(), true);
634-
}
635-
636614
QStringList CFsDirectories::findFsxConfigFiles()
637615
{
638616
const QStringList locations = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
@@ -654,28 +632,6 @@ namespace swift::misc::simulation::fscommon
654632
return files;
655633
}
656634

657-
QStringList CFsDirectories::findMsfsConfigFiles()
658-
{
659-
const QStringList locations = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
660-
QStringList files;
661-
for (const QString &path : locations)
662-
{
663-
// TODO this acts as a placeholder. the file msfs.cfg doesn't exist
664-
const QString file = CFileUtils::appendFilePaths(CFileUtils::pathUp(path), "Microsoft/MSFS/msfs.cfg");
665-
const QFileInfo fi(file);
666-
if (fi.exists())
667-
{
668-
files.push_back(fi.absoluteFilePath());
669-
if (logConfigPathReading())
670-
{
671-
CLogMessage(static_cast<CFsDirectories *>(nullptr)).info(u"MSFS config file: '%1'")
672-
<< fi.absoluteFilePath();
673-
}
674-
}
675-
}
676-
return files;
677-
}
678-
679635
QSet<QString> CFsDirectories::fsxSimObjectsPaths(const QStringList &fsxFiles, bool checked)
680636
{
681637
QSet<QString> paths;

src/misc/simulation/fscommon/fsdirectories.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ namespace swift::misc::simulation::fscommon
4141
//! FSX aircraft dir, relative to simulator directory
4242
static QString fsxSimObjectsDirFromSimDir(const QString &simDir);
4343

44-
//! MSFS aircraft dir, relative to simulator directory
45-
static QString msfsSimObjectsDirFromSimDir(const QString &simDir);
46-
4744
//! Exclude directories for simObjects
4845
static const QStringList &fsxSimObjectsExcludeDirectoryPatterns();
4946

@@ -54,7 +51,7 @@ namespace swift::misc::simulation::fscommon
5451
static QStringList fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir = "");
5552

5653
//! MSFS's simObject dir and the add on dirs
57-
static QStringList msfsSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir = "");
54+
static QStringList msfsSimObjectsDirPath(const QString &simObjectsDir = "");
5855

5956
//! P3D's simObject dir and the add on dirs
6057
static QStringList p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir,
@@ -129,16 +126,18 @@ namespace swift::misc::simulation::fscommon
129126
//! Get all the SimObjects paths from all config files
130127
static QSet<QString> allFsxSimObjectPaths();
131128

129+
// TODO TZ
132130
//! Get all the SimObjects paths from all config files
133-
static QSet<QString> allMsfsSimObjectPaths();
131+
// static QSet<QString> allMsfsSimObjectPaths();
134132

135133
//! Find the config files (fsx.cfg)
136134
// C:/Users/Joe Doe/AppData/Roaming/Microsoft/FSX/fsx.cfg
137135
static QStringList findFsxConfigFiles();
138136

137+
// TODO TZ
139138
//! Find the config files (fsx.cfg)
140139
// C:/Users/Joe Doe/AppData/Roaming/Microsoft/FSX/fsx.cfg
141-
static QStringList findMsfsConfigFiles();
140+
// static QStringList findMsfsConfigFiles();
142141

143142
//! Get all the SimObjects paths from fsx.cfg
144143
// SimObjectPaths.0=SimObjects\Airplanes

src/misc/simulation/settings/simulatorsettings.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -322,16 +322,16 @@ namespace swift::misc::simulation::settings
322322
return s.getSimulatorDirectoryOrDefault();
323323
}
324324

325-
QStringList CMultiSimulatorSettings::getModelDirectoriesIfNotDefault(const CSimulatorInfo &simulator) const
325+
QStringList CMultiSimulatorSettings::getModelDirectoriesOrDefault(const CSimulatorInfo &simulator) const
326326
{
327327
const CSpecializedSimulatorSettings s = this->getSpecializedSettings(simulator);
328-
return s.getModelDirectoriesIfNotDefault();
328+
return s.getModelDirectoriesOrDefault();
329329
}
330330

331-
QStringList CMultiSimulatorSettings::getModelDirectoriesOrDefault(const CSimulatorInfo &simulator) const
331+
QStringList CMultiSimulatorSettings::getModelDirectoriesIfNotDefault(const CSimulatorInfo &simulator) const
332332
{
333333
const CSpecializedSimulatorSettings s = this->getSpecializedSettings(simulator);
334-
return s.getModelDirectoriesOrDefault();
334+
return s.getModelDirectoriesIfNotDefault();
335335
}
336336

337337
QString CMultiSimulatorSettings::getFirstModelDirectoryOrDefault(const CSimulatorInfo &simulator) const

0 commit comments

Comments
 (0)