┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinitemcategorizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dolphinitemcategorizer.cpp')
-rw-r--r--src/dolphinitemcategorizer.cpp67
1 files changed, 54 insertions, 13 deletions
diff --git a/src/dolphinitemcategorizer.cpp b/src/dolphinitemcategorizer.cpp
index 05c23a01d..cea6bebd5 100644
--- a/src/dolphinitemcategorizer.cpp
+++ b/src/dolphinitemcategorizer.cpp
@@ -41,38 +41,79 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index,
{
QString retString;
- if (!index.isValid()) {
+ if (!index.isValid())
+ {
+ return retString;
+ }
+
+ int indexColumn;
+
+ switch (sortRole)
+ {
+ case DolphinView::SortByName:
+ indexColumn = KDirModel::Name;
+ break;
+ case DolphinView::SortBySize:
+ indexColumn = KDirModel::Size;
+ break;
+ default:
return retString;
}
// KDirModel checks columns to know to which role are
// we talking about
QModelIndex theIndex = index.model()->index(index.row(),
- sortRole,
+ indexColumn,
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);
+ const KDirModel *dirModel = qobject_cast<const KDirModel*>(index.model());
+ KFileItem* item = dirModel->itemForIndex(index);
- switch (sortRole) {
+ switch (sortRole)
+ {
case DolphinView::SortByName:
- retString = data.toString().toUpper().at(0);
+ 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 = i18n(".%1 (Hidden)", data.toString().toUpper().at(1));
+ else if (item->isHidden() && data.toString().at(0) == '.' &&
+ !data.toString().at(1).isLetter())
+ retString = i18n("Others (Hidden)");
+ else if (item->isHidden() && data.toString().at(0) != '.')
+ retString = i18n("%1 (Hidden)", data.toString().toUpper().at(0));
+ else if (item->isHidden())
+ retString = data.toString().toUpper().at(0);
+ else
+ retString = i18n("Others");
+ }
break;
case DolphinView::SortBySize:
int fileSize = (item) ? item->size() : -1;
- if (item && item->isDir()) {
- retString = i18n("Unknown");
- } else if (fileSize < 5242880) {
+ if (item && item->isDir() && !item->isHidden()) {
+ retString = i18n("Folders");
+ } else if (fileSize < 5242880 && !item->isHidden()) {
retString = i18n("Small");
- } else if (fileSize < 10485760) {
+ } else if (fileSize < 10485760 && !item->isHidden()) {
retString = i18n("Medium");
- } else {
+ } else if (!item->isHidden()){
retString = i18n("Big");
+ } else if (item && item->isDir() && item->isHidden()) {
+ retString = i18n("Folders (Hidden)");
+ } else if (fileSize < 5242880 && item->isHidden()) {
+ retString = i18n("Small (Hidden)");
+ } else if (fileSize < 10485760 && item->isHidden()) {
+ retString = i18n("Medium (Hidden)");
+ } else if (item->isHidden()){
+ retString = i18n("Big (Hidden)");
}
break;
}