From 338c5b344a5c955a670417b4897312acfc34173d Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 26 Jul 2018 02:13:53 +0200 Subject: [PATCH] Ref T292, Ref T285 function to set file timestamp --- src/blackmisc/simulation/aircraftmodel.cpp | 22 ++++++++++++++++++++-- src/blackmisc/simulation/aircraftmodel.h | 4 ++++ src/blackmisc/timestampbased.cpp | 17 +++++++++-------- src/blackmisc/timestampbased.h | 3 +++ 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/blackmisc/simulation/aircraftmodel.cpp b/src/blackmisc/simulation/aircraftmodel.cpp index 6e6ca5e2f..014abbeaf 100644 --- a/src/blackmisc/simulation/aircraftmodel.cpp +++ b/src/blackmisc/simulation/aircraftmodel.cpp @@ -449,12 +449,29 @@ namespace BlackMisc void CAircraftModel::setFileTimestamp(const QDateTime ×tampUtc) { - m_fileTimestamp = timestampUtc.toMSecsSinceEpoch(); + m_fileTimestamp = timestampUtc.isValid() ? timestampUtc.toMSecsSinceEpoch() : -1; } void CAircraftModel::setFileTimestamp(qint64 timestamp) { - m_fileTimestamp = timestamp; + m_fileTimestamp = (timestamp < 0) ? -1 : timestamp; + } + + void CAircraftModel::setFileDetailsAndTimestamp(const QFileInfo &fileInfo) + { + this->setFileName(fileInfo.absoluteFilePath()); + const QDateTime modified = fileInfo.lastModified(); + if (modified.isValid()) + { + this->setFileTimestamp(modified); + this->setUtcTimestamp(modified); + } + else + { + const QDateTime created = fileInfo.lastModified(); + this->setFileTimestamp(created); + this->setUtcTimestamp(created); + } } CPixmap CAircraftModel::loadIcon(CStatusMessage &success) const @@ -504,6 +521,7 @@ namespace BlackMisc this->setSimulator(otherModel.getSimulator()); } + ITimestampBased::updateMissingParts(otherModel); m_livery.updateMissingParts(otherModel.getLivery()); m_aircraftIcao.updateMissingParts(otherModel.getAircraftIcaoCode()); m_distributor.updateMissingParts(otherModel.getDistributor()); diff --git a/src/blackmisc/simulation/aircraftmodel.h b/src/blackmisc/simulation/aircraftmodel.h index 67f9cbe6c..db761e36d 100644 --- a/src/blackmisc/simulation/aircraftmodel.h +++ b/src/blackmisc/simulation/aircraftmodel.h @@ -40,6 +40,7 @@ #include #include #include +#include #include namespace BlackMisc @@ -397,6 +398,9 @@ namespace BlackMisc //! Set file timestamp void setFileTimestamp(qint64 timestamp); + //! Set file timestamp, timestamp and file name + void setFileDetailsAndTimestamp(const QFileInfo &fileInfo); + //! Load icon from disk CPixmap loadIcon(CStatusMessage &success) const; diff --git a/src/blackmisc/timestampbased.cpp b/src/blackmisc/timestampbased.cpp index 25cc09347..06051f4d2 100644 --- a/src/blackmisc/timestampbased.cpp +++ b/src/blackmisc/timestampbased.cpp @@ -74,14 +74,7 @@ namespace BlackMisc void ITimestampBased::setUtcTimestamp(const QDateTime ×tamp) { - if (timestamp.isValid()) - { - m_timestampMSecsSinceEpoch = timestamp.toMSecsSinceEpoch(); - } - else - { - m_timestampMSecsSinceEpoch = -1; // invalid - } + m_timestampMSecsSinceEpoch = timestamp.isValid() ? timestamp.toMSecsSinceEpoch() : -1; } bool ITimestampBased::isNewerThan(const ITimestampBased &otherTimestampObj) const @@ -266,6 +259,14 @@ namespace BlackMisc return Compare::compare(m_timestampMSecsSinceEpoch, compareValue.m_timestampMSecsSinceEpoch); } + void ITimestampBased::updateMissingParts(const ITimestampBased &other) + { + if (m_timestampMSecsSinceEpoch < 0) + { + m_timestampMSecsSinceEpoch = other.m_timestampMSecsSinceEpoch; + } + } + QString ITimestampWithOffsetBased::getTimestampAndOffset(bool formatted) const { static const QString ts("%1 (%2)"); diff --git a/src/blackmisc/timestampbased.h b/src/blackmisc/timestampbased.h index aee362404..7bd0b0678 100644 --- a/src/blackmisc/timestampbased.h +++ b/src/blackmisc/timestampbased.h @@ -143,6 +143,9 @@ namespace BlackMisc //! Compare for index int comparePropertyByIndex(const CPropertyIndex &index, const ITimestampBased &compareValue) const; + //! Update missing parts + void updateMissingParts(const ITimestampBased &other); + qint64 m_timestampMSecsSinceEpoch = -1; //!< timestamp value };