refs #822, set file ts in parser/modelloader

This commit is contained in:
Klaus Basan
2016-12-04 19:15:07 +01:00
parent 246f48b71c
commit 02798a7f2b
4 changed files with 25 additions and 13 deletions

View File

@@ -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()));

View File

@@ -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;

View File

@@ -91,8 +91,8 @@ namespace BlackMisc
//! Files to be used
static const QString &fileFilter();
CAircraftCfgEntriesList m_parsedCfgEntriesList; //!< parsed entries
QPointer<BlackMisc::CWorker> m_parserWorker; //!< worker will destroy itself, so weak pointer
CAircraftCfgEntriesList m_parsedCfgEntriesList; //!< parsed entries
QPointer<BlackMisc::CWorker> m_parserWorker; //!< worker will destroy itself, so weak pointer
};
} // ns
} // ns

View File

@@ -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; }
// <dirname> <filename> for the default model and <dirname> <filename> <texturedir> 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());