From df744cc47a5d5d9633e9ccff70a964c796c87dd2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 8 Aug 2023 15:06:52 +0800 Subject: [PATCH] Add validDateTime property to datefieldbackend Signed-off-by: Claudio Cambra --- src/gui/filedetails/datefieldbackend.cpp | 19 +++++++++++++++++-- src/gui/filedetails/datefieldbackend.h | 6 +++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/gui/filedetails/datefieldbackend.cpp b/src/gui/filedetails/datefieldbackend.cpp index 22948c12f..0764ac2e1 100644 --- a/src/gui/filedetails/datefieldbackend.cpp +++ b/src/gui/filedetails/datefieldbackend.cpp @@ -54,13 +54,13 @@ void DateFieldBackend::setDateTimeMsecs(const qint64 dateTimeMsecs) QString DateFieldBackend::dateTimeString() const { const auto locale = QLocale::system(); - return _dateTime.toString(locale.dateTimeFormat(QLocale::ShortFormat)); + return _dateTime.toString(locale.dateFormat(QLocale::ShortFormat)); } void DateFieldBackend::setDateTimeString(const QString &dateTimeString) { const auto locale = QLocale::system(); - const auto dt = locale.toDateTime(dateTimeString, locale.dateTimeFormat(QLocale::ShortFormat)); + const auto dt = locale.toDateTime(dateTimeString, locale.dateFormat(QLocale::ShortFormat)); setDateTime(dt); } @@ -123,5 +123,20 @@ void DateFieldBackend::setMaximumDateTimeMsecs(const qint64 maximumDateTimeMsecs const auto dt = QDateTime::fromMSecsSinceEpoch(maximumDateTimeMsecs); setMaximumDateTime(dt); } + +bool DateFieldBackend::validDateTime() const +{ + auto valid = _dateTime.isValid(); + + if (_minimumDateTime.isValid()) { + valid &= _dateTime >= _minimumDateTime; + } + + if (_maximumDateTime.isValid()) { + valid &= _dateTime <= _maximumDateTime; + } + + return valid; +} } } \ No newline at end of file diff --git a/src/gui/filedetails/datefieldbackend.h b/src/gui/filedetails/datefieldbackend.h index 970b00f68..dde64187f 100644 --- a/src/gui/filedetails/datefieldbackend.h +++ b/src/gui/filedetails/datefieldbackend.h @@ -36,6 +36,8 @@ class DateFieldBackend : public QObject Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime NOTIFY maximumDateTimeChanged) Q_PROPERTY(qint64 maximumDateTimeMsecs READ maximumDateTimeMsecs WRITE setMaximumDateTimeMsecs NOTIFY maximumDateTimeChanged) + Q_PROPERTY(bool validDateTime READ validDateTime NOTIFY dateTimeChanged NOTIFY minimumDateTimeChanged NOTIFY maximumDateTimeChanged) + public: explicit DateFieldBackend() = default; @@ -49,6 +51,8 @@ public: [[nodiscard]] QDateTime maximumDateTime() const; [[nodiscard]] qint64 maximumDateTimeMsecs() const; + [[nodiscard]] bool validDateTime() const; + public slots: void setDateTime(const QDateTime &dateTime); void setDateTimeMsecs(const qint64 dateTimeMsecs); @@ -66,7 +70,7 @@ signals: void maximumDateTimeChanged(); private: - QDateTime _dateTime; + QDateTime _dateTime = QDateTime::currentDateTimeUtc(); QDateTime _minimumDateTime; QDateTime _maximumDateTime; }; -- 2.30.2