Make public QLocale's constant for the two-digit-year base
The private QLocale::FirstTwoDigitYear constant, which is used as a default value for the parameters in some methods, causes troubles for Qt for Python Team, because they need to use the default values in the binding code. It also potentially create some inconveniences for the users who want to write functions wrapping these methods. The name is also confusing, because, when read out of context, it implies that there might be SecondTwoDigitYear, etc... Rename QLocale::FirstTwoDigitYear to QLocale::DefaultTwoDigitBaseYear and make it public. Now when the constant is public, we can use it in QDate, instead of introducing another constant, so do that. The qdatetime.h header already includes qlocale.h via qcalendar.h, but, rather than relying on this transitive include, add it explicitly. As pointed out by Thiago [1], the static constexpr members of exported classes need out-of-line definitions, so add such definition to qlocale.cpp. Amends 41f84f3ddb780ec751e3fc706dd242fc4a99de7a Found in 6.7 API review. [1]: https://lists.qt-project.org/pipermail/development/2024-January/044888.html Change-Id: Ib3c6f1d5b181968bf311fd0435173e025a369865 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit cde7d5d3ff56fdf219771c65bf93f3f08757f154) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
4f1752a6b9
commit
c32b15f119
@ -794,42 +794,42 @@ QString QLocale::bcp47Name() const
|
||||
|
||||
QDate QLocale::toDate(const QString &string, FormatType format) const
|
||||
{
|
||||
return toDate(string, dateFormat(format), FirstTwoDigitYear);
|
||||
return toDate(string, dateFormat(format), DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDate QLocale::toDate(const QString &string, FormatType format, QCalendar cal) const
|
||||
{
|
||||
return toDate(string, dateFormat(format), cal, FirstTwoDigitYear);
|
||||
return toDate(string, dateFormat(format), cal, DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDateTime QLocale::toDateTime(const QString &string, FormatType format) const
|
||||
{
|
||||
return toDateTime(string, dateTimeFormat(format), FirstTwoDigitYear);
|
||||
return toDateTime(string, dateTimeFormat(format), DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDateTime QLocale::toDateTime(const QString &string, FormatType format, QCalendar cal) const
|
||||
{
|
||||
return toDateTime(string, dateTimeFormat(format), cal, FirstTwoDigitYear);
|
||||
return toDateTime(string, dateTimeFormat(format), cal, DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDate QLocale::toDate(const QString &string, const QString &format) const
|
||||
{
|
||||
return toDate(string, format, QCalendar(), FirstTwoDigitYear);
|
||||
return toDate(string, format, QCalendar(), DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDate QLocale::toDate(const QString &string, const QString &format, QCalendar cal) const
|
||||
{
|
||||
return toDate(string, format, cal, FirstTwoDigitYear);
|
||||
return toDate(string, format, cal, DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDateTime QLocale::toDateTime(const QString &string, const QString &format) const
|
||||
{
|
||||
return toDateTime(string, format, QCalendar(), FirstTwoDigitYear);
|
||||
return toDateTime(string, format, QCalendar(), DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
QDateTime QLocale::toDateTime(const QString &string, const QString &format, QCalendar cal) const
|
||||
{
|
||||
return toDateTime(string, format, cal, FirstTwoDigitYear);
|
||||
return toDateTime(string, format, cal, DefaultTwoDigitBaseYear);
|
||||
}
|
||||
|
||||
#include "qobject.h"
|
||||
|
@ -54,6 +54,8 @@ QT_WARNING_DISABLE_GCC("-Wfree-nonheap-object") // false positive tracking
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
constexpr int QLocale::DefaultTwoDigitBaseYear;
|
||||
|
||||
QT_IMPL_METATYPE_EXTERN_TAGGED(QList<Qt::DayOfWeek>, QList_Qt__DayOfWeek)
|
||||
#ifndef QT_NO_SYSTEMLOCALE
|
||||
QT_IMPL_METATYPE_EXTERN_TAGGED(QSystemLocale::CurrencyToStringArgument,
|
||||
@ -1001,6 +1003,21 @@ QLocale::QLocale(QLocalePrivate &dd)
|
||||
: d(&dd)
|
||||
{}
|
||||
|
||||
/*!
|
||||
\variable QLocale::DefaultTwoDigitBaseYear
|
||||
\since 6.7
|
||||
|
||||
\brief The default start year of the century within which a format taking
|
||||
a two-digit year will select. The value of the constant is \c {1900}.
|
||||
|
||||
Some locales use, particularly for ShortFormat, only the last two digits of
|
||||
the year. Proir to 6.7 the year 1900 was always used as a base year for
|
||||
such cases. Now various QLocale and QDate functions have the overloads that
|
||||
allow callers to specify the base year, and this constant is used as its
|
||||
default value.
|
||||
|
||||
\sa toDate(), toDateTime(), QDate::fromString(), QDateTime::fromString()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\since 6.3
|
||||
|
@ -35,9 +35,9 @@ class Q_CORE_EXPORT QLocale
|
||||
friend class QTextStream;
|
||||
friend class QTextStreamPrivate;
|
||||
|
||||
static constexpr int FirstTwoDigitYear = 1900; // sync with QDate
|
||||
|
||||
public:
|
||||
static constexpr int DefaultTwoDigitBaseYear = 1900;
|
||||
|
||||
// see qlocale_data_p.h for more info on generated data
|
||||
// GENERATED PART STARTS HERE
|
||||
enum Language : ushort {
|
||||
@ -1030,22 +1030,22 @@ public:
|
||||
QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal) const;
|
||||
# endif
|
||||
QDate toDate(const QString &string, FormatType = LongFormat,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
QDate toDate(const QString &string, const QString &format,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
QDateTime toDateTime(const QString &string, FormatType format = LongFormat,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
QDateTime toDateTime(const QString &string, const QString &format,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
// Calendar-aware API
|
||||
QDate toDate(const QString &string, FormatType format, QCalendar cal,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
QDate toDate(const QString &string, const QString &format, QCalendar cal,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal,
|
||||
int baseYear = FirstTwoDigitYear) const;
|
||||
int baseYear = DefaultTwoDigitBaseYear) const;
|
||||
#endif
|
||||
|
||||
QString decimalPoint() const;
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
#include <QtCore/qcalendar.h>
|
||||
#include <QtCore/qcompare.h>
|
||||
#include <QtCore/qlocale.h>
|
||||
#include <QtCore/qnamespace.h>
|
||||
#include <QtCore/qshareddata.h>
|
||||
#include <QtCore/qstring.h>
|
||||
@ -27,7 +28,6 @@ class QDateTime;
|
||||
class Q_CORE_EXPORT QDate
|
||||
{
|
||||
explicit constexpr QDate(qint64 julianDay) : jd(julianDay) {}
|
||||
static constexpr int FirstTwoDigitYear = 1900; // sync with QLocale
|
||||
public:
|
||||
constexpr QDate() : jd(nullJd()) {}
|
||||
QDate(int y, int m, int d);
|
||||
@ -135,21 +135,24 @@ public:
|
||||
|
||||
// Accept calendar without over-ride of base year:
|
||||
static QDate fromString(QStringView string, QStringView format, QCalendar cal)
|
||||
{ return fromString(string.toString(), format, FirstTwoDigitYear, cal); }
|
||||
{ return fromString(string.toString(), format, QLocale::DefaultTwoDigitBaseYear, cal); }
|
||||
QT_CORE_INLINE_SINCE(6, 7)
|
||||
static QDate fromString(const QString &string, QStringView format, QCalendar cal);
|
||||
static QDate fromString(const QString &string, const QString &format, QCalendar cal)
|
||||
{ return fromString(string, qToStringViewIgnoringNull(format), FirstTwoDigitYear, cal); }
|
||||
{ return fromString(string, qToStringViewIgnoringNull(format), QLocale::DefaultTwoDigitBaseYear, cal); }
|
||||
|
||||
// Overriding base year is likely more common than overriding calendar (and
|
||||
// likely to get more so, as the legacy base drops ever further behind us).
|
||||
static QDate fromString(QStringView string, QStringView format,
|
||||
int baseYear = FirstTwoDigitYear, QCalendar cal = QCalendar())
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear,
|
||||
QCalendar cal = QCalendar())
|
||||
{ return fromString(string.toString(), format, baseYear, cal); }
|
||||
static QDate fromString(const QString &string, QStringView format,
|
||||
int baseYear = FirstTwoDigitYear, QCalendar cal = QCalendar());
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear,
|
||||
QCalendar cal = QCalendar());
|
||||
static QDate fromString(const QString &string, const QString &format,
|
||||
int baseYear = FirstTwoDigitYear, QCalendar cal = QCalendar())
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear,
|
||||
QCalendar cal = QCalendar())
|
||||
{ return fromString(string, qToStringViewIgnoringNull(format), baseYear, cal); }
|
||||
#endif
|
||||
static bool isValid(int y, int m, int d);
|
||||
@ -439,23 +442,23 @@ public:
|
||||
|
||||
// Accept calendar without over-ride of base year:
|
||||
static QDateTime fromString(QStringView string, QStringView format, QCalendar cal)
|
||||
{ return fromString(string.toString(), format, QDate::FirstTwoDigitYear, cal); }
|
||||
{ return fromString(string.toString(), format, QLocale::DefaultTwoDigitBaseYear, cal); }
|
||||
QT_CORE_INLINE_SINCE(6, 7)
|
||||
static QDateTime fromString(const QString &string, QStringView format, QCalendar cal);
|
||||
static QDateTime fromString(const QString &string, const QString &format, QCalendar cal)
|
||||
{ return fromString(string, qToStringViewIgnoringNull(format), QDate::FirstTwoDigitYear, cal); }
|
||||
{ return fromString(string, qToStringViewIgnoringNull(format), QLocale::DefaultTwoDigitBaseYear, cal); }
|
||||
|
||||
// Overriding base year is likely more common than overriding calendar (and
|
||||
// likely to get more so, as the legacy base drops ever further behind us).
|
||||
static QDateTime fromString(QStringView string, QStringView format,
|
||||
int baseYear = QDate::FirstTwoDigitYear,
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear,
|
||||
QCalendar cal = QCalendar())
|
||||
{ return fromString(string.toString(), format, baseYear, cal); }
|
||||
static QDateTime fromString(const QString &string, QStringView format,
|
||||
int baseYear = QDate::FirstTwoDigitYear,
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear,
|
||||
QCalendar cal = QCalendar());
|
||||
static QDateTime fromString(const QString &string, const QString &format,
|
||||
int baseYear = QDate::FirstTwoDigitYear,
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear,
|
||||
QCalendar cal = QCalendar())
|
||||
{ return fromString(string, qToStringViewIgnoringNull(format), baseYear, cal); }
|
||||
#endif
|
||||
@ -626,12 +629,12 @@ Q_CORE_EXPORT size_t qHash(QTime key, size_t seed = 0) noexcept;
|
||||
#if QT_CORE_INLINE_IMPL_SINCE(6, 7)
|
||||
QDate QDate::fromString(const QString &string, QStringView format, QCalendar cal)
|
||||
{
|
||||
return fromString(string, format, FirstTwoDigitYear, cal);
|
||||
return fromString(string, format, QLocale::DefaultTwoDigitBaseYear, cal);
|
||||
}
|
||||
|
||||
QDateTime QDateTime::fromString(const QString &string, QStringView format, QCalendar cal)
|
||||
{
|
||||
return fromString(string, format, QDate::FirstTwoDigitYear, cal);
|
||||
return fromString(string, format, QLocale::DefaultTwoDigitBaseYear, cal);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -137,7 +137,7 @@ public:
|
||||
StateNode parse(const QString &input, int position,
|
||||
const QDateTime &defaultValue, bool fixup) const;
|
||||
bool fromString(const QString &text, QDate *date, QTime *time,
|
||||
int baseYear = QDate::FirstTwoDigitYear) const;
|
||||
int baseYear = QLocale::DefaultTwoDigitBaseYear) const;
|
||||
bool fromString(const QString &text, QDateTime *datetime, int baseYear) const;
|
||||
bool parseFormat(QStringView format);
|
||||
|
||||
@ -236,7 +236,7 @@ protected: // for the benefit of QDateTimeEditPrivate
|
||||
virtual QLocale locale() const { return defaultLocale; }
|
||||
|
||||
mutable int currentSectionIndex = int(NoSectionIndex);
|
||||
mutable int defaultCenturyStart = QDate::FirstTwoDigitYear;
|
||||
mutable int defaultCenturyStart = QLocale::DefaultTwoDigitBaseYear;
|
||||
Sections display;
|
||||
/*
|
||||
This stores the most recently selected day.
|
||||
|
Loading…
x
Reference in New Issue
Block a user