summaryrefslogtreecommitdiffstats
path: root/src/corelib/text
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-08-26 14:13:08 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-08-27 18:58:21 +0200
commit062d2831845eb07518d7c059b155a640bd0300f3 (patch)
treebba0d2716cf74d666fd618c6c74cac1135db64be /src/corelib/text
parentbba0bdb35c2806bcdde8e89965e99b3d412b8d3a (diff)
macOS: fix standaloneMonthName implementation for system locale
macOS has specific formatters for the standalone month names, so use them. Change-Id: Ic4ad547c7d1c29d71c85f60301acd5a5f0f263d2 Fixes: QTBUG-86191 Pick-to: 5.15 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Evgeniy Dushistov <dushistov@mail.ru> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/text')
-rw-r--r--src/corelib/text/qlocale_mac.mm28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/corelib/text/qlocale_mac.mm b/src/corelib/text/qlocale_mac.mm
index 95c8769096..586b68b4d8 100644
--- a/src/corelib/text/qlocale_mac.mm
+++ b/src/corelib/text/qlocale_mac.mm
@@ -81,7 +81,7 @@ static QString getMacLocaleName()
return result;
}
-static QString macMonthName(int month, bool short_format)
+static QString macMonthName(int month, QSystemLocale::QueryType type)
{
month -= 1;
if (month < 0 || month > 11)
@@ -90,10 +90,28 @@ static QString macMonthName(int month, bool short_format)
QCFType<CFDateFormatterRef> formatter
= CFDateFormatterCreate(0, QCFType<CFLocaleRef>(CFLocaleCopyCurrent()),
kCFDateFormatterNoStyle, kCFDateFormatterNoStyle);
+
+ CFDateFormatterKey formatterType;
+ switch (type) {
+ case QSystemLocale::MonthNameLong:
+ formatterType = kCFDateFormatterMonthSymbols;
+ break;
+ case QSystemLocale::MonthNameShort:
+ formatterType = kCFDateFormatterShortMonthSymbols;
+ break;
+ case QSystemLocale::StandaloneMonthNameLong:
+ formatterType = kCFDateFormatterStandaloneMonthSymbols;
+ break;
+ case QSystemLocale::StandaloneMonthNameShort:
+ formatterType = kCFDateFormatterShortStandaloneMonthSymbols;
+ break;
+ default:
+ qWarning("macMonthName: Unsupported query type %d", type);
+ return QString();
+ }
QCFType<CFArrayRef> values
- = static_cast<CFArrayRef>(CFDateFormatterCopyProperty(formatter,
- short_format ? kCFDateFormatterShortMonthSymbols
- : kCFDateFormatterMonthSymbols));
+ = static_cast<CFArrayRef>(CFDateFormatterCopyProperty(formatter, formatterType));
+
if (values != 0) {
CFStringRef cfstring = static_cast<CFStringRef>(CFArrayGetValueAtIndex(values, month));
return QString::fromCFString(cfstring);
@@ -434,7 +452,7 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
case MonthNameShort:
case StandaloneMonthNameLong:
case StandaloneMonthNameShort:
- return macMonthName(in.toInt(), (type == MonthNameShort || type == StandaloneMonthNameShort));
+ return macMonthName(in.toInt(), type);
case DateToStringShort:
case DateToStringLong:
return macDateToString(in.toDate(), (type == DateToStringShort));