Revert "Fix name grouping feature for cyrillic names"

This reverts commit dc586ada63.

D22303 had a wrong diff.

CCBUG: 406867
This commit is contained in:
Elvis Angelaccio 2019-07-28 22:11:51 +02:00
parent 572d4e54bb
commit b8849f74aa

View file

@ -1905,8 +1905,30 @@ QList<QPair<int, QVariant> > KFileItemModel::nameRoleGroups() const
if (firstChar != newFirstChar) {
QString newGroupValue;
if (newFirstChar.isLetter()) {
// Put together compatibility equivalent letters like latin 'A' and umlaut 'A' from the German locale
newGroupValue = QString(newFirstChar).normalized(QString::NormalizationForm_KD).at(0);
// Try to find a matching group in the range 'A' to 'Z'.
static std::vector<QChar> lettersAtoZ;
lettersAtoZ.reserve('Z' - 'A' + 1);
if (lettersAtoZ.empty()) {
for (char c = 'A'; c <= 'Z'; ++c) {
lettersAtoZ.push_back(QLatin1Char(c));
}
}
auto localeAwareLessThan = [this](QChar c1, QChar c2) -> bool {
return m_collator.compare(c1, c2) < 0;
};
std::vector<QChar>::iterator it = std::lower_bound(lettersAtoZ.begin(), lettersAtoZ.end(), newFirstChar, localeAwareLessThan);
if (it != lettersAtoZ.end()) {
if (localeAwareLessThan(newFirstChar, *it) && it != lettersAtoZ.begin()) {
// newFirstChar belongs to the group preceding *it.
// Example: for an umlaut 'A' in the German locale, *it would be 'B' now.
--it;
}
newGroupValue = *it;
} else {
newGroupValue = newFirstChar;
}
} else if (newFirstChar >= QLatin1Char('0') && newFirstChar <= QLatin1Char('9')) {
// Apply group '0 - 9' for any name that starts with a digit
newGroupValue = i18nc("@title:group Groups that start with a digit", "0 - 9");