KFileItemModel: Allow to group files and folder together

When folders size is available and unless sort dir first is set, folders
and files can be grouped together in the regular size groups.

Without this you can end up with multiple groups being added each time a
folder size alternates with a file size.

Relates to d520b417c97bdbdfece2a497dac8b5384a80b597
This commit is contained in:
Méven Car 2021-03-08 07:25:31 +01:00
parent 216068bd7c
commit a3559a19db

View file

@ -2026,16 +2026,24 @@ QList<QPair<int, QVariant> > KFileItemModel::sizeRoleGroups() const
}
const KFileItem& item = m_itemData.at(i)->item;
const KIO::filesize_t fileSize = !item.isNull() ? item.size() : ~0U;
KIO::filesize_t fileSize = !item.isNull() ? item.size() : ~0U;
QString newGroupValue;
if (!item.isNull() && item.isDir()) {
newGroupValue = i18nc("@title:group Size", "Folders");
} else if (fileSize < 5 * 1024 * 1024) {
newGroupValue = i18nc("@title:group Size", "Small");
} else if (fileSize < 10 * 1024 * 1024) {
newGroupValue = i18nc("@title:group Size", "Medium");
} else {
newGroupValue = i18nc("@title:group Size", "Big");
if (DetailsModeSettings::directorySizeCount() || m_sortDirsFirst) {
newGroupValue = i18nc("@title:group Size", "Folders");
} else {
fileSize = m_itemData.at(i)->values.value("size").toULongLong();
}
}
if (newGroupValue.isEmpty()) {
if (fileSize < 5 * 1024 * 1024) { // < 5 MB
newGroupValue = i18nc("@title:group Size", "Small");
} else if (fileSize < 10 * 1024 * 1024) { // < 10 MB
newGroupValue = i18nc("@title:group Size", "Medium");
} else {
newGroupValue = i18nc("@title:group Size", "Big");
}
}
if (newGroupValue != groupValue) {