#include <klocale.h>
#include <kdirmodel.h>
-#include <QSortFilterProxyModel>
+#include <QtGui/QSortFilterProxyModel>
DolphinItemCategorizer::DolphinItemCategorizer() :
KItemCategorizer()
{
QString retString;
- if (!index.isValid()) {
+ if (!index.isValid())
+ {
return retString;
}
// KDirModel checks columns to know to which role are
// we talking about
QModelIndex theIndex = index.model()->index(index.row(),
- sortRole,
- index.parent());
+ sortRole,
+ index.parent());
- const QSortFilterProxyModel* proxyModel = static_cast<const QSortFilterProxyModel*>(index.model());
- const KDirModel* dirModel = static_cast<const KDirModel*>(proxyModel->sourceModel());
+ if (!theIndex.isValid()) {
+ return retString;
+ }
QVariant data = theIndex.model()->data(theIndex, Qt::DisplayRole);
- QModelIndex mappedIndex = proxyModel->mapToSource(theIndex);
- KFileItem* item = dirModel->itemForIndex(mappedIndex);
-
- switch (sortRole) {
- case DolphinView::SortByName:
- retString = data.toString().toUpper().at(0);
- break;
- case DolphinView::SortBySize:
- int fileSize = (item) ? item->size() : -1;
- if (item && item->isDir()) {
- retString = i18n("Unknown");
- } else if (fileSize < 5242880) {
- retString = i18n("Small");
- } else if (fileSize < 10485760) {
- retString = i18n("Medium");
- } else {
- retString = i18n("Big");
- }
- break;
+ const KDirModel *dirModel = qobject_cast<const KDirModel*>(index.model());
+ KFileItem *item = dirModel->itemForIndex(index);
+ int fileSize;
+
+ switch (sortRole)
+ {
+ case KDirModel::Name:
+ if (data.toString().size())
+ {
+ if (!item->isHidden() && data.toString().at(0).isLetter())
+ retString = data.toString().toUpper().at(0);
+ else if (item->isHidden() && data.toString().at(0) == '.' &&
+ data.toString().at(1).isLetter())
+ retString = data.toString().toUpper().at(1);
+ else if (item->isHidden() && data.toString().at(0) == '.' &&
+ !data.toString().at(1).isLetter())
+ retString = i18n("Others");
+ else if (item->isHidden() && data.toString().at(0) != '.')
+ retString = data.toString().toUpper().at(0);
+ else if (item->isHidden())
+ retString = data.toString().toUpper().at(0);
+ else
+ retString = i18n("Others");
+ }
+ break;
+
+ case KDirModel::Size:
+ fileSize = (item) ? item->size() : -1;
+ if (item && item->isDir()) {
+ retString = i18n("Folders");
+ } else if (fileSize < 5242880) {
+ retString = i18nc("Size", "Small");
+ } else if (fileSize < 10485760) {
+ retString = i18nc("Size", "Medium");
+ } else {
+ retString = i18nc("Size", "Big");
+ }
+ break;
+
+ case KDirModel::Type:
+ retString = item->mimeComment();
+ break;
}
return retString;