From 02798a7f2be735241bb9984fb7a5d78323c49857 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 4 Dec 2016 19:15:07 +0100 Subject: [PATCH] refs #822, set file ts in parser/modelloader --- .../simulation/fscommon/aircraftcfgentries.cpp | 13 ++++++++----- .../simulation/fscommon/aircraftcfgparser.cpp | 12 +++++++++--- .../simulation/fscommon/aircraftcfgparser.h | 4 ++-- .../simulation/xplane/aircraftmodelloaderxplane.cpp | 9 ++++++--- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgentries.cpp b/src/blackmisc/simulation/fscommon/aircraftcfgentries.cpp index 79b292e11..c234ec724 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgentries.cpp +++ b/src/blackmisc/simulation/fscommon/aircraftcfgentries.cpp @@ -39,8 +39,9 @@ namespace BlackMisc QString CAircraftCfgEntries::convertToQString(bool) const { QString s = "{%1, %2, %3, %4, %5, %6}"; - s = s.arg(this->m_fileName).arg(this->m_index).arg(this->m_title) - .arg(this->m_atcModel).arg(this->m_atcType).arg(this->m_atcParkingCode); + s = s. + arg(this->m_fileName).arg(this->m_index). + arg(this->m_title, this->m_atcModel, this->m_atcType, this->m_atcParkingCode); return s; } @@ -51,8 +52,8 @@ namespace BlackMisc QString CAircraftCfgEntries::getFileDirectory() const { if (this->m_fileName.isEmpty()) { return ""; } - QFileInfo fi(this->m_fileName); - return fi.absolutePath(); + const QFileInfo fileInfo(this->m_fileName); + return fileInfo.absolutePath(); } QString CAircraftCfgEntries::getUiCombinedDescription() const @@ -133,7 +134,9 @@ namespace BlackMisc model.setDescription(this->getUiCombinedDescription()); // Manufacturer, variation, type model.setFileName(this->getFileName()); model.setName(this->getSimName()); - model.setUtcTimestamp(this->getUtcTimestamp()); // aircraft.cfg file last modified + Q_ASSERT_X(this->m_timestampMSecsSinceEpoch >= 0, Q_FUNC_INFO, "Missing file timestamp"); + model.setMSecsSinceEpoch(this->m_timestampMSecsSinceEpoch); // aircraft.cfg file timestamp + model.setFileTimestamp(this->m_timestampMSecsSinceEpoch); model.setIconPath(this->getThumbnailFileNameChecked()); const QString designator(CAircraftIcaoCode::normalizeDesignator(this->getAtcModel())); diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp b/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp index e419fe2e6..b934c418c 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp +++ b/src/blackmisc/simulation/fscommon/aircraftcfgparser.cpp @@ -143,7 +143,7 @@ namespace BlackMisc CAircraftCfgEntriesList CAircraftCfgParser::performParsing(const QString &directory, const QStringList &excludeDirectories, CStatusMessageList &messages, bool *ok) { // - // function has to be thread safe + // function has to be threadsafe // *ok = false; @@ -323,7 +323,13 @@ namespace BlackMisc file.close(); // store all entries - for (const CAircraftCfgEntries &e : tempEntries) + QDateTime fileTimestamp(fileInfo.lastModified()); + if (!fileTimestamp.isValid() || fileInfo.created() > fileTimestamp) + { + fileTimestamp = fileInfo.created(); + } + Q_ASSERT_X(fileTimestamp.isValid(), Q_FUNC_INFO, "Missing file timestamp"); + for (const CAircraftCfgEntries &e : as_const(tempEntries)) { if (e.getTitle().isEmpty()) { @@ -333,7 +339,7 @@ namespace BlackMisc CAircraftCfgEntries newEntries(e); newEntries.setAtcModel(atcModel); newEntries.setAtcType(atcType); - newEntries.setUtcTimestamp(fileInfo.lastModified()); + newEntries.setUtcTimestamp(fileTimestamp); result.push_back(newEntries); } *ok = true; diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgparser.h b/src/blackmisc/simulation/fscommon/aircraftcfgparser.h index 72cd50c28..a05e57d7e 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgparser.h +++ b/src/blackmisc/simulation/fscommon/aircraftcfgparser.h @@ -91,8 +91,8 @@ namespace BlackMisc //! Files to be used static const QString &fileFilter(); - CAircraftCfgEntriesList m_parsedCfgEntriesList; //!< parsed entries - QPointer m_parserWorker; //!< worker will destroy itself, so weak pointer + CAircraftCfgEntriesList m_parsedCfgEntriesList; //!< parsed entries + QPointer m_parserWorker; //!< worker will destroy itself, so weak pointer }; } // ns } // ns diff --git a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp index abbf08b24..c8c898738 100644 --- a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp +++ b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp @@ -165,17 +165,20 @@ namespace BlackMisc CAircraftModelList installedModels; while (aircraftIt.hasNext()) { - //! \todo KB I would consider exclude dirs here CFileUtils::matchesExcludeDirectory() aircraftIt.next(); + if (CFileUtils::isExcludedDirectory(aircraftIt.fileInfo(), excludeDirectories, Qt::CaseInsensitive)) { continue; } // for the default model and for the liveries - QString modelString = QString("%1 %2").arg(aircraftIt.fileInfo().dir().dirName(), aircraftIt.fileInfo().baseName()); + const QString dirName(aircraftIt.fileInfo().dir().dirName()); + const QString modelString = QString("%1 %2").arg(dirName, aircraftIt.fileInfo().baseName()); CAircraftModel model; model.setModelType(CAircraftModel::TypeOwnSimulatorModel); model.setSimulator(this->getSimulator()); model.setFileName(aircraftIt.filePath()); - model.setUtcTimestamp(aircraftIt.fileInfo().lastModified()); + const QDateTime lastModifiedTs(aircraftIt.fileInfo().lastModified()); + model.setUtcTimestamp(lastModifiedTs); + model.setFileTimestamp(lastModifiedTs); model.setModelString(modelString); QFile file(aircraftIt.filePath());