From 54079b4b80af46663590c46109fabeb5cc94a6db Mon Sep 17 00:00:00 2001 From: Arno Date: Tue, 2 Jan 2018 23:33:17 +0100 Subject: Sort size numerically, not alphabetically --- filesorter.cpp | 7 +++++++ filewidget.cpp | 8 ++++++-- filewidget.h | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/filesorter.cpp b/filesorter.cpp index d78b46d..7c6d1d1 100644 --- a/filesorter.cpp +++ b/filesorter.cpp @@ -45,5 +45,12 @@ bool VideoSorter::lessThan(const QModelIndex &source_left, const QModelIndex &so return leftData < rightData; } + //special case for size + if(source_left.column() == FileWidget::SizeColumn){ + qint64 left = source_left.data(FileWidget::SizeRole).toInt(); + qint64 right = source_right.data(FileWidget::SizeRole).toInt(); + return left < right; + } + return QSortFilterProxyModel::lessThan(source_left, source_right); } diff --git a/filewidget.cpp b/filewidget.cpp index 458dd45..d3fe7d9 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -485,9 +485,13 @@ QList FileWidget::constructRow(CachedFileData *fd) const{ fData[IconColumn]->setIcon(QIcon(":/gaping_ass.png")); } qint64 size = fd->size; - QLocale l; - QString sizeStr = QString("%1").arg(l.toString(size)); + QString sizeStr; + if(size){ + QLocale l; + sizeStr = QString("%1").arg(l.toString(size)); + } fData[SizeColumn]->setText(sizeStr); + fData[SizeColumn]->setData(size, SizeRole); bool copied = fd->copied; if(copied){ fData[CopiedColumn]->setText(QChar(0x2642)); diff --git a/filewidget.h b/filewidget.h index 468821f..0d66d9d 100644 --- a/filewidget.h +++ b/filewidget.h @@ -31,7 +31,7 @@ class FileWidget : public QWidget { Q_OBJECT public: enum FileAttrs { NotPresent = 0, Present = 1, NoVideo = 2, ParentDir = 3, Directory = 4, Origin = 5 }; - enum CustomRoles { AttrsRole = Qt::UserRole + 1, FullPathRole = Qt::UserRole + 2, DurationRole = Qt::UserRole + 3, MD5SumRole = Qt::UserRole + 4, SecondsRole = Qt::UserRole + 5 }; + enum CustomRoles { AttrsRole = Qt::UserRole + 1, FullPathRole = Qt::UserRole + 2, DurationRole = Qt::UserRole + 3, MD5SumRole = Qt::UserRole + 4, SecondsRole = Qt::UserRole + 5, SizeRole = Qt::UserRole + 6 }; enum { ColumnCount = 7 }; enum Columns { IconColumn = 0, NameColumn = 1, CopiedColumn = 2, MimeColumn = 3, DurationColumn = 4, SizeColumn = 5, Md5Column = 6 }; enum FileAction { Copy, Cut, Paste }; -- cgit v1.2.3-70-g09d2