Tidy up macToQtFormat() in Darwin system locale backend
Impose standard Qt indent. Within each set of cases grouped together, impose alphabetic order. Made formatting of ranges in comments terser, for two-value ranges. Fix errors: * the 'j' field should not arise and has a 'J' partner * The 'c', 'e' and 'E' forms' numeric variants are still day of the week, so should not be mapped to 'd' or 'dd', which are day of the month. Qt date formats only actually support long and short, not narrow, despite the QLocale::Format having a NarrowFormat. Other errors and infelicities shall be addressed in later work, in tandem with changes to dateconverter.py that are coming. Task-number: QTBUG-123872 Change-Id: I61bf363d2598502f8bfc0d67245eae1b41858147 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit e04f7d0d2779a7ee47f7cea2d3b6f6f93fd286c8)
This commit is contained in:
parent
febed4c265
commit
e78b7e7010
@ -323,99 +323,96 @@ static QVariant macToQtFormat(QStringView sys_fmt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QChar c = sys_fmt.at(i);
|
QChar c = sys_fmt.at(i);
|
||||||
qsizetype repeat = qt_repeatCount(sys_fmt.mid(i));
|
qsizetype repeat = qt_repeatCount(sys_fmt.sliced(i));
|
||||||
|
|
||||||
switch (c.unicode()) {
|
switch (c.unicode()) {
|
||||||
// Qt does not support the following options
|
// Qt does not support the following options
|
||||||
case 'G': // Era (1..5): 4 = long, 1..3 = short, 5 = narrow
|
case 'A': // Milliseconds in Day (1..n): 1..n = padded number
|
||||||
case 'Y': // Year of Week (1..n): 1..n = padded number
|
case 'C': // Input skeleton symbol.
|
||||||
case 'U': // Cyclic Year Name (1..5): 4 = long, 1..3 = short, 5 = narrow
|
case 'D': // Day of Year (1..3): 1..3 = padded number
|
||||||
case 'Q': // Quarter (1..4): 4 = long, 3 = short, 1..2 = padded number
|
case 'F': // Day of Week in Month (1): 1 = number
|
||||||
case 'q': // Standalone Quarter (1..4): 4 = long, 3 = short, 1..2 = padded number
|
case 'g': // Modified Julian Day (1..n): 1..n = padded number
|
||||||
case 'w': // Week of Year (1..2): 1..2 = padded number
|
case 'G': // Era (1..5): 4 = long, 1..3 = short, 5 = narrow
|
||||||
case 'W': // Week of Month (1): 1 = number
|
case 'j': // Input skeleton symbol.
|
||||||
case 'D': // Day of Year (1..3): 1..3 = padded number
|
case 'J': // Input skeleton symbol.
|
||||||
case 'F': // Day of Week in Month (1): 1 = number
|
case 'l': // Deprecated Chinese leap month indicator.
|
||||||
case 'g': // Modified Julian Day (1..n): 1..n = padded number
|
case 'q': // Standalone Quarter (1..4): 4 = long, 3 = short, 1,2 = padded number
|
||||||
case 'A': // Milliseconds in Day (1..n): 1..n = padded number
|
case 'Q': // Quarter (1..4): 4 = long, 3 = short, 1,2 = padded number
|
||||||
break;
|
case 'U': // Cyclic Year Name (1..5): 4 = long, 1..3 = short, 5 = narrow
|
||||||
|
case 'w': // Week of Year (1,2): 1,2 = padded number
|
||||||
|
case 'W': // Week of Month (1): 1 = number
|
||||||
|
case 'Y': // Year for Week-of-year calendars (1..n): 1..n = padded number
|
||||||
|
break;
|
||||||
|
|
||||||
case 'y': // Year (1..n): 2 = short year, 1 & 3..n = padded number
|
case 'u': // Extended Year (1..n): 2 = short year, 1 & 3..n = padded number
|
||||||
case 'u': // Extended Year (1..n): 2 = short year, 1 & 3..n = padded number
|
case 'y': // Year (1..n): 2 = short year, 1 & 3..n = padded number
|
||||||
// Qt only supports long (4) or short (2) year, use long for all others
|
// Qt only supports long (4) or short (2) year, use long for all others
|
||||||
if (repeat == 2)
|
if (repeat == 2)
|
||||||
result += "yy"_L1;
|
result += "yy"_L1;
|
||||||
else
|
else
|
||||||
result += "yyyy"_L1;
|
result += "yyyy"_L1;
|
||||||
break;
|
break;
|
||||||
case 'M': // Month (1..5): 4 = long, 3 = short, 1..2 = number, 5 = narrow
|
case 'L': // Standalone Month (1..5): 4 = long, 3 = short, 1,2 = number, 5 = narrow
|
||||||
case 'L': // Standalone Month (1..5): 4 = long, 3 = short, 1..2 = number, 5 = narrow
|
case 'M': // Month (1..5): 4 = long, 3 = short, 1,2 = number, 5 = narrow
|
||||||
// Qt only supports long, short and number, use short for narrow
|
// Qt only supports long, short and number, use short for narrow
|
||||||
if (repeat == 5)
|
if (repeat == 5)
|
||||||
result += "MMM"_L1;
|
result += "MMM"_L1;
|
||||||
else
|
else
|
||||||
result += QString(repeat, u'M');
|
result += QString(repeat, u'M');
|
||||||
break;
|
break;
|
||||||
case 'd': // Day of Month (1..2): 1..2 padded number
|
case 'd': // Day of Month (1,2): 1,2 padded number
|
||||||
|
result += QString(repeat, c);
|
||||||
|
break;
|
||||||
|
case 'c': // Standalone version of 'e'
|
||||||
|
case 'e': // Local Day of Week (1..6): 4 = long, 3 = short, 5,6 = narrow, 1,2 padded number
|
||||||
|
// "Local" only affects numeric form: depends on locale's start-day of the week.
|
||||||
|
case 'E': // Day of Week (1..6): 4 = long, 1..3 = short, 5,6 = narrow
|
||||||
|
// Qt only supports long, short: use short for narrow and padded number.
|
||||||
|
if (repeat == 4)
|
||||||
|
result += "dddd"_L1;
|
||||||
|
else
|
||||||
|
result += "ddd"_L1;
|
||||||
|
break;
|
||||||
|
case 'a': // AM/PM (1): 1 = short
|
||||||
|
// Translate to Qt uppercase AM/PM
|
||||||
|
result += "AP"_L1;
|
||||||
|
break;
|
||||||
|
case 'h': // Hour [1..12] (1,2): 1,2 = padded number
|
||||||
|
case 'K': // Hour [0..11] (1,2): 1,2 = padded number
|
||||||
|
result += QString(repeat, 'h'_L1);
|
||||||
|
break;
|
||||||
|
case 'H': // Hour [0..23] (1,2): 1,2 = padded number
|
||||||
|
case 'k': // Hour [1..24] (1,2): 1,2 = padded number
|
||||||
|
// Qt H is 0..23 hour
|
||||||
|
result += QString(repeat, 'H'_L1);
|
||||||
|
break;
|
||||||
|
case 'm': // Minutes (1,2): 1,2 = padded number
|
||||||
|
case 's': // Seconds (1,2): 1,2 = padded number
|
||||||
|
result += QString(repeat, c);
|
||||||
|
break;
|
||||||
|
case 'S': // Fractional second (1..n): 1..n = truncates to decimal places
|
||||||
|
// Qt uses msecs either unpadded or padded to 3 places
|
||||||
|
if (repeat < 3)
|
||||||
|
result += u'z';
|
||||||
|
else
|
||||||
|
result += "zzz"_L1;
|
||||||
|
break;
|
||||||
|
case 'O': // Time Zone (1, 4)
|
||||||
|
case 'v': // Time Zone (1, 4)
|
||||||
|
case 'V': // Time Zone (1..4)
|
||||||
|
case 'x': // Time Zone (1..5)
|
||||||
|
case 'X': // Time Zone (1..5)
|
||||||
|
case 'z': // Time Zone (1..4)
|
||||||
|
case 'Z': // Time Zone (1..5)
|
||||||
|
result += u't';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// a..z and A..Z are reserved for format codes, so any occurrence of these not
|
||||||
|
// already processed are not known and so unsupported formats to be ignored.
|
||||||
|
// All other chars are allowed as literals.
|
||||||
|
if (c < u'A' || c > u'z' || (c > u'Z' && c < u'a'))
|
||||||
result += QString(repeat, c);
|
result += QString(repeat, c);
|
||||||
break;
|
break;
|
||||||
case 'E': // Day of Week (1..6): 4 = long, 1..3 = short, 5..6 = narrow
|
|
||||||
// Qt only supports long, short and padded number, use short for narrow
|
|
||||||
if (repeat == 4)
|
|
||||||
result += "dddd"_L1;
|
|
||||||
else
|
|
||||||
result += "ddd"_L1;
|
|
||||||
break;
|
|
||||||
case 'e': // Local Day of Week (1..6): 4 = long, 3 = short, 5..6 = narrow, 1..2 padded number
|
|
||||||
case 'c': // Standalone Local Day of Week (1..6): 4 = long, 3 = short, 5..6 = narrow, 1..2 padded number
|
|
||||||
// Qt only supports long, short and padded number, use short for narrow
|
|
||||||
if (repeat >= 5)
|
|
||||||
result += "ddd"_L1;
|
|
||||||
else
|
|
||||||
result += QString(repeat, 'd'_L1);
|
|
||||||
break;
|
|
||||||
case 'a': // AM/PM (1): 1 = short
|
|
||||||
// Translate to Qt uppercase AM/PM
|
|
||||||
result += "AP"_L1;
|
|
||||||
break;
|
|
||||||
case 'h': // Hour [1..12] (1..2): 1..2 = padded number
|
|
||||||
case 'K': // Hour [0..11] (1..2): 1..2 = padded number
|
|
||||||
case 'j': // Local Hour [12 or 24] (1..2): 1..2 = padded number
|
|
||||||
// Qt h is local hour
|
|
||||||
result += QString(repeat, 'h'_L1);
|
|
||||||
break;
|
|
||||||
case 'H': // Hour [0..23] (1..2): 1..2 = padded number
|
|
||||||
case 'k': // Hour [1..24] (1..2): 1..2 = padded number
|
|
||||||
// Qt H is 0..23 hour
|
|
||||||
result += QString(repeat, 'H'_L1);
|
|
||||||
break;
|
|
||||||
case 'm': // Minutes (1..2): 1..2 = padded number
|
|
||||||
case 's': // Seconds (1..2): 1..2 = padded number
|
|
||||||
result += QString(repeat, c);
|
|
||||||
break;
|
|
||||||
case 'S': // Fractional second (1..n): 1..n = truncates to decimal places
|
|
||||||
// Qt uses msecs either unpadded or padded to 3 places
|
|
||||||
if (repeat < 3)
|
|
||||||
result += u'z';
|
|
||||||
else
|
|
||||||
result += "zzz"_L1;
|
|
||||||
break;
|
|
||||||
case 'z': // Time Zone (1..4)
|
|
||||||
case 'Z': // Time Zone (1..5)
|
|
||||||
case 'O': // Time Zone (1, 4)
|
|
||||||
case 'v': // Time Zone (1, 4)
|
|
||||||
case 'V': // Time Zone (1..4)
|
|
||||||
case 'X': // Time Zone (1..5)
|
|
||||||
case 'x': // Time Zone (1..5)
|
|
||||||
result += u't';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// a..z and A..Z are reserved for format codes, so any occurrence of these not
|
|
||||||
// already processed are not known and so unsupported formats to be ignored.
|
|
||||||
// All other chars are allowed as literals.
|
|
||||||
if (c < u'A' || c > u'z' || (c > u'Z' && c < u'a'))
|
|
||||||
result += QString(repeat, c);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i += repeat;
|
i += repeat;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user