diff options
Diffstat (limited to 'src/widgets/widgets/qcalendarwidget.cpp')
-rw-r--r-- | src/widgets/widgets/qcalendarwidget.cpp | 132 |
1 files changed, 62 insertions, 70 deletions
diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 8cd6914295..034127b4f3 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qcalendarwidget.h" @@ -63,6 +27,8 @@ QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + enum { RowCount = 6, ColumnCount = 7, @@ -71,13 +37,13 @@ enum { MinimumDayOffset = 1 }; -namespace { - static QString formatNumber(int number, int fieldWidth) { - return QString::number(number).rightJustified(fieldWidth, QLatin1Char('0')); + return QString::number(number).rightJustified(fieldWidth, u'0'); } +namespace QtPrivate { + class QCalendarDateSectionValidator { public: @@ -105,9 +71,9 @@ protected: QString QCalendarDateSectionValidator::highlightString(const QString &str, int pos) { if (pos == 0) - return QLatin1String("<b>") + str + QLatin1String("</b>"); - int startPos = str.length() - pos; - return QStringView{str}.mid(0, startPos) + QLatin1String("<b>") + QStringView{str}.mid(startPos, pos) + QLatin1String("</b>"); + return "<b>"_L1 + str + "</b>"_L1; + int startPos = str.size() - pos; + return QStringView{str}.mid(0, startPos) + "<b>"_L1 + QStringView{str}.mid(startPos, pos) + "</b>"_L1; } @@ -432,9 +398,11 @@ struct SectionToken { QCalendarDateSectionValidator *validator; int repeat; }; -} // unnamed namespace -Q_DECLARE_TYPEINFO(SectionToken, Q_PRIMITIVE_TYPE); -namespace { +} // namespace QtPrivate + +Q_DECLARE_TYPEINFO(QtPrivate::SectionToken, Q_PRIMITIVE_TYPE); + +namespace QtPrivate { class QCalendarDateValidator { @@ -544,7 +512,7 @@ void QCalendarDateValidator::setFormat(const QString &format) clear(); int pos = 0; - const QLatin1Char quote('\''); + const auto quote = u'\''; bool quoting = false; QString separator; while (pos < format.size()) { @@ -560,13 +528,13 @@ void QCalendarDateValidator::setFormat(const QString &format) quoting = false; } else { QCalendarDateSectionValidator *validator = nullptr; - if (nextChar == QLatin1Char('d')) { + if (nextChar == u'd') { offset = qMin(4, countRepeat(format, pos)); validator = &m_dayValidator; - } else if (nextChar == QLatin1Char('M')) { + } else if (nextChar == u'M') { offset = qMin(4, countRepeat(format, pos)); validator = &m_monthValidator; - } else if (nextChar == QLatin1Char('y')) { + } else if (nextChar == u'y') { offset = qMin(4, countRepeat(format, pos)); validator = &m_yearValidator; } else { @@ -761,8 +729,8 @@ bool QCalendarTextNavigator::eventFilter(QObject *o, QEvent *e) { if (m_widget) { if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease) { - QKeyEvent* ke = (QKeyEvent*)e; - if ((ke->text().length() > 0 && ke->text().at(0).isPrint()) || m_dateFrame) { + QKeyEvent *ke = static_cast<QKeyEvent *>(e); + if ((ke->text().size() > 0 && ke->text().at(0).isPrint()) || m_dateFrame) { if (ke->key() == Qt::Key_Return || ke->key() == Qt::Key_Enter || ke->key() == Qt::Key_Select) { applyDate(); emit editingFinished(); @@ -1640,7 +1608,20 @@ protected: } }; -} // unnamed namespace +} // namespace QtPrivate + +using QCalendarDateSectionValidator = QtPrivate::QCalendarDateSectionValidator; +using QCalendarDayValidator = QtPrivate::QCalendarDayValidator; +using QCalendarMonthValidator = QtPrivate::QCalendarMonthValidator; +using QCalendarYearValidator = QtPrivate::QCalendarYearValidator; +using QCalendarDateValidator = QtPrivate::QCalendarDateValidator; +using QPrevNextCalButton = QtPrivate::QPrevNextCalButton; +using QCalendarDelegate = QtPrivate::QCalendarDelegate; +using QCalToolButton = QtPrivate::QCalToolButton; +using QCalendarDelegate = QtPrivate::QCalendarDelegate; +using QCalendarModel = QtPrivate::QCalendarModel; +using QCalendarView = QtPrivate::QCalendarView; +using QCalendarTextNavigator = QtPrivate::QCalendarTextNavigator; class QCalendarWidgetPrivate : public QWidgetPrivate { @@ -1758,7 +1739,7 @@ void QCalendarWidgetPrivate::createNavigationBar(QWidget *widget) { Q_Q(QCalendarWidget); navBarBackground = new QWidget(widget); - navBarBackground->setObjectName(QLatin1String("qt_calendar_navigationbar")); + navBarBackground->setObjectName("qt_calendar_navigationbar"_L1); navBarBackground->setAutoFillBackground(true); navBarBackground->setBackgroundRole(QPalette::Highlight); @@ -1819,11 +1800,11 @@ void QCalendarWidgetPrivate::createNavigationBar(QWidget *widget) monthButton->setFocusPolicy(Qt::NoFocus); //set names for the header controls. - prevMonth->setObjectName(QLatin1String("qt_calendar_prevmonth")); - nextMonth->setObjectName(QLatin1String("qt_calendar_nextmonth")); - monthButton->setObjectName(QLatin1String("qt_calendar_monthbutton")); - yearButton->setObjectName(QLatin1String("qt_calendar_yearbutton")); - yearEdit->setObjectName(QLatin1String("qt_calendar_yearedit")); + prevMonth->setObjectName("qt_calendar_prevmonth"_L1); + nextMonth->setObjectName("qt_calendar_nextmonth"_L1); + monthButton->setObjectName("qt_calendar_monthbutton"_L1); + yearButton->setObjectName("qt_calendar_yearbutton"_L1); + yearEdit->setObjectName("qt_calendar_yearedit"_L1); updateMonthMenu(); showMonth(m_model->m_date.year(m_model->m_calendar), m_model->m_date.month(m_model->m_calendar)); @@ -2135,7 +2116,7 @@ QCalendarWidget::QCalendarWidget(QWidget *parent) d->m_model->m_dayFormats.insert(Qt::Saturday, fmt); d->m_model->m_dayFormats.insert(Qt::Sunday, fmt); d->m_view = new QCalendarView(this); - d->m_view->setObjectName(QLatin1String("qt_calendar_calendarview")); + d->m_view->setObjectName("qt_calendar_calendarview"_L1); d->m_view->setModel(d->m_model); d->m_model->setView(d->m_view); d->m_view->setSelectionBehavior(QAbstractItemView::SelectItems); @@ -2219,7 +2200,7 @@ QSize QCalendarWidget::minimumSizeHint() const QStyleOption option; option.initFrom(this); - const int marginH = (style()->pixelMetric(QStyle::PM_FocusFrameHMargin, &option) + 1) * 2; + const int marginH = (style()->pixelMetric(QStyle::PM_FocusFrameHMargin, &option, this) + 1) * 2; if (horizontalHeaderFormat() == QCalendarWidget::NoHorizontalHeader) { rows = 6; @@ -2278,7 +2259,7 @@ QSize QCalendarWidget::minimumSizeHint() const headerW += monthW + buttonDecoMargin; fm = d->yearButton->fontMetrics(); - headerW += fm.boundingRect(QLatin1String("5555")).width() + buttonDecoMargin; + headerW += fm.boundingRect("5555"_L1).width() + buttonDecoMargin; headerSize = QSize(headerW, headerH); } @@ -2511,14 +2492,14 @@ void QCalendarWidget::showToday() \snippet code/src_gui_widgets_qcalendarwidget.cpp 1 \endtable - By default, the minimum date is the earliest date that the QDate - class can handle. - When setting a minimum date, the maximumDate and selectedDate properties are adjusted if the selection range becomes invalid. If the provided date is not a valid QDate object, the setMinimumDate() function does nothing. + The default minimum date is November 25, 4714 BCE. + You can restore this default by calling clearMinimumDate() (since Qt 6.6). + \sa setDateRange() */ @@ -2547,6 +2528,11 @@ void QCalendarWidget::setMinimumDate(QDate date) } } +void QCalendarWidget::clearMinimumDate() +{ + setMinimumDate(QDate::fromJulianDay(1)); +} + /*! \property QCalendarWidget::maximumDate \brief the maximum date of the currently specified date range. @@ -2562,14 +2548,14 @@ void QCalendarWidget::setMinimumDate(QDate date) \snippet code/src_gui_widgets_qcalendarwidget.cpp 2 \endtable - By default, the maximum date is the last day the QDate class can - handle. - When setting a maximum date, the minimumDate and selectedDate properties are adjusted if the selection range becomes invalid. If the provided date is not a valid QDate object, the setMaximumDate() function does nothing. + The default maximum date is December 31, 9999 CE. + You can restore this default by calling clearMaximumDate() (since Qt 6.6). + \sa setDateRange() */ @@ -2598,6 +2584,11 @@ void QCalendarWidget::setMaximumDate(QDate date) } } +void QCalendarWidget::clearMaximumDate() +{ + setMaximumDate(QDate(9999, 12, 31)); +} + /*! Defines a date range by setting the minimumDate and maximumDate properties. @@ -2882,7 +2873,7 @@ QMap<QDate, QTextCharFormat> QCalendarWidget::dateTextFormat() const } /*! - Returns a QTextCharFormat for \a date. The char format can be be + Returns a QTextCharFormat for \a date. The char format can be empty if the date is not renderd specially. */ QTextCharFormat QCalendarWidget::dateTextFormat(QDate date) const @@ -3108,6 +3099,7 @@ bool QCalendarWidget::event(QEvent *event) case QEvent::StyleChange: d->cachedSizeHint = QSize(); d->m_view->updateGeometry(); + break; default: break; } |