diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/controls/Private/qquickrangeddate.cpp | 35 | ||||
-rw-r--r-- | src/controls/Private/qquickrangeddate_p.h | 8 |
2 files changed, 23 insertions, 20 deletions
diff --git a/src/controls/Private/qquickrangeddate.cpp b/src/controls/Private/qquickrangeddate.cpp index df7958ac..67b80e35 100644 --- a/src/controls/Private/qquickrangeddate.cpp +++ b/src/controls/Private/qquickrangeddate.cpp @@ -42,8 +42,8 @@ QT_BEGIN_NAMESPACE // JavaScript Date > QDate conversion is not correct for large negative dates. -Q_GLOBAL_STATIC_WITH_ARGS(const QDateTime, jsMinimumDate, (QDateTime(QDate(1, 1, 1), QTime()))) -Q_GLOBAL_STATIC_WITH_ARGS(const QDateTime, jsMaximumDate, (QDateTime(QDate(275759, 10, 25), QTime()))) +Q_GLOBAL_STATIC_WITH_ARGS(const QDate, jsMinimumDate, (1, 1, 1)) +Q_GLOBAL_STATIC_WITH_ARGS(const QDate, jsMaximumDate, (275759, 10, 25)) QQuickRangedDate1::QQuickRangedDate1() : QObject(0), @@ -61,10 +61,11 @@ void QQuickRangedDate1::setDate(const QDateTime &date) if (date == mDate) return; - if (date < mMinimumDate) { - mDate = mMinimumDate; - } else if (date > mMaximumDate) { - mDate = mMaximumDate; + const QDate tmpDate = date.date(); + if (tmpDate < mMinimumDate) { + mDate = minimumDate(); + } else if (tmpDate > mMaximumDate) { + mDate = maximumDate(); } else { mDate = date; } @@ -75,17 +76,18 @@ void QQuickRangedDate1::setDate(const QDateTime &date) /*! \internal \qmlproperty date QQuickRangedDate::minimumDate */ -void QQuickRangedDate1::setMinimumDate(const QDateTime &minimumDate) +void QQuickRangedDate1::setMinimumDate(const QDateTime &minDate) { - if (minimumDate == mMinimumDate) + const QDate tmpDate = minDate.date(); + if (tmpDate == mMinimumDate) return; - mMinimumDate = qMax(minimumDate, *jsMinimumDate); + mMinimumDate = qMax(tmpDate, *jsMinimumDate); emit minimumDateChanged(); // If the new minimumDate makes date invalid, clamp date to it. - if (mDate < mMinimumDate) { - mDate = mMinimumDate; + if (mDate < minimumDate()) { + mDate = minimumDate(); emit dateChanged(); } } @@ -93,19 +95,20 @@ void QQuickRangedDate1::setMinimumDate(const QDateTime &minimumDate) /*! \internal \qmlproperty date QQuickRangedDate::maximumDate */ -void QQuickRangedDate1::setMaximumDate(const QDateTime &maximumDate) +void QQuickRangedDate1::setMaximumDate(const QDateTime &maxDate) { - if (maximumDate == mMaximumDate) + const QDate tmpDate = maxDate.date(); + if (tmpDate == mMaximumDate) return; // If the new maximumDate is smaller than minimumDate, clamp maximumDate to it. // If the new maximumDate is larger than jsMaximumDate, also clamp it. - mMaximumDate = maximumDate < mMinimumDate ? mMinimumDate : qMin(maximumDate, *jsMaximumDate); + mMaximumDate = tmpDate < mMinimumDate ? mMinimumDate : qMin(tmpDate, *jsMaximumDate); emit maximumDateChanged(); // If the new maximumDate makes the date invalid, clamp it. - if (mDate > mMaximumDate) { - mDate = mMaximumDate; + if (mDate > maximumDate()) { + mDate = maximumDate(); emit dateChanged(); } } diff --git a/src/controls/Private/qquickrangeddate_p.h b/src/controls/Private/qquickrangeddate_p.h index 836daa4c..048d7edd 100644 --- a/src/controls/Private/qquickrangeddate_p.h +++ b/src/controls/Private/qquickrangeddate_p.h @@ -60,11 +60,11 @@ public: void setDate(const QDateTime &date); void resetDate() {} - QDateTime minimumDate() const { return mMinimumDate; } + QDateTime minimumDate() const { return QDateTime(mMinimumDate, QTime()); } void setMinimumDate(const QDateTime &minimumDate); void resetMinimumDate() {} - QDateTime maximumDate() const { return mMaximumDate; } + QDateTime maximumDate() const { return QDateTime(mMaximumDate, QTime(23, 59, 59, 999)); } void setMaximumDate(const QDateTime &maximumDate); void resetMaximumDate() {} @@ -75,8 +75,8 @@ Q_SIGNALS: private: QDateTime mDate; - QDateTime mMinimumDate; - QDateTime mMaximumDate; + QDate mMinimumDate; + QDate mMaximumDate; }; QT_END_NAMESPACE |