+ switch (index.column()) {
+ case KDirModel::Name: {
+ // KDirModel checks columns to know to which role are
+ // we talking about
+ const QModelIndex nameIndex = index.model()->index(index.row(), KDirModel::Name, index.parent());
+ if (!nameIndex.isValid()) {
+ return retString;
+ }
+ const QVariant data = nameIndex.model()->data(nameIndex, Qt::DisplayRole);
+ const QString name = data.toString();
+ if (!name.isEmpty()) {
+ if (!item.isHidden() && name.at(0).isLetter())
+ retString = name.at(0).toUpper();
+ else if (item.isHidden()) {
+ if (name.at(0) == '.') {
+ if (name.size() > 1 && name.at(1).isLetter()) {
+ retString = name.at(1).toUpper();
+ } else {
+ retString = i18nc("@title:group Name", m_others);
+ }
+ } else {
+ retString = name.at(0).toUpper();
+ }
+ } else {
+ bool validCategory = false;
+
+ const QString str(name.toUpper());
+ const QChar* currA = str.unicode();
+ while (!currA->isNull() && !validCategory) {
+ if (currA->isLetter()) {
+ validCategory = true;
+ } else if (currA->isDigit()) {
+ return i18nc("@title:group Name", m_others);
+ } else {
+ ++currA;
+ }
+ }