diff options
| author | Rafael Fernández López <[email protected]> | 2007-06-17 15:32:31 +0000 |
|---|---|---|
| committer | Rafael Fernández López <[email protected]> | 2007-06-17 15:32:31 +0000 |
| commit | 11f0a8c50310ebbcaa93318cb097077482268cdd (patch) | |
| tree | 06df222f3e7812bea96db8b8c1a40256547ec7b0 /src/dolphinitemcategorizer.cpp | |
| parent | 1c0341958df6d5cea0a2725afb6245ce498422b2 (diff) | |
New and powerful KListView. Still pending class renaming. There are two
methods that I need to think about it, and boost. Small issues like
reloading all data when sorting role suddenly changes. In general terms
it will work nice when you sort by name or size. We have to work further
when we sort by other roles. Nice times.
svn path=/trunk/KDE/kdebase/apps/; revision=676732
Diffstat (limited to 'src/dolphinitemcategorizer.cpp')
| -rw-r--r-- | src/dolphinitemcategorizer.cpp | 67 |
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; } |
