diff options
| author | Rafael Fernández López <[email protected]> | 2007-06-18 12:36:54 +0000 |
|---|---|---|
| committer | Rafael Fernández López <[email protected]> | 2007-06-18 12:36:54 +0000 |
| commit | 41a8be4de41ed84345f9081fc8eedf970d656559 (patch) | |
| tree | 61f8dc7c7b2ea52f6941501ab56699bdbf49c91a /src/dolphinitemcategorizer.cpp | |
| parent | 55a876af21f67dfd5d57a92633f2dd3a2b5dc5ca (diff) | |
Sort by date finished. Add speed improvement when comparing strings. enum adaptations.
CCMAIL: [email protected]
svn path=/trunk/KDE/kdebase/apps/; revision=677083
Diffstat (limited to 'src/dolphinitemcategorizer.cpp')
| -rw-r--r-- | src/dolphinitemcategorizer.cpp | 68 |
1 files changed, 63 insertions, 5 deletions
diff --git a/src/dolphinitemcategorizer.cpp b/src/dolphinitemcategorizer.cpp index 0f55881c4..9343b137d 100644 --- a/src/dolphinitemcategorizer.cpp +++ b/src/dolphinitemcategorizer.cpp @@ -24,6 +24,7 @@ #include <klocale.h> #include <kdirmodel.h> +#include <kdatetime.h> #include <QtGui/QSortFilterProxyModel> @@ -46,10 +47,39 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index, return retString; } + int column; + + switch (sortRole) + { + case DolphinView::SortByName: // KDirModel::Name + column = KDirModel::Name; + break; + case DolphinView::SortBySize: // KDirModel::Size + column = KDirModel::Size; + break; + case DolphinView::SortByDate: // KDirModel::ModifiedTime + column = KDirModel::ModifiedTime; + break; + case DolphinView::SortByPermissions: // KDirModel::Permissions + column = KDirModel::Permissions; + break; + case DolphinView::SortByOwner: // KDirModel::Owner + column = KDirModel::Owner; + break; + case DolphinView::SortByGroup: // KDirModel::Group + column = KDirModel::Group; + break; + case DolphinView::SortByType: // KDirModel::Type + column = KDirModel::Type; + break; + default: + column = KDirModel::Name; + } + // KDirModel checks columns to know to which role are // we talking about QModelIndex theIndex = index.model()->index(index.row(), - sortRole, + column, index.parent()); if (!theIndex.isValid()) { @@ -60,11 +90,12 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index, const KDirModel *dirModel = qobject_cast<const KDirModel*>(index.model()); KFileItem *item = dirModel->itemForIndex(index); - int fileSize; + int fileSize; + KDateTime modifiedTime; switch (sortRole) { - case KDirModel::Name: + case DolphinView::SortByName: if (data.toString().size()) { if (!item->isHidden() && data.toString().at(0).isLetter()) @@ -84,7 +115,34 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index, } break; - case KDirModel::Size: + case DolphinView::SortByDate: + modifiedTime.setTime_t(item->time(KIO::UDS_MODIFICATION_TIME)); + modifiedTime = modifiedTime.toLocalZone(); + + if (modifiedTime.daysTo(KDateTime::currentLocalDateTime()) == 0) + retString = i18n("Today"); + else if (modifiedTime.daysTo(KDateTime::currentLocalDateTime()) == 1) + retString = i18n("Yesterday"); + else if (modifiedTime.daysTo(KDateTime::currentLocalDateTime()) < 7) + retString = i18n("Less than a week"); + else if (modifiedTime.daysTo(KDateTime::currentLocalDateTime()) < 31) + retString = i18n("Less than a month"); + else if (modifiedTime.daysTo(KDateTime::currentLocalDateTime()) < 365) + retString = i18n("Less than a year"); + else + retString = i18n("More than a year"); + break; + + case DolphinView::SortByPermissions: + break; + + case DolphinView::SortByOwner: + break; + + case DolphinView::SortByGroup: + break; + + case DolphinView::SortBySize: fileSize = (item) ? item->size() : -1; if (item && item->isDir()) { retString = i18n("Folders"); @@ -97,7 +155,7 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index, } break; - case KDirModel::Type: + case DolphinView::SortByType: retString = item->mimeComment(); break; } |
