diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-08-26 14:13:08 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-08-27 20:28:53 +0000 |
commit | 0df8e70fbde912b7ee6a594112c13221ea338f72 (patch) | |
tree | c26a68e01796372582c1bbce5d32e12d6249a3d4 /src/corelib/text | |
parent | c276f3407d881c52775c56d22e1cb05d4ca54930 (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
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>
(cherry picked from commit 062d2831845eb07518d7c059b155a640bd0300f3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/corelib/text')
-rw-r--r-- | src/corelib/text/qlocale_mac.mm | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/corelib/text/qlocale_mac.mm b/src/corelib/text/qlocale_mac.mm index 5381f0f975..0c60b94254 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)); |