summaryrefslogtreecommitdiffstats
path: root/filesystemfileproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesystemfileproxy.cpp')
-rw-r--r--filesystemfileproxy.cpp59
1 files changed, 30 insertions, 29 deletions
diff --git a/filesystemfileproxy.cpp b/filesystemfileproxy.cpp
index ddf5d86..b45b740 100644
--- a/filesystemfileproxy.cpp
+++ b/filesystemfileproxy.cpp
@@ -10,10 +10,12 @@
#include <QtWidgets/QFileSystemModel>
#include <QFileInfo>
#include <QDateTime>
+#include <QFont>
#include <QDebug>
#include "filesystemfileproxy.h"
+#include "smdirmodel.h"
#include "helper.h"
FilesystemFileProxy::FilesystemFileProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
@@ -22,39 +24,38 @@ QVariant FilesystemFileProxy::data(const QModelIndex &index, int role) const{
if(!index.isValid()){
return QVariant();
}
-
+ SmDirModel *source = qobject_cast<SmDirModel*>(sourceModel());
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");
+ QModelIndex real = mapToSource(index);
+ QLocale l;
+ if(index.column() == SmDirModel::Created){
+ return real.data().toDateTime().toString("MM-dd-yyyy hh:mm");
}
+ if(index.column() == SmDirModel::Size){
+ if(source->isDir(real)){
+ return QVariant();
+ }
+ return l.toString(real.data().toLongLong());
+ }
+ if(index.column() == SmDirModel::Type){
+ if(source->isDir(real)){
+ return QVariant();
+ }
+ }
}
+ if(role == Qt::TextAlignmentRole){
+ if(index.column() == SmDirModel::Size || index.column() == SmDirModel::Duration || index.column() == SmDirModel::Bitrate){
+ return Qt::AlignRight;
+ }
+ }
+ if(role == Qt::FontRole){
+ if(index.column() == SmDirModel::Md5sum || index.column() == SmDirModel::Duration || index.column() == SmDirModel::Bitrate){
+ return QFont("courier");
+ }
+ }
return QSortFilterProxyModel::data(index, role);
}
-bool FilesystemFileProxy::filterAcceptsRow(int sourcerow, const QModelIndex &sourceparent) const{
- QFileSystemModel *m = static_cast<QFileSystemModel*>(sourceModel());
- QModelIndex idx = m->index(sourcerow, 0, sourceparent);
- if(!idx.isValid()){
- return false;
- }
- QString fName = idx.data().toString();
- if(fName == "." ){
- return false;
- }
- return QSortFilterProxyModel::filterAcceptsRow(sourcerow, sourceparent);
-}
-
bool FilesystemFileProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const {
if(left.model()->headerData(left.column(), Qt::Horizontal).toString() == tr("Name")){
if(left.data().toString() == ".."){
@@ -64,7 +65,7 @@ bool FilesystemFileProxy::lessThan(const QModelIndex &left, const QModelIndex &r
return false;
}
}
- QFileSystemModel *source = static_cast<QFileSystemModel*>(sourceModel());
+ SmDirModel *source = qobject_cast<SmDirModel*>(sourceModel());
if(source->isDir(left) && source->isDir(right)){
return left.data().toString().toLower() < right.data().toString().toLower();
}
@@ -77,7 +78,7 @@ bool FilesystemFileProxy::lessThan(const QModelIndex &left, const QModelIndex &r
return left.data().toString().toLower() < right.data().toString().toLower();
}
if(left.model()->headerData(left.column(), Qt::Horizontal).toString() == tr("Size")){
- QFileSystemModel *source = static_cast<QFileSystemModel*>(sourceModel());
+ SmDirModel *source = qobject_cast<SmDirModel*>(sourceModel());
QFileInfo lInfo = source->fileInfo(left);
QFileInfo rInfo = source->fileInfo(right);
if(lInfo.isDir() && rInfo.isDir()){