mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-20 20:40:29 +08:00
refs #676, allow 1..n model directories
* adjusted loaders * changed settings
This commit is contained in:
@@ -70,9 +70,10 @@ namespace BlackMisc
|
||||
|
||||
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const CAircraftModelList &dbModels)
|
||||
{
|
||||
//! \todo according to meeting XP needs to support multiple directories
|
||||
const CSimulatorInfo simulator = this->getSimulator();
|
||||
const QString modelDirectory(this->m_settings.getModelDirectoryOrDefault(simulator)); // copy
|
||||
const QStringList excludedDirectories(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator, true)); // copy
|
||||
const QString modelDirectory(this->getFirstModelDirectoryOrDefault()); // directory
|
||||
const QStringList excludedDirectoryPatterns(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator)); // copy
|
||||
|
||||
if (modelDirectory.isEmpty())
|
||||
{
|
||||
@@ -85,9 +86,9 @@ namespace BlackMisc
|
||||
{
|
||||
if (m_parserWorker && !m_parserWorker->isFinished()) { return; }
|
||||
m_parserWorker = BlackMisc::CWorker::fromTask(this, "CAircraftModelLoaderXPlane::performParsing",
|
||||
[this, modelDirectory, excludedDirectories, dbModels]()
|
||||
[this, modelDirectory, excludedDirectoryPatterns, dbModels]()
|
||||
{
|
||||
auto models = performParsing(modelDirectory, excludedDirectories);
|
||||
auto models = performParsing(modelDirectory, excludedDirectoryPatterns);
|
||||
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
||||
return models;
|
||||
});
|
||||
@@ -98,7 +99,7 @@ namespace BlackMisc
|
||||
}
|
||||
else if (mode.testFlag(LoadDirectly))
|
||||
{
|
||||
CAircraftModelList models(performParsing(this->getModelDirectory(), excludedDirectories));
|
||||
CAircraftModelList models(performParsing(this->getFirstModelDirectoryOrDefault(), excludedDirectoryPatterns));
|
||||
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
||||
updateInstalledModels(models);
|
||||
}
|
||||
@@ -113,10 +114,11 @@ namespace BlackMisc
|
||||
{
|
||||
const QDateTime cacheTs(getCacheTimestamp());
|
||||
if (!cacheTs.isValid()) { return true; }
|
||||
return CFileUtils::containsFileNewerThan(cacheTs, this->getModelDirectory(), true, {fileFilterCsl(), fileFilterFlyable()}, this->getModelExcludeDirectories(false));
|
||||
return CFileUtils::containsFileNewerThan(
|
||||
cacheTs, this->getFirstModelDirectoryOrDefault(),
|
||||
true, {fileFilterCsl(), fileFilterFlyable()}, this->getModelExcludeDirectoryPatterns());
|
||||
}
|
||||
|
||||
|
||||
void CAircraftModelLoaderXPlane::updateInstalledModels(const CAircraftModelList &models)
|
||||
{
|
||||
this->setCachedModels(models);
|
||||
|
||||
@@ -102,9 +102,9 @@ namespace BlackMisc
|
||||
else { return {}; }
|
||||
}
|
||||
|
||||
QString CXPlaneUtil::xplaneModelDirectory()
|
||||
QStringList CXPlaneUtil::xplaneModelDirectories()
|
||||
{
|
||||
return xplaneRootDir();
|
||||
return QStringList({ xplaneRootDir() });
|
||||
}
|
||||
|
||||
QStringList CXPlaneUtil::xplaneModelExcludeDirectoryPatterns()
|
||||
|
||||
@@ -41,9 +41,8 @@ namespace BlackMisc
|
||||
//! In case more then one XPlane version is found, the path to the highest version is used
|
||||
static QString xplaneRootDir();
|
||||
|
||||
//! Directory with models
|
||||
//! \todo needs review
|
||||
static QString xplaneModelDirectory();
|
||||
//! Directories with models
|
||||
static QStringList xplaneModelDirectories();
|
||||
|
||||
//! Exclude directories for models
|
||||
static QStringList xplaneModelExcludeDirectoryPatterns();
|
||||
|
||||
Reference in New Issue
Block a user