Ref T436, correct file name handling (UNC) and validate FSX position

This commit is contained in:
Klaus Basan
2018-11-18 19:40:34 +01:00
parent 3434abefb0
commit 82467da45b
3 changed files with 17 additions and 5 deletions

View File

@@ -140,13 +140,18 @@ namespace BlackMisc
{ {
CStatusMessageList msgs; CStatusMessageList msgs;
const ModelType t = this->getModelType(); const ModelType t = this->getModelType();
if (t == TypeOwnSimulatorModel || t == TypeManuallySet || t == TypeDatabaseEntry) if (t == TypeOwnSimulatorModel || t == TypeManuallySet || t == TypeDatabaseEntry || t == TypeModelMatching || t == TypeModelMatchingDefaultModel)
{ {
if (!this->hasExistingCorrespondingFile()) if (!this->hasExistingCorrespondingFile())
{ {
const CStatusMessage m = CStatusMessage(this).validationError("File '%1' not readable") << this->getFileName(); const CStatusMessage m = CStatusMessage(this).validationError("File '%1' not readable") << this->getFileName();
msgs.push_back(m); msgs.push_back(m);
} }
else
{
const CStatusMessage m = CStatusMessage(this).validationInfo("File '%1' existing") << this->getFileName();
msgs.push_back(m);
}
} }
else else
{ {
@@ -682,7 +687,7 @@ namespace BlackMisc
bool CAircraftModel::hasExistingCorrespondingFile() const bool CAircraftModel::hasExistingCorrespondingFile() const
{ {
if (!this->hasFileName()) { return false; } if (!this->hasFileName()) { return false; }
const QFileInfo fi(this->getFileName()); const QFileInfo fi(CFileUtils::fixWindowsUncPath(this->getFileName()));
return (fi.exists() && fi.isReadable()); return (fi.exists() && fi.isReadable());
} }

View File

@@ -222,10 +222,11 @@ namespace BlackMisc
// unfortunately some files are malformed which could end up in wrong data // unfortunately some files are malformed which could end up in wrong data
ok = false; ok = false;
QFile file(fileName); // includes path const QString fnFixed = CFileUtils::fixWindowsUncPath(fileName);
QFile file(fnFixed); // includes path
if (!file.open(QFile::ReadOnly | QFile::Text)) if (!file.open(QFile::ReadOnly | QFile::Text))
{ {
const CStatusMessage m = CStatusMessage(getLogCategories()).warning("Unable to read file '%1'") << fileName; const CStatusMessage m = CStatusMessage(getLogCategories()).warning("Unable to read file '%1'") << fnFixed;
msgs.push_back(m); msgs.push_back(m);
return CAircraftCfgEntriesList(); return CAircraftCfgEntriesList();
} }
@@ -352,7 +353,7 @@ namespace BlackMisc
file.close(); file.close();
// store all entries // store all entries
const QFileInfo fileInfo(fileName); const QFileInfo fileInfo(fnFixed);
QDateTime fileTimestamp(fileInfo.lastModified()); QDateTime fileTimestamp(fileInfo.lastModified());
if (!fileTimestamp.isValid() || fileInfo.created() > fileTimestamp) if (!fileTimestamp.isValid() || fileInfo.created() > fileTimestamp)
{ {

View File

@@ -306,6 +306,12 @@ namespace BlackSimPlugin
//! Format conversion //! Format conversion
static SIMCONNECT_DATA_LATLONALT coordinateToFsxLatLonAlt(const BlackMisc::Geo::ICoordinateGeodetic &coordinate); static SIMCONNECT_DATA_LATLONALT coordinateToFsxLatLonAlt(const BlackMisc::Geo::ICoordinateGeodetic &coordinate);
//! Valid FSX/P3D position
static bool isValidFsxPosition(const SIMCONNECT_DATA_INITPOSITION &fsxPos);
//! Valid 180degrees value
static bool isValid180Deg(double deg) { return deg > -180.0 && deg <= 180.0; }
static constexpr qint64 AutoTraceOffsetMs = 10 * 1000; //!< how long do we trace? static constexpr qint64 AutoTraceOffsetMs = 10 * 1000; //!< how long do we trace?
HANDLE m_hSimConnect = nullptr; //!< handle to SimConnect object HANDLE m_hSimConnect = nullptr; //!< handle to SimConnect object
DispatchProc m_dispatchProc = &CSimulatorFsxCommon::SimConnectProc; //!< called function for dispatch, can be overriden by specialized P3D function DispatchProc m_dispatchProc = &CSimulatorFsxCommon::SimConnectProc; //!< called function for dispatch, can be overriden by specialized P3D function