mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-23 13:55:36 +08:00
refs #676, allow 1..n model directories
* adjusted loaders * changed settings
This commit is contained in:
@@ -55,7 +55,7 @@ namespace BlackSample
|
|||||||
streamOut << "reading directly" << endl;
|
streamOut << "reading directly" << endl;
|
||||||
QTime time;
|
QTime time;
|
||||||
time.start();
|
time.start();
|
||||||
streamOut << "reading " << parser.getModelDirectory() << endl;
|
streamOut << "reading " << parser.getFirstModelDirectoryOrDefault() << endl;
|
||||||
parser.startLoading();
|
parser.startLoading();
|
||||||
streamOut << "read entries: " << parser.getAircraftCfgEntriesList().size() << " in " << time.restart() << "ms" << endl;
|
streamOut << "read entries: " << parser.getAircraftCfgEntriesList().size() << " in " << time.restart() << "ms" << endl;
|
||||||
|
|
||||||
|
|||||||
@@ -77,14 +77,21 @@ namespace BlackMisc
|
|||||||
this->m_loadingInProgress = false;
|
this->m_loadingInProgress = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString IAircraftModelLoader::getModelDirectory() const
|
QStringList IAircraftModelLoader::getModelDirectoriesOrDefault() const
|
||||||
{
|
{
|
||||||
return this->m_settings.getModelDirectoryOrDefault(this->getSimulator());
|
const QStringList mdirs = this->m_settings.getModelDirectoriesOrDefault(this->getSimulator());
|
||||||
|
return mdirs;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList IAircraftModelLoader::getModelExcludeDirectories(bool relative) const
|
QString IAircraftModelLoader::getFirstModelDirectoryOrDefault() const
|
||||||
{
|
{
|
||||||
return this->m_settings.getModelExcludeDirectoryPatternsOrDefault(this->getSimulator(), relative);
|
const QString md = this->m_settings.getFirstModelDirectoryOrDefault(this->getSimulator());
|
||||||
|
return md;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList IAircraftModelLoader::getModelExcludeDirectoryPatterns() const
|
||||||
|
{
|
||||||
|
return this->m_settings.getModelExcludeDirectoryPatternsOrDefault(this->getSimulator());
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList IAircraftModelLoader::getAircraftModels() const
|
CAircraftModelList IAircraftModelLoader::getAircraftModels() const
|
||||||
|
|||||||
@@ -94,11 +94,14 @@ namespace BlackMisc
|
|||||||
//! Is the given simulator supported?
|
//! Is the given simulator supported?
|
||||||
bool supportsSimulator(const BlackMisc::Simulation::CSimulatorInfo &info);
|
bool supportsSimulator(const BlackMisc::Simulation::CSimulatorInfo &info);
|
||||||
|
|
||||||
//! Current root directory
|
//! Model directories
|
||||||
QString getModelDirectory() const;
|
QStringList getModelDirectoriesOrDefault() const;
|
||||||
|
|
||||||
|
//! First directory, can be used when only 1 directory is expected
|
||||||
|
QString getFirstModelDirectoryOrDefault() const;
|
||||||
|
|
||||||
//! Exclude directories
|
//! Exclude directories
|
||||||
QStringList getModelExcludeDirectories(bool relative) const;
|
QStringList getModelExcludeDirectoryPatterns() const;
|
||||||
|
|
||||||
//! Cancel read
|
//! Cancel read
|
||||||
void cancelLoading();
|
void cancelLoading();
|
||||||
|
|||||||
@@ -65,17 +65,17 @@ namespace BlackMisc
|
|||||||
void CAircraftCfgParser::startLoadingFromDisk(LoadMode mode, const CAircraftModelList &dbModels)
|
void CAircraftCfgParser::startLoadingFromDisk(LoadMode mode, const CAircraftModelList &dbModels)
|
||||||
{
|
{
|
||||||
const CSimulatorInfo simulator = this->getSimulator();
|
const CSimulatorInfo simulator = this->getSimulator();
|
||||||
const QString modelDirectory(this->m_settings.getModelDirectoryOrDefault(simulator)); // copy
|
const QString modelDirectory(this->m_settings.getFirstModelDirectoryOrDefault(simulator)); // expect only one directory
|
||||||
const QStringList excludedDirectories(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator, true)); // copy
|
const QStringList excludedDirectoryPatterns(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator)); // copy
|
||||||
|
|
||||||
if (mode.testFlag(LoadInBackground))
|
if (mode.testFlag(LoadInBackground))
|
||||||
{
|
{
|
||||||
if (m_parserWorker && !m_parserWorker->isFinished()) { return; }
|
if (m_parserWorker && !m_parserWorker->isFinished()) { return; }
|
||||||
m_parserWorker = BlackMisc::CWorker::fromTask(this, "CAircraftCfgParser::changeDirectory",
|
m_parserWorker = BlackMisc::CWorker::fromTask(this, "CAircraftCfgParser::changeDirectory",
|
||||||
[this, modelDirectory, excludedDirectories, simulator, dbModels]()
|
[this, modelDirectory, excludedDirectoryPatterns, simulator, dbModels]()
|
||||||
{
|
{
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
const auto aircraftCfgEntriesList = this->performParsing(modelDirectory, excludedDirectories, &ok);
|
const auto aircraftCfgEntriesList = this->performParsing(modelDirectory, excludedDirectoryPatterns, &ok);
|
||||||
CAircraftModelList models;
|
CAircraftModelList models;
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
@@ -108,7 +108,7 @@ namespace BlackMisc
|
|||||||
else if (mode == LoadDirectly)
|
else if (mode == LoadDirectly)
|
||||||
{
|
{
|
||||||
bool ok;
|
bool ok;
|
||||||
this->m_parsedCfgEntriesList = performParsing(modelDirectory, excludedDirectories, &ok);
|
this->m_parsedCfgEntriesList = performParsing(modelDirectory, excludedDirectoryPatterns, &ok);
|
||||||
CAircraftModelList models(this->m_parsedCfgEntriesList.toAircraftModelList(simulator));
|
CAircraftModelList models(this->m_parsedCfgEntriesList.toAircraftModelList(simulator));
|
||||||
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
||||||
const bool hasData = !models.isEmpty();
|
const bool hasData = !models.isEmpty();
|
||||||
@@ -137,9 +137,11 @@ namespace BlackMisc
|
|||||||
bool CAircraftCfgParser::areModelFilesUpdated() const
|
bool CAircraftCfgParser::areModelFilesUpdated() const
|
||||||
{
|
{
|
||||||
const QDateTime cacheTs(getCacheTimestamp());
|
const QDateTime cacheTs(getCacheTimestamp());
|
||||||
|
|
||||||
if (!cacheTs.isValid()) { return true; }
|
if (!cacheTs.isValid()) { return true; }
|
||||||
return CFileUtils::containsFileNewerThan(cacheTs, this->getModelDirectory(), true, { fileFilter() }, this->getModelExcludeDirectories(true));
|
return CFileUtils::containsFileNewerThan(
|
||||||
|
cacheTs,
|
||||||
|
this->m_settings.getFirstModelDirectoryOrDefault(this->getSimulator()),
|
||||||
|
true, { fileFilter() }, this->getModelExcludeDirectoryPatterns());
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftCfgEntriesList CAircraftCfgParser::performParsing(const QString &directory, const QStringList &excludeDirectories, bool *ok)
|
CAircraftCfgEntriesList CAircraftCfgParser::performParsing(const QString &directory, const QStringList &excludeDirectories, bool *ok)
|
||||||
|
|||||||
@@ -36,14 +36,19 @@ namespace BlackMisc
|
|||||||
return this->m_simulatorDirectory;
|
return this->m_simulatorDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsSimulator::setModelDirectory(const QString &modelDirectory)
|
void CSettingsSimulator::setModelDirectories(const QStringList &modelDirectories)
|
||||||
{
|
{
|
||||||
this->m_modelDirectory = modelDirectory.trimmed();
|
this->m_modelDirectories = modelDirectories;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &CSettingsSimulator::getModelDirectory() const
|
void CSettingsSimulator::setModelDirectory(const QString &modelDirectory)
|
||||||
{
|
{
|
||||||
return this->m_modelDirectory;
|
this->m_modelDirectories = QStringList({ modelDirectory });
|
||||||
|
}
|
||||||
|
|
||||||
|
const QStringList &CSettingsSimulator::getModelDirectories() const
|
||||||
|
{
|
||||||
|
return this->m_modelDirectories;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsSimulator::setModelExcludeDirectories(const QStringList &excludeDirectories)
|
void CSettingsSimulator::setModelExcludeDirectories(const QStringList &excludeDirectories)
|
||||||
@@ -56,16 +61,10 @@ namespace BlackMisc
|
|||||||
return m_excludeDirectoryPatterns;
|
return m_excludeDirectoryPatterns;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList CSettingsSimulator::getRelativeModelExcludeDirectoryPatterns(const QString &modelDirectory) const
|
|
||||||
{
|
|
||||||
const QStringList excludes(this->getModelExcludeDirectoryPatterns());
|
|
||||||
return CFileUtils::makeDirectoriesRelative(excludes, modelDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSettingsSimulator::resetPaths()
|
void CSettingsSimulator::resetPaths()
|
||||||
{
|
{
|
||||||
this->m_excludeDirectoryPatterns.clear();
|
this->m_excludeDirectoryPatterns.clear();
|
||||||
this->m_modelDirectory.clear();
|
this->m_modelDirectories.clear();
|
||||||
this->m_simulatorDirectory.clear();
|
this->m_simulatorDirectory.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,8 +76,8 @@ namespace BlackMisc
|
|||||||
QString CSettingsSimulator::convertToQString(const QString &separator, bool i18n) const
|
QString CSettingsSimulator::convertToQString(const QString &separator, bool i18n) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(i18n);
|
Q_UNUSED(i18n);
|
||||||
QString s("model directory: ");
|
QString s("model directories: ");
|
||||||
s.append(this->m_modelDirectory);
|
s.append(this->m_modelDirectories.join(','));
|
||||||
s.append(separator);
|
s.append(separator);
|
||||||
s.append("exclude directories: ");
|
s.append("exclude directories: ");
|
||||||
s.append(this->m_excludeDirectoryPatterns.join(','));
|
s.append(this->m_excludeDirectoryPatterns.join(','));
|
||||||
@@ -94,7 +93,7 @@ namespace BlackMisc
|
|||||||
case IndexSimulatorDirectory:
|
case IndexSimulatorDirectory:
|
||||||
return CVariant::fromValue(this->m_simulatorDirectory);
|
return CVariant::fromValue(this->m_simulatorDirectory);
|
||||||
case IndexModelDirectory:
|
case IndexModelDirectory:
|
||||||
return CVariant::fromValue(this->m_modelDirectory);
|
return CVariant::fromValue(this->m_modelDirectories);
|
||||||
case IndexModelExcludeDirectoryPatterns:
|
case IndexModelExcludeDirectoryPatterns:
|
||||||
return CVariant::fromValue(this->m_excludeDirectoryPatterns);
|
return CVariant::fromValue(this->m_excludeDirectoryPatterns);
|
||||||
default:
|
default:
|
||||||
@@ -219,41 +218,47 @@ namespace BlackMisc
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CMultiSimulatorSimulatorSettings::getModelDirectoryOrDefault(const CSimulatorInfo &simulator) const
|
QStringList CMultiSimulatorSimulatorSettings::getModelDirectoriesOrDefault(const CSimulatorInfo &simulator) const
|
||||||
{
|
{
|
||||||
const CSettingsSimulator s = this->getSettings(simulator);
|
const CSettingsSimulator s = this->getSettings(simulator);
|
||||||
if (s.getModelDirectory().isEmpty())
|
if (s.getModelDirectories().isEmpty())
|
||||||
{
|
{
|
||||||
return this->getDefaultModelDirectory(simulator);
|
return this->getDefaultModelDirectories(simulator);
|
||||||
}
|
}
|
||||||
return s.getModelDirectory();
|
return s.getModelDirectories();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CMultiSimulatorSimulatorSettings::getDefaultModelDirectory(const CSimulatorInfo &simulator) const
|
QString CMultiSimulatorSimulatorSettings::getFirstModelDirectoryOrDefault(const CSimulatorInfo &simulator) const
|
||||||
{
|
{
|
||||||
|
const QStringList models(getModelDirectoriesOrDefault(simulator));
|
||||||
|
if (models.isEmpty()) { return ""; }
|
||||||
|
return models.first();
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList CMultiSimulatorSimulatorSettings::getDefaultModelDirectories(const CSimulatorInfo &simulator) const
|
||||||
|
{
|
||||||
|
static const QStringList e;
|
||||||
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
||||||
switch (simulator.getSimulator())
|
switch (simulator.getSimulator())
|
||||||
{
|
{
|
||||||
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9AircraftDir();
|
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9AircraftDir().isEmpty() ? e : QStringList({ CFsCommonUtil::fs9AircraftDir() });
|
||||||
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxSimObjectsDir();
|
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxSimObjectsDir().isEmpty() ? e : QStringList({ CFsCommonUtil::fsxSimObjectsDir() });
|
||||||
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dSimObjectsDir();
|
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dSimObjectsDir().isEmpty() ? e : QStringList({ CFsCommonUtil::p3dSimObjectsDir()});
|
||||||
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneModelDirectory();
|
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneModelDirectories();
|
||||||
default:
|
default:
|
||||||
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return "";
|
return QStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList CMultiSimulatorSimulatorSettings::getModelExcludeDirectoryPatternsOrDefault(const CSimulatorInfo &simulator, bool relative) const
|
QStringList CMultiSimulatorSimulatorSettings::getModelExcludeDirectoryPatternsOrDefault(const CSimulatorInfo &simulator) const
|
||||||
{
|
{
|
||||||
const CSettingsSimulator s = this->getSettings(simulator);
|
const CSettingsSimulator s = this->getSettings(simulator);
|
||||||
const QString md = getModelDirectoryOrDefault(simulator);
|
QStringList exclude(s.getModelExcludeDirectoryPatterns());
|
||||||
QStringList exclude = relative ? s.getRelativeModelExcludeDirectoryPatterns(md) : s.getModelExcludeDirectoryPatterns();
|
|
||||||
if (!exclude.isEmpty()) { return exclude; }
|
if (!exclude.isEmpty()) { return exclude; }
|
||||||
exclude = this->getDefaultModelExcludeDirectoryPatterns(simulator);
|
exclude = this->getDefaultModelExcludeDirectoryPatterns(simulator);
|
||||||
if (!relative || exclude.isEmpty()) { return exclude; }
|
return exclude;
|
||||||
return CFileUtils::makeDirectoriesRelative(exclude, md);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList CMultiSimulatorSimulatorSettings::getDefaultModelExcludeDirectoryPatterns(const CSimulatorInfo &simulator) const
|
QStringList CMultiSimulatorSimulatorSettings::getDefaultModelExcludeDirectoryPatterns(const CSimulatorInfo &simulator) const
|
||||||
|
|||||||
@@ -52,11 +52,14 @@ namespace BlackMisc
|
|||||||
//! Simulator directory
|
//! Simulator directory
|
||||||
const QString &getSimulatorDirectory() const;
|
const QString &getSimulatorDirectory() const;
|
||||||
|
|
||||||
//! Set model directory
|
//! Set model directories
|
||||||
|
void setModelDirectories(const QStringList &modelDirectories);
|
||||||
|
|
||||||
|
//! Set single model directory
|
||||||
void setModelDirectory(const QString &modelDirectory);
|
void setModelDirectory(const QString &modelDirectory);
|
||||||
|
|
||||||
//! Model directory
|
//! Model directory
|
||||||
const QString &getModelDirectory() const;
|
const QStringList &getModelDirectories() const;
|
||||||
|
|
||||||
//! Set exclude directories
|
//! Set exclude directories
|
||||||
void setModelExcludeDirectories(const QStringList &excludeDirectories);
|
void setModelExcludeDirectories(const QStringList &excludeDirectories);
|
||||||
@@ -64,9 +67,6 @@ namespace BlackMisc
|
|||||||
//! Margins for given dock widget
|
//! Margins for given dock widget
|
||||||
const QStringList &getModelExcludeDirectoryPatterns() const;
|
const QStringList &getModelExcludeDirectoryPatterns() const;
|
||||||
|
|
||||||
//! Relative exclude directory patterns
|
|
||||||
QStringList getRelativeModelExcludeDirectoryPatterns(const QString &modelDirectory) const;
|
|
||||||
|
|
||||||
//! Reset the paths
|
//! Reset the paths
|
||||||
void resetPaths();
|
void resetPaths();
|
||||||
|
|
||||||
@@ -84,13 +84,13 @@ namespace BlackMisc
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_simulatorDirectory; //! Simulator directory
|
QString m_simulatorDirectory; //! Simulator directory
|
||||||
QString m_modelDirectory; //!< Model directory
|
QStringList m_modelDirectories; //!< Model directory
|
||||||
QStringList m_excludeDirectoryPatterns; //!< Exclude model directory
|
QStringList m_excludeDirectoryPatterns; //!< Exclude model directory
|
||||||
|
|
||||||
BLACK_METACLASS(
|
BLACK_METACLASS(
|
||||||
CSettingsSimulator,
|
CSettingsSimulator,
|
||||||
BLACK_METAMEMBER(simulatorDirectory),
|
BLACK_METAMEMBER(simulatorDirectory),
|
||||||
BLACK_METAMEMBER(modelDirectory),
|
BLACK_METAMEMBER(modelDirectories),
|
||||||
BLACK_METAMEMBER(excludeDirectoryPatterns)
|
BLACK_METAMEMBER(excludeDirectoryPatterns)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -151,13 +151,16 @@ namespace BlackMisc
|
|||||||
QString getDefaultSimulatorDirectory(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
QString getDefaultSimulatorDirectory(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|
||||||
//! Model directory or default model path per simulator
|
//! Model directory or default model path per simulator
|
||||||
QString getModelDirectoryOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
QStringList getModelDirectoriesOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|
||||||
|
//! First model directoy
|
||||||
|
QString getFirstModelDirectoryOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|
||||||
//! Default model path per simulator
|
//! Default model path per simulator
|
||||||
QString getDefaultModelDirectory(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
QStringList getDefaultModelDirectories(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|
||||||
//! Model exclude paths per simulator
|
//! Model exclude paths per simulator
|
||||||
QStringList getModelExcludeDirectoryPatternsOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator, bool relative) const;
|
QStringList getModelExcludeDirectoryPatternsOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|
||||||
//! Default model exclude paths per simulator
|
//! Default model exclude paths per simulator
|
||||||
QStringList getDefaultModelExcludeDirectoryPatterns(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
QStringList getDefaultModelExcludeDirectoryPatterns(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||||
|
|||||||
@@ -70,9 +70,10 @@ namespace BlackMisc
|
|||||||
|
|
||||||
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const CAircraftModelList &dbModels)
|
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const CAircraftModelList &dbModels)
|
||||||
{
|
{
|
||||||
|
//! \todo according to meeting XP needs to support multiple directories
|
||||||
const CSimulatorInfo simulator = this->getSimulator();
|
const CSimulatorInfo simulator = this->getSimulator();
|
||||||
const QString modelDirectory(this->m_settings.getModelDirectoryOrDefault(simulator)); // copy
|
const QString modelDirectory(this->getFirstModelDirectoryOrDefault()); // directory
|
||||||
const QStringList excludedDirectories(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator, true)); // copy
|
const QStringList excludedDirectoryPatterns(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator)); // copy
|
||||||
|
|
||||||
if (modelDirectory.isEmpty())
|
if (modelDirectory.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -85,9 +86,9 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
if (m_parserWorker && !m_parserWorker->isFinished()) { return; }
|
if (m_parserWorker && !m_parserWorker->isFinished()) { return; }
|
||||||
m_parserWorker = BlackMisc::CWorker::fromTask(this, "CAircraftModelLoaderXPlane::performParsing",
|
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);
|
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
||||||
return models;
|
return models;
|
||||||
});
|
});
|
||||||
@@ -98,7 +99,7 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
else if (mode.testFlag(LoadDirectly))
|
else if (mode.testFlag(LoadDirectly))
|
||||||
{
|
{
|
||||||
CAircraftModelList models(performParsing(this->getModelDirectory(), excludedDirectories));
|
CAircraftModelList models(performParsing(this->getFirstModelDirectoryOrDefault(), excludedDirectoryPatterns));
|
||||||
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
CAircraftModelUtilities::mergeWithDbData(models, dbModels);
|
||||||
updateInstalledModels(models);
|
updateInstalledModels(models);
|
||||||
}
|
}
|
||||||
@@ -113,10 +114,11 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
const QDateTime cacheTs(getCacheTimestamp());
|
const QDateTime cacheTs(getCacheTimestamp());
|
||||||
if (!cacheTs.isValid()) { return true; }
|
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)
|
void CAircraftModelLoaderXPlane::updateInstalledModels(const CAircraftModelList &models)
|
||||||
{
|
{
|
||||||
this->setCachedModels(models);
|
this->setCachedModels(models);
|
||||||
|
|||||||
@@ -102,9 +102,9 @@ namespace BlackMisc
|
|||||||
else { return {}; }
|
else { return {}; }
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CXPlaneUtil::xplaneModelDirectory()
|
QStringList CXPlaneUtil::xplaneModelDirectories()
|
||||||
{
|
{
|
||||||
return xplaneRootDir();
|
return QStringList({ xplaneRootDir() });
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList CXPlaneUtil::xplaneModelExcludeDirectoryPatterns()
|
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
|
//! In case more then one XPlane version is found, the path to the highest version is used
|
||||||
static QString xplaneRootDir();
|
static QString xplaneRootDir();
|
||||||
|
|
||||||
//! Directory with models
|
//! Directories with models
|
||||||
//! \todo needs review
|
static QStringList xplaneModelDirectories();
|
||||||
static QString xplaneModelDirectory();
|
|
||||||
|
|
||||||
//! Exclude directories for models
|
//! Exclude directories for models
|
||||||
static QStringList xplaneModelExcludeDirectoryPatterns();
|
static QStringList xplaneModelExcludeDirectoryPatterns();
|
||||||
|
|||||||
Reference in New Issue
Block a user