mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 07:15:35 +08:00
Ref T252, send all loading status messages as list
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include <QDir>
|
||||
#include <Qt>
|
||||
#include <QtGlobal>
|
||||
#include <QMap>
|
||||
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Simulation::Data;
|
||||
@@ -35,8 +36,8 @@ namespace BlackMisc
|
||||
m_caches.setCurrentSimulator(simulator);
|
||||
|
||||
// first connect is an internal connection to log info about load status
|
||||
connect(this, &IAircraftModelLoader::loadingFinished, this, &IAircraftModelLoader::loadFinished);
|
||||
connect(&m_caches, &IMultiSimulatorModelCaches::cacheChanged, this, &IAircraftModelLoader::cacheChanged);
|
||||
connect(this, &IAircraftModelLoader::loadingFinished, this, &IAircraftModelLoader::onLoadingFinished);
|
||||
connect(&m_caches, &IMultiSimulatorModelCaches::cacheChanged, this, &IAircraftModelLoader::onCacheChanged);
|
||||
}
|
||||
|
||||
QString IAircraftModelLoader::enumToString(IAircraftModelLoader::LoadFinishedInfo info)
|
||||
@@ -110,7 +111,7 @@ namespace BlackMisc
|
||||
}
|
||||
}
|
||||
|
||||
void IAircraftModelLoader::loadFinished(const CStatusMessage &status, const BlackMisc::Simulation::CSimulatorInfo &simulator, LoadFinishedInfo info)
|
||||
void IAircraftModelLoader::onLoadingFinished(const CStatusMessageList &statusMsgs, const CSimulatorInfo &simulator, LoadFinishedInfo info)
|
||||
{
|
||||
Q_UNUSED(info);
|
||||
|
||||
@@ -118,17 +119,22 @@ namespace BlackMisc
|
||||
// so there is some redundancy here between status and m_loadingMessages
|
||||
m_loadingInProgress = false;
|
||||
|
||||
if (m_loadingMessages.hasWarningOrErrorMessages())
|
||||
const QMap<int, int> counts = statusMsgs.countSeverities();
|
||||
const int errors = counts.value(SeverityError);
|
||||
const int warnings = counts.value(SeverityWarning);
|
||||
|
||||
if (statusMsgs.hasWarningOrErrorMessages())
|
||||
{
|
||||
CLogMessage::preformatted(m_loadingMessages);
|
||||
CLogMessage(this).log(m_loadingMessages.worstSeverity(),
|
||||
"Message loading produced %1 error and %2 warning messages") << errors << warnings;
|
||||
}
|
||||
else
|
||||
{
|
||||
CLogMessage(this).info("Loading finished, success '%1' for '%2'") << status.getMessage() << simulator.toQString();
|
||||
CLogMessage(this).info("Loading finished, success for '%1'") << simulator.toQString();
|
||||
}
|
||||
}
|
||||
|
||||
void IAircraftModelLoader::cacheChanged(const CSimulatorInfo &simInfo)
|
||||
void IAircraftModelLoader::onCacheChanged(const CSimulatorInfo &simInfo)
|
||||
{
|
||||
static const CStatusMessage status(this, CStatusMessage::SeverityInfo, "Cached changed");
|
||||
emit this->loadingFinished(status, simInfo, CacheLoaded);
|
||||
@@ -211,10 +217,11 @@ namespace BlackMisc
|
||||
const QStringList modelDirs = this->getInitializedModelDirectories(modelDirectories, simulator);
|
||||
if (m_skipLoadingEmptyModelDir && modelDirs.isEmpty())
|
||||
{
|
||||
const CStatusMessage status = CStatusMessage(this, CStatusMessage::SeverityWarning, "Empty or not existing %1 directory '%2', skipping read")
|
||||
const CStatusMessage status = CStatusMessage(this, CStatusMessage::SeverityWarning,
|
||||
"Empty or not existing %1 directory '%2', skipping read")
|
||||
<< simulator.toQString() << modelDirectories.join(", ");
|
||||
m_loadingMessages.push_back(status);
|
||||
emit loadingFinished(status, simulator, LoadingSkipped);
|
||||
emit this->loadingFinished(m_loadingMessages, simulator, LoadingSkipped);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -258,9 +265,9 @@ namespace BlackMisc
|
||||
return m_caches.getInfoStringFsFamily();
|
||||
}
|
||||
|
||||
CSimulatorSettings IAircraftModelLoader::getCurrentSimulatorSettings() const
|
||||
CSpecializedSimulatorSettings IAircraftModelLoader::getCurrentSimulatorSettings() const
|
||||
{
|
||||
return m_settings.getSettings(this->getSimulator());
|
||||
return m_settings.getSpecializedSettings(this->getSimulator());
|
||||
}
|
||||
|
||||
std::unique_ptr<IAircraftModelLoader> IAircraftModelLoader::createModelLoader(const CSimulatorInfo &simulator)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "blackmisc/simulation/data/modelcaches.h"
|
||||
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
||||
#include "blackmisc/simulation/simulatorinfo.h"
|
||||
#include "blackmisc/statusmessage.h"
|
||||
#include "blackmisc/statusmessagelist.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QFlags>
|
||||
@@ -151,7 +151,7 @@ namespace BlackMisc
|
||||
QString getInfoStringFsFamily() const;
|
||||
|
||||
//! Current simulator settings
|
||||
Settings::CSimulatorSettings getCurrentSimulatorSettings() const;
|
||||
Settings::CSpecializedSimulatorSettings getCurrentSimulatorSettings() const;
|
||||
|
||||
//! Access to multi simulator settings
|
||||
const Settings::CMultiSimulatorSettings &multiSimulatorSettings() const { return m_settings; }
|
||||
@@ -180,7 +180,7 @@ namespace BlackMisc
|
||||
|
||||
signals:
|
||||
//! Parsing is finished or cache has been loaded
|
||||
void loadingFinished(const BlackMisc::CStatusMessage &status, const BlackMisc::Simulation::CSimulatorInfo &simulator, LoadFinishedInfo info);
|
||||
void loadingFinished(const CStatusMessageList &status, const CSimulatorInfo &simulator, LoadFinishedInfo info);
|
||||
|
||||
protected:
|
||||
//! Constructor
|
||||
@@ -199,10 +199,10 @@ namespace BlackMisc
|
||||
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QStringList &modelDirectories) = 0;
|
||||
|
||||
//! Loading finished, also logs messages
|
||||
void loadFinished(const CStatusMessage &status, const CSimulatorInfo &simulator, LoadFinishedInfo info);
|
||||
void onLoadingFinished(const CStatusMessageList &statusMsgs, const CSimulatorInfo &simulator, LoadFinishedInfo info);
|
||||
|
||||
//! A cache has been changed
|
||||
void cacheChanged(const CSimulatorInfo &simInfo);
|
||||
void onCacheChanged(const CSimulatorInfo &simInfo);
|
||||
|
||||
//! Get model directories from settings if empty, otherwise checked and UNC path fixed
|
||||
QStringList getInitializedModelDirectories(const QStringList &modelDirectories, const CSimulatorInfo &simulator) const;
|
||||
|
||||
@@ -107,9 +107,7 @@ namespace BlackMisc
|
||||
}
|
||||
else
|
||||
{
|
||||
CStatusMessage status = m_loadingMessages.toSingleMessage();
|
||||
status.setSeverity(CStatusMessage::SeverityError);
|
||||
emit this->loadingFinished(status, simulator, ParsedData);
|
||||
emit this->loadingFinished(m_loadingMessages, simulator, ParsedData);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -149,9 +149,10 @@ namespace BlackMisc
|
||||
if (modelConsolidation) { modelConsolidation(models, true); }
|
||||
return models;
|
||||
});
|
||||
m_parserWorker->thenWithResult<CAircraftModelList>(this, [this](const auto & models)
|
||||
m_parserWorker->thenWithResult<CAircraftModelList>(this, [ = ](const auto & models)
|
||||
{
|
||||
this->updateInstalledModels(models);
|
||||
emit this->loadingFinished(m_loadingMessages, simulator, ParsedData);
|
||||
});
|
||||
}
|
||||
else if (mode.testFlag(LoadDirectly))
|
||||
@@ -169,7 +170,7 @@ namespace BlackMisc
|
||||
void CAircraftModelLoaderXPlane::updateInstalledModels(const CAircraftModelList &models)
|
||||
{
|
||||
this->setCachedModels(models);
|
||||
emit loadingFinished(CStatusMessage(this, CStatusMessage::SeverityInfo, "Updated '%1' models") << models.size(), this->getSimulator(), ParsedData);
|
||||
emit this->loadingFinished(CStatusMessage(this, CStatusMessage::SeverityInfo, "Updated '%1' models") << models.size(), this->getSimulator(), ParsedData);
|
||||
}
|
||||
|
||||
QString CAircraftModelLoaderXPlane::CSLPlane::getModelName() const
|
||||
@@ -336,7 +337,8 @@ namespace BlackMisc
|
||||
{
|
||||
if (installedModels.containsModelString(plane.getModelName()))
|
||||
{
|
||||
CLogMessage(this).warning("Model %1 exists already! Potential model string conflict! Ignoring it.") << plane.getModelName();
|
||||
const CStatusMessage msg = CStatusMessage(this).warning("Model %1 exists already! Potential model string conflict! Ignoring it.") << plane.getModelName();
|
||||
m_loadingMessages.push_back(msg);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -704,13 +706,15 @@ namespace BlackMisc
|
||||
bool result = it.value()(tokens, package, package.path, lineNum);
|
||||
if (!result)
|
||||
{
|
||||
CLogMessage(this).warning("Ignoring CSL package %1") << package.name;
|
||||
const CStatusMessage m = CStatusMessage(this).warning("Ignoring CSL package %1") << package.name;
|
||||
m_loadingMessages.push_back(m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CLogMessage(this).warning("Unrecognized command %1 in %2") << tokens[0] << package.name;
|
||||
const CStatusMessage m = CStatusMessage(this).warning("Unrecognized command %1 in %2") << tokens[0] << package.name;
|
||||
m_loadingMessages.push_back(m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user