Provide macOS native toUpper() and toLower()
These functions are useful when ICU is not available, in the CI for example. It helps the CI pass the locale-related string conversion tests in qtdeclarative. Task-number: QTBUG-112898 Change-Id: I92cfda756b419cbcc438798b48824ef6c50c5d62 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
fe76b9e479
commit
cabdea9665
@ -3563,7 +3563,7 @@ Qt::LayoutDirection QLocale::textDirection() const
|
|||||||
*/
|
*/
|
||||||
QString QLocale::toUpper(const QString &str) const
|
QString QLocale::toUpper(const QString &str) const
|
||||||
{
|
{
|
||||||
#if !defined(QT_BOOTSTRAPPED) && (QT_CONFIG(icu) || defined(Q_OS_WIN))
|
#if !defined(QT_BOOTSTRAPPED) && (QT_CONFIG(icu) || defined(Q_OS_WIN) || defined(Q_OS_APPLE))
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
QString result = d->toUpper(str, &ok);
|
QString result = d->toUpper(str, &ok);
|
||||||
if (ok)
|
if (ok)
|
||||||
@ -3587,7 +3587,7 @@ QString QLocale::toUpper(const QString &str) const
|
|||||||
*/
|
*/
|
||||||
QString QLocale::toLower(const QString &str) const
|
QString QLocale::toLower(const QString &str) const
|
||||||
{
|
{
|
||||||
#if !defined(QT_BOOTSTRAPPED) && (QT_CONFIG(icu) || defined(Q_OS_WIN))
|
#if !defined(QT_BOOTSTRAPPED) && (QT_CONFIG(icu) || defined(Q_OS_WIN) || defined(Q_OS_APPLE))
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
const QString result = d->toLower(str, &ok);
|
const QString result = d->toLower(str, &ok);
|
||||||
if (ok)
|
if (ok)
|
||||||
|
@ -697,4 +697,40 @@ QVariant QSystemLocale::query(QueryType type, QVariant &&in) const
|
|||||||
|
|
||||||
#endif // QT_NO_SYSTEMLOCALE
|
#endif // QT_NO_SYSTEMLOCALE
|
||||||
|
|
||||||
|
#if !QT_CONFIG(icu)
|
||||||
|
|
||||||
|
static QString localeConvertString(const QByteArray &localeID, const QString &str, bool *ok,
|
||||||
|
bool toLowerCase)
|
||||||
|
{
|
||||||
|
QMacAutoReleasePool pool;
|
||||||
|
Q_ASSERT(ok);
|
||||||
|
NSString *localestring = [[NSString alloc] initWithData:localeID.toNSData()
|
||||||
|
encoding:NSUTF8StringEncoding];
|
||||||
|
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:localestring];
|
||||||
|
if (!locale) {
|
||||||
|
*ok = false;
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
*ok = true;
|
||||||
|
NSString *nsstring = str.toNSString();
|
||||||
|
if (toLowerCase)
|
||||||
|
nsstring = [nsstring lowercaseStringWithLocale:locale];
|
||||||
|
else
|
||||||
|
nsstring = [nsstring uppercaseStringWithLocale:locale];
|
||||||
|
|
||||||
|
return QString::fromNSString(nsstring);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QLocalePrivate::toLower(const QString &str, bool *ok) const
|
||||||
|
{
|
||||||
|
return localeConvertString(bcp47Name('-'), str, ok, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QLocalePrivate::toUpper(const QString &str, bool *ok) const
|
||||||
|
{
|
||||||
|
return localeConvertString(bcp47Name('-'), str, ok, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -552,10 +552,8 @@ public:
|
|||||||
|
|
||||||
[[nodiscard]] QLocale::MeasurementSystem measurementSystem() const;
|
[[nodiscard]] QLocale::MeasurementSystem measurementSystem() const;
|
||||||
|
|
||||||
#if QT_CONFIG(icu) || (defined(Q_OS_WIN) && !defined(QT_BOOTSTRAPPED))
|
|
||||||
[[nodiscard]] QString toUpper(const QString &str, bool *ok) const;
|
[[nodiscard]] QString toUpper(const QString &str, bool *ok) const;
|
||||||
[[nodiscard]] QString toLower(const QString &str, bool *ok) const;
|
[[nodiscard]] QString toLower(const QString &str, bool *ok) const;
|
||||||
#endif
|
|
||||||
|
|
||||||
// System locale has an m_data all its own; all others have m_data = locale_data + m_index
|
// System locale has an m_data all its own; all others have m_data = locale_data + m_index
|
||||||
const QLocaleData *const m_data;
|
const QLocaleData *const m_data;
|
||||||
|
@ -161,7 +161,7 @@ private slots:
|
|||||||
void lcsToCode();
|
void lcsToCode();
|
||||||
void codeToLcs();
|
void codeToLcs();
|
||||||
|
|
||||||
#if QT_CONFIG(icu) || defined(Q_OS_WIN)
|
#if QT_CONFIG(icu) || defined(Q_OS_WIN) || defined(Q_OS_APPLE)
|
||||||
void toLowerUpper_data();
|
void toLowerUpper_data();
|
||||||
void toLowerUpper();
|
void toLowerUpper();
|
||||||
|
|
||||||
@ -4777,7 +4777,7 @@ void tst_QLocale::codeToLcs()
|
|||||||
QCOMPARE(QLocale::codeToScript(QString("Hans")), QLocale::SimplifiedHanScript);
|
QCOMPARE(QLocale::codeToScript(QString("Hans")), QLocale::SimplifiedHanScript);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_CONFIG(icu) || defined(Q_OS_WIN)
|
#if QT_CONFIG(icu) || defined(Q_OS_WIN) || defined(Q_OS_APPLE)
|
||||||
void tst_QLocale::toLowerUpper_data()
|
void tst_QLocale::toLowerUpper_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QLocale>("locale");
|
QTest::addColumn<QLocale>("locale");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user