diff options
author | Arno <arno@disconnect.de> | 2016-09-03 07:06:55 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-09-03 07:06:55 +0200 |
commit | c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496 (patch) | |
tree | afae7b4c9754ed5c986a8988c0b5f5f74f988b96 /filesorter.cpp | |
parent | ea8d506033f5694ad3053aa691640aff3a675fb9 (diff) | |
download | ShemovCleaner-c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496.tar.gz ShemovCleaner-c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496.tar.bz2 ShemovCleaner-c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496.zip |
Fix Video sorting
Show directories in FileWidget and always put ".." first, then the
directories by creating a new QSortFilterProxyModel.
For this the file attribute is needed for every column, so use
QList<QStandardItem*> instead of individual QStandardItem*s.
Use enums to access columns.
Diffstat (limited to 'filesorter.cpp')
-rw-r--r-- | filesorter.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/filesorter.cpp b/filesorter.cpp index a87ac6f..b155a7c 100644 --- a/filesorter.cpp +++ b/filesorter.cpp @@ -1,4 +1,5 @@ #include "filesorter.h" +#include "filewidget.h" FileSorter::FileSorter(QObject *parent) : QSortFilterProxyModel(parent) {} @@ -10,3 +11,31 @@ bool FileSorter::lessThan(const QModelIndex &source_left, const QModelIndex &sou } return QSortFilterProxyModel::lessThan(source_left, source_right); } + +VideoSorter::VideoSorter(QObject *parent) : QSortFilterProxyModel(parent) {} + +bool VideoSorter::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const { + int leftData = sourceModel()->data(source_left, Qt::UserRole + 1).toInt(); + int rightData = sourceModel()->data(source_right, Qt::UserRole + 1).toInt(); + + //always Sort DotDot first + if(leftData == FileWidget::ParentDir && rightData != FileWidget::ParentDir){ + return sortOrder() == Qt::AscendingOrder; + }else if(leftData != FileWidget::ParentDir && rightData == FileWidget::ParentDir){ + return sortOrder() != Qt::AscendingOrder; + } + + //followed by directories + if(leftData == FileWidget::Directory && rightData != FileWidget::Directory){ + return sortOrder() == Qt::AscendingOrder; + }else if(leftData != FileWidget::Directory && rightData == FileWidget::Directory){ + return sortOrder() != Qt::AscendingOrder; + } + + //now check if we're sorting IconRow + if(source_left.column() == FileWidget::IconRow){ + return leftData < rightData; + } + + return QSortFilterProxyModel::lessThan(source_left, source_right); +} |