diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-06 15:51:54 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-06 15:51:54 +0000 |
commit | 6af9b265b0e9e3bc88d9e0bb61701aac64b2f8f1 (patch) | |
tree | 1205a69e562e1e61880345da052a38f245b8eb13 /filesystemfileproxy.cpp | |
parent | ea9e5d0f1e02ca8c8859bbf59f2081b819f1d329 (diff) | |
download | SheMov-6af9b265b0e9e3bc88d9e0bb61701aac64b2f8f1.tar.gz SheMov-6af9b265b0e9e3bc88d9e0bb61701aac64b2f8f1.tar.bz2 SheMov-6af9b265b0e9e3bc88d9e0bb61701aac64b2f8f1.zip |
-implemented sorting in fileview
-implemented location bar
git-svn-id: file:///var/svn/repos2/shemov/trunk@378 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'filesystemfileproxy.cpp')
-rw-r--r-- | filesystemfileproxy.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/filesystemfileproxy.cpp b/filesystemfileproxy.cpp index 22f8868..2379226 100644 --- a/filesystemfileproxy.cpp +++ b/filesystemfileproxy.cpp @@ -7,8 +7,40 @@ #include <QModelIndex> #include <QVariant> +#include <QDirModel> +#include <QDebug> +#include <QFileInfo> #include "filesystemfileproxy.h" FilesystemFileProxy::FilesystemFileProxy(QObject *parent) : QSortFilterProxyModel(parent) {} +bool FilesystemFileProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const { + if(left.model()->headerData(left.column(), Qt::Horizontal).toString() == tr("Name")){ + QDirModel *source = static_cast<QDirModel*>(sourceModel()); + if(source->isDir(left) && source->isDir(right)){ + return left.data().toString().toLower() < right.data().toString().toLower(); + } + if(source->isDir(left)){ + return true; + } + if(source->isDir(right)){ + return false; + } + return left.data().toString().toLower() < right.data().toString().toLower(); + } + if(left.model()->headerData(left.column(), Qt::Horizontal).toString() == tr("Size")){ + QDirModel *source = static_cast<QDirModel*>(sourceModel()); + QFileInfo lInfo = source->fileInfo(left); + QFileInfo rInfo = source->fileInfo(right); + if(lInfo.isDir() && rInfo.isDir()){ + return lInfo.fileName().toLower() < rInfo.fileName().toLower(); + } + if(lInfo.isDir() && !rInfo.isDir()){ + return true; + } + return lInfo.size() < rInfo.size(); + } + return QSortFilterProxyModel::lessThan(left, right); +} + |