┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinitemcategorizer.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-06-22 10:18:46 +0000
committerPeter Penz <[email protected]>2007-06-22 10:18:46 +0000
commit4062c4cf2d9c3a6716ced8686fa2e2324261c0ec (patch)
treed011dde8a6c19adb57a00f3d39a16a2e6d91fbd1 /src/dolphinitemcategorizer.cpp
parentaed0e931958cc466974baf1307ea02d3f755880d (diff)
Allow to sort by rating, which can be quite useful in combination with the "Show in Groups" feature. Although still slow, it basically works. All the code is based on Rafael Fernández López patch available at http://media.ereslibre.es/2007/06/dolphin-21062007.diff.
svn path=/trunk/KDE/kdebase/apps/; revision=678801
Diffstat (limited to 'src/dolphinitemcategorizer.cpp')
-rw-r--r--src/dolphinitemcategorizer.cpp90
1 files changed, 43 insertions, 47 deletions
diff --git a/src/dolphinitemcategorizer.cpp b/src/dolphinitemcategorizer.cpp
index 38d0e2c16..7dc19ab92 100644
--- a/src/dolphinitemcategorizer.cpp
+++ b/src/dolphinitemcategorizer.cpp
@@ -22,9 +22,17 @@
#include "dolphinview.h"
-#include <klocale.h>
-#include <kdirmodel.h>
+#ifdef HAVE_NEPOMUK
+#include <config-nepomuk.h>
+#include <nepomuk/global.h>
+#include <nepomuk/resource.h>
+#endif
+
#include <kdatetime.h>
+#include <kdirmodel.h>
+#include <kfileitem.h>
+#include <klocale.h>
+#include <kurl.h>
#include <QtGui/QSortFilterProxyModel>
@@ -47,55 +55,24 @@ 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(),
- column,
- index.parent());
-
- if (!theIndex.isValid()) {
- return retString;
- }
-
- QVariant data = theIndex.model()->data(theIndex, Qt::DisplayRole);
-
const KDirModel *dirModel = qobject_cast<const KDirModel*>(index.model());
KFileItem *item = dirModel->itemForIndex(index);
- int fileSize;
- KDateTime modifiedTime;
switch (sortRole)
{
case DolphinView::SortByName:
+ {
+ // KDirModel checks columns to know to which role are
+ // we talking about
+ QModelIndex theIndex = index.model()->index(index.row(),
+ KDirModel::Name,
+ index.parent());
+
+ if (!theIndex.isValid()) {
+ return retString;
+ }
+
+ QVariant data = theIndex.model()->data(theIndex, Qt::DisplayRole);
if (data.toString().size())
{
if (!item->isHidden() && data.toString().at(0).isLetter())
@@ -132,8 +109,11 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index,
}
}
break;
+ }
case DolphinView::SortByDate:
+ {
+ KDateTime modifiedTime;
modifiedTime.setTime_t(item->time(KIO::UDS_MODIFICATION_TIME));
modifiedTime = modifiedTime.toLocalZone();
@@ -150,6 +130,7 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index,
else
retString = i18n("More than a year");
break;
+ }
case DolphinView::SortByPermissions:
retString = item->permissionsString();
@@ -163,8 +144,8 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index,
retString = item->group();
break;
- case DolphinView::SortBySize:
- fileSize = (item) ? item->size() : -1;
+ case DolphinView::SortBySize: {
+ const int fileSize = item ? item->size() : -1;
if (item && item->isDir()) {
retString = i18n("Folders");
} else if (fileSize < 5242880) {
@@ -175,10 +156,25 @@ QString DolphinItemCategorizer::categoryForItem(const QModelIndex& index,
retString = i18nc("Size", "Big");
}
break;
+ }
case DolphinView::SortByType:
retString = item->mimeComment();
break;
+
+#ifdef HAVE_NEPOMUK
+ case DolphinView::SortByRating: {
+ KFileItem* item = dirModel->itemForIndex(index);
+ if (item != 0) {
+ const Nepomuk::Resource resource(item->url().url(), Nepomuk::NFO::File());
+ const quint32 rating = resource.rating();
+ retString = i18np("1 star", "%1 stars", rating);
+ }
+ break;
+ }
+ case DolphinView::SortByTags:
+ break;
+#endif
}
return retString;