mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-27 11:05:44 +08:00
[FS family] model loader improvements
* better load message handling, display details * allow to load without "air" files in dev. environment (testing)
This commit is contained in:
committed by
Mat Sutcliffe
parent
1238357749
commit
b2d94e5f63
@@ -14,6 +14,7 @@
|
|||||||
#include "blackmisc/logmessage.h"
|
#include "blackmisc/logmessage.h"
|
||||||
#include "blackmisc/statusmessagelist.h"
|
#include "blackmisc/statusmessagelist.h"
|
||||||
#include "blackmisc/worker.h"
|
#include "blackmisc/worker.h"
|
||||||
|
#include "blackconfig/buildconfig.h"
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -32,6 +33,7 @@
|
|||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <QStringView>
|
#include <QStringView>
|
||||||
|
|
||||||
|
using namespace BlackConfig;
|
||||||
using namespace BlackMisc;
|
using namespace BlackMisc;
|
||||||
using namespace BlackMisc::Simulation;
|
using namespace BlackMisc::Simulation;
|
||||||
using namespace BlackMisc::Simulation::FsCommon;
|
using namespace BlackMisc::Simulation::FsCommon;
|
||||||
@@ -63,7 +65,7 @@ namespace BlackMisc
|
|||||||
void CAircraftCfgParser::startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)
|
void CAircraftCfgParser::startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)
|
||||||
{
|
{
|
||||||
static const CStatusMessage statusLoadingOk(this, CStatusMessage::SeverityInfo, u"Aircraft config parser loaded data");
|
static const CStatusMessage statusLoadingOk(this, CStatusMessage::SeverityInfo, u"Aircraft config parser loaded data");
|
||||||
static const CStatusMessage statusLoadingError(this, CStatusMessage::SeverityError, u"Aircraft config parser did not load data");
|
static const CStatusMessage statusLoadingError(this, CStatusMessage::SeverityError, u"Aircraft config parser did NOT load data");
|
||||||
|
|
||||||
const CSimulatorInfo simulator = this->getSimulator();
|
const CSimulatorInfo simulator = this->getSimulator();
|
||||||
const QStringList modelDirs = this->getInitializedModelDirectories(modelDirectories, simulator);
|
const QStringList modelDirs = this->getInitializedModelDirectories(modelDirectories, simulator);
|
||||||
@@ -99,13 +101,10 @@ namespace BlackMisc
|
|||||||
this->setModelsForSimulator(models, this->getSimulator());
|
this->setModelsForSimulator(models, this->getSimulator());
|
||||||
}
|
}
|
||||||
// currently I treat no data as error
|
// currently I treat no data as error
|
||||||
emit this->loadingFinished(hasData ? statusLoadingOk : statusLoadingError, simulator, ParsedData);
|
m_loadingMessages.push_front(hasData ? statusLoadingOk : statusLoadingError);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_loadingMessages.freezeOrder();
|
|
||||||
emit this->loadingFinished(m_loadingMessages, simulator, ParsedData);
|
|
||||||
}
|
}
|
||||||
|
m_loadingMessages.freezeOrder();
|
||||||
|
emit this->loadingFinished(m_loadingMessages, simulator, ParsedData);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (mode == LoadDirectly)
|
else if (mode == LoadDirectly)
|
||||||
@@ -153,7 +152,8 @@ namespace BlackMisc
|
|||||||
// excluded?
|
// excluded?
|
||||||
if (CFileUtils::isExcludedDirectory(directory, excludeDirectories) || isExcludedSubDirectory(directory))
|
if (CFileUtils::isExcludedDirectory(directory, excludeDirectories) || isExcludedSubDirectory(directory))
|
||||||
{
|
{
|
||||||
CLogMessage(this).debug() << "Skipping directory (excluded)" << directory;
|
const CStatusMessage m = CStatusMessage(this).info(u"Skipping directory '%1' (excluded)") << directory;
|
||||||
|
messages.push_back(m);
|
||||||
return CAircraftCfgEntriesList();
|
return CAircraftCfgEntriesList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,7 +178,13 @@ namespace BlackMisc
|
|||||||
// if not we assume these files can be ignored
|
// if not we assume these files can be ignored
|
||||||
const QDir dirForAir(directory, CFsCommonUtil::airFileFilter(), QDir::Name, QDir::Files | QDir::NoDotAndDotDot);
|
const QDir dirForAir(directory, CFsCommonUtil::airFileFilter(), QDir::Name, QDir::Files | QDir::NoDotAndDotDot);
|
||||||
const int airFilesCount = dirForAir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::DirsLast).size();
|
const int airFilesCount = dirForAir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::DirsLast).size();
|
||||||
const bool hasAirFile = airFilesCount > 0;
|
const bool hasAirFiles = airFilesCount > 0;
|
||||||
|
|
||||||
|
if (!hasAirFiles)
|
||||||
|
{
|
||||||
|
const CStatusMessage m = CStatusMessage(this).warning(u"No \"air\" files in '%1'") << currentDir;
|
||||||
|
messages.push_back(m);
|
||||||
|
}
|
||||||
|
|
||||||
for (const auto &fileInfo : files)
|
for (const auto &fileInfo : files)
|
||||||
{
|
{
|
||||||
@@ -202,7 +208,11 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!hasAirFile) { continue; }
|
if (!hasAirFiles)
|
||||||
|
{
|
||||||
|
if (!CBuildConfig::isLocalDeveloperDebugBuild()) { continue; } // "productive versions"
|
||||||
|
// for testing purposes we continue in dev.versions
|
||||||
|
}
|
||||||
|
|
||||||
// due to the filter we expect only "aircraft.cfg"/"sim.cfg" here
|
// due to the filter we expect only "aircraft.cfg"/"sim.cfg" here
|
||||||
// remark: in a 1st version I have used QSettings to parse to file as ini file
|
// remark: in a 1st version I have used QSettings to parse to file as ini file
|
||||||
|
|||||||
Reference in New Issue
Block a user