File indexing completed on 2024-11-10 05:13:55

0001 /*
0002     SPDX-FileCopyrightText: 2009 Dario Andres Rodriguez <andresbajotierra@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "kdfsortproxymodel.h"
0008 
0009 #include "kdfwidget.h"
0010 
0011 bool KDFSortFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
0012 {
0013 
0014     //Properly sort the file sizes using the numeric size instead of the string
0015     // representation (10Mb < 9Gb)
0016     if( left.column() == KDFWidget::SizeCol || left.column() == KDFWidget::FreeCol )
0017     {
0018         qulonglong leftData = sourceModel()->data( left, Qt::UserRole ).toULongLong();
0019         qulonglong rightData = sourceModel()->data( right, Qt::UserRole ).toULongLong();
0020 
0021         return leftData < rightData;
0022     }
0023     // Full percent can be -1 (non mounted disks)
0024     else if ( left.column() == KDFWidget::FullCol || left.column() == KDFWidget::UsageBarCol )
0025     {
0026         int leftData = sourceModel()->data( left, Qt::UserRole ).toInt();
0027         int rightData = sourceModel()->data( right, Qt::UserRole ).toInt();
0028 
0029         return leftData < rightData;
0030 
0031     }
0032     // Default sorting rules for string values
0033     else
0034     {
0035         return QSortFilterProxyModel::lessThan( left, right );
0036     }
0037 
0038 }
0039 
0040 #include "moc_kdfsortproxymodel.cpp"