summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controls/Private/qquickrangeddate.cpp35
-rw-r--r--src/controls/Private/qquickrangeddate_p.h8
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