From a30a4c02d1c8a9c8442010b6ae12a2477c936b92 Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 3 Oct 2010 14:26:00 +0200 Subject: Change display in FSWidget Display "Date modified" field in FSWidget as dd-mm-yyyy. Also show mime- I guess I should subclass QFileSystemModel instead of reimplementing data() in the proxy, because sorting by mimetype doesn't work as expected. Unfortunately the reason eludes me... --- filesystemfileproxy.cpp | 28 ++++++++++++++++++++++++++++ filesystemfileproxy.h | 5 ++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/filesystemfileproxy.cpp b/filesystemfileproxy.cpp index 31059ec..06ad939 100644 --- a/filesystemfileproxy.cpp +++ b/filesystemfileproxy.cpp @@ -9,11 +9,39 @@ #include #include #include +#include + +#include #include "filesystemfileproxy.h" +#include "helper.h" FilesystemFileProxy::FilesystemFileProxy(QObject *parent) : QSortFilterProxyModel(parent) {} +QVariant FilesystemFileProxy::data(const QModelIndex &index, int role) const{ + if(!index.isValid()){ + return QVariant(); + } + + if(role == Qt::DisplayRole){ + if(index.column() == 2){ + QString filePath = index.data(QFileSystemModel::FilePathRole).toString(); + QString mimeType = Helper::mimeType(filePath); + if(mimeType.contains('/')){ + mimeType = mimeType.split('/').at(1); + mimeType = mimeType.remove(QRegExp("^x-")); + return mimeType; + } + } + if(index.column() == 3){ + QString filePath = index.data(QFileSystemModel::FilePathRole).toString(); + QFileInfo fi(filePath); + return fi.lastModified().toString("MM-dd-yyyy hh:mm"); + } + } + return QSortFilterProxyModel::data(index, role); +} + bool FilesystemFileProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const { if(left.model()->headerData(left.column(), Qt::Horizontal).toString() == tr("Name")){ QFileSystemModel *source = static_cast(sourceModel()); diff --git a/filesystemfileproxy.h b/filesystemfileproxy.h index 9f9609b..a7b5e18 100644 --- a/filesystemfileproxy.h +++ b/filesystemfileproxy.h @@ -18,7 +18,10 @@ class FilesystemFileProxy : public QSortFilterProxyModel { public: FilesystemFileProxy(QObject *parent = 0); ~FilesystemFileProxy() {}; - bool lessThan(const QModelIndex &left, const QModelIndex &right) const; + virtual QVariant data(const QModelIndex &index, int role) const; + + protected: + virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; }; #endif -- cgit v1.2.3-70-g09d2