From 985674f1cf4b897266403b4160bf67a6d1860d8b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 16 Jan 2019 01:53:58 +0100 Subject: [PATCH] Ref T514, do not skip reading when aircraft.cfg is found * check for directories not need to be parsed * do not skip reading --- src/blackmisc/directoryutils.cpp | 2 +- .../simulation/fscommon/aircraftcfgparser.cpp | 28 +++++++++++++++---- .../simulation/fscommon/aircraftcfgparser.h | 3 ++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/blackmisc/directoryutils.cpp b/src/blackmisc/directoryutils.cpp index 96a7467fc..68beea988 100644 --- a/src/blackmisc/directoryutils.cpp +++ b/src/blackmisc/directoryutils.cpp @@ -460,7 +460,7 @@ namespace BlackMisc QStringList dirs; for (const QString &dir : directories) { - if (existsUnemptyDirectory(dir)) { dirs << dir; } + if (CDirectoryUtils::existsUnemptyDirectory(dir)) { dirs << dir; } } return dirs; } diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp b/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp index 6653f6a64..6ccb72b6e 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp +++ b/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp @@ -31,6 +31,7 @@ #include #include #include +#include using namespace BlackMisc; using namespace BlackMisc::Simulation; @@ -112,7 +113,7 @@ namespace BlackMisc emit this->diskLoadingStarted(simulator, mode); CStatusMessageList msgs; - m_parsedCfgEntriesList = performParsing(modelDirs, excludedDirectoryPatterns, msgs); + m_parsedCfgEntriesList = this->performParsing(modelDirs, excludedDirectoryPatterns, msgs); const CAircraftModelList models(m_parsedCfgEntriesList.toAircraftModelList(simulator, true, msgs)); m_loadingMessages = msgs; const bool hasData = !models.isEmpty(); @@ -135,7 +136,7 @@ namespace BlackMisc CAircraftCfgEntriesList entries; for (const QString &dir : directories) { - entries.push_back(performParsing(dir, excludeDirectories, messages)); + entries.push_back(this->performParsing(dir, excludeDirectories, messages)); } return entries; } @@ -149,7 +150,7 @@ namespace BlackMisc if (m_cancelLoading) { return CAircraftCfgEntriesList(); } // excluded? - if (CFileUtils::isExcludedDirectory(directory, excludeDirectories)) + if (CFileUtils::isExcludedDirectory(directory, excludeDirectories) || isExcludedSubDirectory(directory)) { CLogMessage(this).debug() << "Skipping directory " << directory; return CAircraftCfgEntriesList(); @@ -165,8 +166,10 @@ namespace BlackMisc const QString currentDir = dir.absolutePath(); CAircraftCfgEntriesList result; + emit this->loadingProgress(this->getSimulator(), QStringLiteral("Parsing '%1'").arg(currentDir), -1); - // Dirs last is crucial,since I will break recursion on "aircraft.cfg" level + // Dirs last is crucial, since I will break recursion on "aircraft.cfg" level + // with T514 this behavious has been changed const QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot, QDir::DirsLast); for (const auto &fileInfo : files) { @@ -206,7 +209,9 @@ namespace BlackMisc } result.push_back(fileResults); - return result; // do not go any deeper in file tree, we found aircraft.cfg + + // With T514 we do not skip not anymore + // return result; // do not go any deeper in file tree, we found aircraft.cfg } } @@ -238,7 +243,7 @@ namespace BlackMisc QString atcType; QString atcModel; QString fltSection("[FLTSIM.0]"); - static const QString fltSectionStr = QString("[FLTSIM.%1]"); + static const QString fltSectionStr("[FLTSIM.%1]"); int fltsimCounter = 0; FileSection currentSection = Unknown; @@ -428,6 +433,17 @@ namespace BlackMisc static const QStringList f({ "aircraft.cfg", "sim.cfg" }); return f; } + + bool CAircraftCfgParser::isExcludedSubDirectory(const QString &checkDirectory) + { + if (checkDirectory.isEmpty()) { return false; } + const QString dir = CFileUtils::lastPathSegment(checkDirectory).toLower(); + if (dir == u"texture" || dir.startsWith("texture.")) { return true; } + if (dir == u"sound" || dir == "soundai") { return true; } + if (dir == u"panel") { return true; } + if (dir == u"model") { return true; } + return false; + } } // ns } // ns } // ns diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgparser.h b/src/blackmisc/simulation/fscommon/aircraftcfgparser.h index 96dcd2bd9..fae883ff9 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgparser.h +++ b/src/blackmisc/simulation/fscommon/aircraftcfgparser.h @@ -99,6 +99,9 @@ namespace BlackMisc //! Files to be used static const QStringList &fileNameFilters(); + //! Exclude the sub directories not to be parsed + static bool isExcludedSubDirectory(const QString &excludeDirectory); + CAircraftCfgEntriesList m_parsedCfgEntriesList; //!< parsed entries QPointer m_parserWorker; //!< worker will destroy itself, so weak pointer };