From 2093c92910d9b917f01a9d2ff868abd3db932b6f Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 8 Aug 2023 17:29:45 +0800 Subject: [PATCH] Give each property unique signals, fixing QML bugs Signed-off-by: Claudio Cambra --- src/gui/filedetails/NCInputDateField.qml | 2 +- src/gui/filedetails/datefieldbackend.cpp | 7 +++++++ src/gui/filedetails/datefieldbackend.h | 18 +++++++++++++----- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/gui/filedetails/NCInputDateField.qml b/src/gui/filedetails/NCInputDateField.qml index 63d979e35..5a5ccf4f2 100644 --- a/src/gui/filedetails/NCInputDateField.qml +++ b/src/gui/filedetails/NCInputDateField.qml @@ -27,7 +27,7 @@ NCInputTextField { property DateFieldBackend backend: DateFieldBackend { id: backend - onDateTimeChanged: if (!root.activeFocus) root.updateText() + onDateTimeStringChanged: if (!root.activeFocus) root.updateText() } property alias date: backend.dateTime diff --git a/src/gui/filedetails/datefieldbackend.cpp b/src/gui/filedetails/datefieldbackend.cpp index 8377afad9..23410eabd 100644 --- a/src/gui/filedetails/datefieldbackend.cpp +++ b/src/gui/filedetails/datefieldbackend.cpp @@ -50,6 +50,9 @@ void DateFieldBackend::setDateTime(const QDateTime &dateTime) _dateTime = dateTime; Q_EMIT dateTimeChanged(); + Q_EMIT dateTimeMsecsChanged(); + Q_EMIT dateTimeStringChanged(); + Q_EMIT validDateTimeChanged(); } qint64 DateFieldBackend::dateTimeMsecs() const @@ -92,6 +95,8 @@ void DateFieldBackend::setMinimumDateTime(const QDateTime &minimumDateTime) _minimumDateTime = minimumDateTime; Q_EMIT minimumDateTimeChanged(); + Q_EMIT minimumDateTimeMsecsChanged(); + Q_EMIT validDateTimeChanged(); } qint64 DateFieldBackend::minimumDateTimeMsecs() const @@ -122,6 +127,8 @@ void DateFieldBackend::setMaximumDateTime(const QDateTime &maximumDateTime) _maximumDateTime = maximumDateTime; Q_EMIT maximumDateTimeChanged(); + Q_EMIT maximumDateTimeMsecsChanged(); + Q_EMIT validDateTimeChanged(); } qint64 DateFieldBackend::maximumDateTimeMsecs() const diff --git a/src/gui/filedetails/datefieldbackend.h b/src/gui/filedetails/datefieldbackend.h index d0df944ef..caea5ea2f 100644 --- a/src/gui/filedetails/datefieldbackend.h +++ b/src/gui/filedetails/datefieldbackend.h @@ -27,16 +27,16 @@ class DateFieldBackend : public QObject Q_OBJECT Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged) - Q_PROPERTY(qint64 dateTimeMsecs READ dateTimeMsecs WRITE setDateTimeMsecs NOTIFY dateTimeChanged) - Q_PROPERTY(QString dateTimeString READ dateTimeString WRITE setDateTimeString NOTIFY dateTimeChanged) + Q_PROPERTY(qint64 dateTimeMsecs READ dateTimeMsecs WRITE setDateTimeMsecs NOTIFY dateTimeMsecsChanged) + Q_PROPERTY(QString dateTimeString READ dateTimeString WRITE setDateTimeString NOTIFY dateTimeStringChanged) Q_PROPERTY(QDateTime minimumDateTime READ minimumDateTime WRITE setMinimumDateTime NOTIFY minimumDateTimeChanged) - Q_PROPERTY(qint64 minimumDateTimeMsecs READ minimumDateTimeMsecs WRITE setMinimumDateTimeMsecs NOTIFY minimumDateTimeChanged) + Q_PROPERTY(qint64 minimumDateTimeMsecs READ minimumDateTimeMsecs WRITE setMinimumDateTimeMsecs NOTIFY minimumDateTimeMsecsChanged) Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime NOTIFY maximumDateTimeChanged) - Q_PROPERTY(qint64 maximumDateTimeMsecs READ maximumDateTimeMsecs WRITE setMaximumDateTimeMsecs NOTIFY maximumDateTimeChanged) + Q_PROPERTY(qint64 maximumDateTimeMsecs READ maximumDateTimeMsecs WRITE setMaximumDateTimeMsecs NOTIFY maximumDateTimeMsecsChanged) - Q_PROPERTY(bool validDateTime READ validDateTime NOTIFY dateTimeChanged NOTIFY minimumDateTimeChanged NOTIFY maximumDateTimeChanged) + Q_PROPERTY(bool validDateTime READ validDateTime NOTIFY validDateTimeChanged) public: explicit DateFieldBackend(QObject *const parent = nullptr); @@ -66,8 +66,16 @@ public slots: signals: void dateTimeChanged(); + void dateTimeMsecsChanged(); + void dateTimeStringChanged(); + void minimumDateTimeChanged(); + void minimumDateTimeMsecsChanged(); + void maximumDateTimeChanged(); + void maximumDateTimeMsecsChanged(); + + void validDateTimeChanged(); private: QDateTime _dateTime = QDateTime::currentDateTimeUtc(); -- 2.30.2