summaryrefslogtreecommitdiffstats
path: root/fsproxy.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-03-31 19:32:57 +0200
committerArno <arno@disconnect.de>2018-03-31 19:32:57 +0200
commit3dd5dbd7d66a21b8dd8bded05636252d7ef84cba (patch)
tree3ccc57044fc84cc63a750f50c5f837933ef76f57 /fsproxy.cpp
parentd4dae4ba8633ff8c58bbb4135850ddbd1dfa87a9 (diff)
downloadSheMov-3dd5dbd7d66a21b8dd8bded05636252d7ef84cba.tar.gz
SheMov-3dd5dbd7d66a21b8dd8bded05636252d7ef84cba.tar.bz2
SheMov-3dd5dbd7d66a21b8dd8bded05636252d7ef84cba.zip
More sorting for FSWidget
Sort size and duration by their actual numbers instead of alphabetically by the display string.
Diffstat (limited to 'fsproxy.cpp')
-rw-r--r--fsproxy.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/fsproxy.cpp b/fsproxy.cpp
new file mode 100644
index 0000000..26a70d8
--- /dev/null
+++ b/fsproxy.cpp
@@ -0,0 +1,21 @@
+#include "fsproxy.h"
+#include "fswidget.h"
+
+FSProxy::FSProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
+
+bool FSProxy::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const {
+ //sort by size
+ if(source_left.column() == 2){
+ QVariant leftData = source_left.data(FSWidget::SizeRole);
+ QVariant rightData = source_right.data(FSWidget::SizeRole);
+ return leftData.toLongLong() < rightData.toLongLong();
+ }
+ //sort by duration
+ if(source_left.column() == 3){
+ QVariant leftData = source_left.data(FSWidget::DurationRole);
+ QVariant rightData = source_right.data(FSWidget::DurationRole);
+ return leftData.toLongLong() < rightData.toLongLong();
+ }
+ return QSortFilterProxyModel::lessThan(source_left, source_right);
+}
+