summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r--filestreewidget.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index e8afe7c..8d9a435 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -7,6 +7,8 @@
#include <QHBoxLayout>
+#include <QDebug>
+
#include "filestreewidget.h"
#include "smmodelsingleton.h"
#include "filestreemodel.h"
@@ -15,7 +17,10 @@ FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent){
//the view
mView = new FilesTreeView;
mModel = static_cast<FilesTreeModel*>(SmModelSingleton::instance()->model("FilesModel"));
- mView->setModel(mModel);
+ mProxy = new FilesTreeSortModel(this);
+ mProxy->setSourceModel(mModel);
+ mView->setModel(mProxy);
+ mView->setSortingEnabled(true);
//layout
QHBoxLayout *mainLayout = new QHBoxLayout;
@@ -23,4 +28,19 @@ FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent){
setLayout(mainLayout);
}
-FilesTreeView::FilesTreeView(QWidget *parent) : QTreeView(parent) {}
+FilesTreeView::FilesTreeView(QWidget *parent) : QTreeView(parent){}
+
+FilesTreeSortModel::FilesTreeSortModel(QObject *parent) : QSortFilterProxyModel(parent) {}
+
+bool FilesTreeSortModel::lessThan(const QModelIndex &left, const QModelIndex &right) const{
+ if(left.parent() == QModelIndex()){
+ return false;
+ }
+ if(left.column() == FilesTreeModel::SizeDisplay){
+ return left.data(FilesTreeModel::SizeRole).toLongLong() < right.data(FilesTreeModel::SizeRole).toLongLong();
+ }
+ if(left.column() == FilesTreeModel::DvdNoRole){
+ return left.data(FilesTreeModel::DvdNoRole).toInt() < right.data(FilesTreeModel::DvdNoRole).toInt();
+ }
+ return QSortFilterProxyModel::lessThan(left, right);
+}