mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-03 15:45:46 +08:00
refs #555, load models from directory
* file dialog * adjusted signatures to pass directory
This commit is contained in:
committed by
Mathew Sutcliffe
parent
126df28d0c
commit
5789120ecc
@@ -38,15 +38,6 @@ namespace BlackMisc
|
||||
this->gracefulShutdown();
|
||||
}
|
||||
|
||||
bool IAircraftModelLoader::existsDir(const QString &directory) const
|
||||
{
|
||||
if (directory.isEmpty()) { return false; }
|
||||
QDir dir(directory);
|
||||
|
||||
//! \todo not available network dir can make this hang here, however there is no obvious solution to that
|
||||
return dir.exists();
|
||||
}
|
||||
|
||||
CStatusMessage IAircraftModelLoader::setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
|
||||
{
|
||||
const CSimulatorInfo sim = simulator.isSingleSimulator() ? simulator : this->getSimulator(); // support default value
|
||||
@@ -119,7 +110,7 @@ namespace BlackMisc
|
||||
return this->setCachedModels(CAircraftModelList());
|
||||
}
|
||||
|
||||
void IAircraftModelLoader::startLoading(LoadMode mode, const ModelConsolidation &modelConsolidation)
|
||||
void IAircraftModelLoader::startLoading(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory)
|
||||
{
|
||||
if (this->m_loadingInProgress) { return; }
|
||||
this->m_loadingInProgress = true;
|
||||
@@ -144,7 +135,7 @@ namespace BlackMisc
|
||||
emit loadingFinished(false, this->getSimulator());
|
||||
return;
|
||||
}
|
||||
this->startLoadingFromDisk(mode, modelConsolidation);
|
||||
this->startLoadingFromDisk(mode, modelConsolidation, directory);
|
||||
}
|
||||
|
||||
const CSimulatorInfo IAircraftModelLoader::getSimulator() const
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace BlackMisc
|
||||
|
||||
//! Start the loading process from disk.
|
||||
//! Optional DB models can be passed and used for data consolidation.
|
||||
void startLoading(LoadMode mode = InBackgroundWithCache, const ModelConsolidation &modelConsolidation = {});
|
||||
void startLoading(LoadMode mode = InBackgroundWithCache, const ModelConsolidation &modelConsolidation = {}, const QString &directory = {});
|
||||
|
||||
//! Loading finished?
|
||||
virtual bool isLoadingFinished() const = 0;
|
||||
@@ -153,11 +153,8 @@ namespace BlackMisc
|
||||
//! Clear cache
|
||||
BlackMisc::CStatusMessage clearCache();
|
||||
|
||||
//! Check if directory exists
|
||||
bool existsDir(const QString &directory) const;
|
||||
|
||||
//! Start the loading process from disk
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation) = 0;
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory) = 0;
|
||||
|
||||
std::atomic<bool> m_cancelLoading { false }; //!< flag
|
||||
std::atomic<bool> m_loadingInProgress { false }; //!< Loading in progress
|
||||
|
||||
@@ -63,10 +63,10 @@ namespace BlackMisc
|
||||
if (this->m_parserWorker) { this->m_parserWorker->waitForFinished(); }
|
||||
}
|
||||
|
||||
void CAircraftCfgParser::startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation)
|
||||
void CAircraftCfgParser::startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory)
|
||||
{
|
||||
const CSimulatorInfo simulator = this->getSimulator();
|
||||
const QString modelDirectory(this->m_settings.getFirstModelDirectoryOrDefault(simulator)); // expect only one directory
|
||||
const QString modelDirectory(!directory.isEmpty() ? directory : this->m_settings.getFirstModelDirectoryOrDefault(simulator)); // expect only one directory
|
||||
const QStringList excludedDirectoryPatterns(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator)); // copy
|
||||
|
||||
if (mode.testFlag(LoadInBackground))
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace BlackMisc
|
||||
protected:
|
||||
//! \name Interface functions
|
||||
//! @{
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation) override;
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory) override;
|
||||
//! @}
|
||||
|
||||
private slots:
|
||||
|
||||
@@ -68,11 +68,11 @@ namespace BlackMisc
|
||||
if (this->m_parserWorker) { this->m_parserWorker->waitForFinished(); }
|
||||
}
|
||||
|
||||
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation)
|
||||
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory)
|
||||
{
|
||||
//! \todo according to meeting XP needs to support multiple directories
|
||||
const CSimulatorInfo simulator = this->getSimulator();
|
||||
const QString modelDirectory(this->getFirstModelDirectoryOrDefault()); // directory
|
||||
const QString modelDirectory(!directory.isEmpty() ? directory : this->getFirstModelDirectoryOrDefault()); // directory
|
||||
const QStringList excludedDirectoryPatterns(this->m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator)); // copy
|
||||
|
||||
if (modelDirectory.isEmpty())
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace BlackMisc
|
||||
protected:
|
||||
//! \name Interface functions
|
||||
//! @{
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation) override;
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory) override;
|
||||
//! @}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user