return rolesInfo;
}
+QList<KFileItemModel::RoleInfo> KFileItemModel::extraGroupingInformation()
+{
+ static QList<RoleInfo> rolesInfo{
+ {QByteArray("none"), kli18nc("@label", "No grouping").toString(), nullptr, nullptr, false, false},
+ {QByteArray("followSort"), kli18nc("@label", "Follow sorting").toString(), nullptr, nullptr, false, false}
+ };
+ return rolesInfo;
+}
+
void KFileItemModel::onGroupedSortingChanged(bool current)
{
Q_UNUSED(current)
}
}
-void KFileItemModel::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems)
+void KFileItemModel::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous)
{
Q_UNUSED(current)
Q_UNUSED(previous)
-
- if (resortItems) {
- resortAllItems();
- }
+ resortAllItems();
}
void KFileItemModel::onGroupRoleChanged(const QByteArray ¤t, const QByteArray &previous, bool resortItems)
}
}
-void KFileItemModel::onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems)
+void KFileItemModel::onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous)
{
Q_UNUSED(current)
Q_UNUSED(previous)
-
- if (resortItems) {
- resortAllItems();
- }
+ resortAllItems();
}
void KFileItemModel::loadSortingSettings()
// Workaround for bug https://bugreports.qt.io/browse/QTBUG-69361
// Force the clean state of QCollator in single thread to avoid thread safety problems in sort
m_collator.compare(QString(), QString());
- m_dirSizeMode = ContentDisplaySettings::directorySizeMode();
+ ContentDisplaySettings::self();
}
void KFileItemModel::resortAllItems()
return itemDataList;
}
-void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList)
+void KFileItemModel::prepareItemsWithRole(QList<ItemData *> &itemDataList, RoleType roleType)
{
- switch (m_sortRole) {
+ switch (roleType) {
case ExtensionRole:
case PermissionsRole:
case OwnerRole:
// DateRole).
break;
}
- switch (m_groupRole) {
- case ExtensionRole:
- case PermissionsRole:
- case OwnerRole:
- case GroupRole:
- case DestinationRole:
- case PathRole:
- case DeletionTimeRole:
- for (ItemData *itemData : std::as_const(itemDataList)) {
- if (itemData->values.isEmpty()) {
- itemData->values = retrieveData(itemData->item, itemData->parent);
- }
- }
- break;
-
- case TypeRole:
- for (ItemData *itemData : std::as_const(itemDataList)) {
- if (itemData->values.isEmpty()) {
- const KFileItem item = itemData->item;
- if (item.isDir() || item.isMimeTypeKnown()) {
- itemData->values = retrieveData(itemData->item, itemData->parent);
- }
- }
- }
- break;
+}
- default:
- break;
- }
+void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList)
+{
+ prepareItemsWithRole(itemDataList, m_sortRole);
+ prepareItemsWithRole(itemDataList, m_groupRole);
}
int KFileItemModel::expandedParentsCount(const ItemData *data)
return true;
}
}
- if (m_sortDirsFirst || (m_dirSizeMode == ContentDisplaySettings::EnumDirectorySizeMode::ContentCount && m_sortRole == SizeRole)) {
+ if (m_sortDirsFirst || (ContentDisplaySettings::directorySizeMode() == ContentDisplaySettings::EnumDirectorySizeMode::ContentCount && m_sortRole == SizeRole)) {
const bool isDirA = a->item.isDir();
const bool isDirB = b->item.isDir();
if (isDirA && !isDirB) {
break;
case SizeRole: {
- if (m_dirSizeMode == ContentDisplaySettings::EnumDirectorySizeMode::ContentCount && itemA.isDir()) {
+ if (ContentDisplaySettings::directorySizeMode() == ContentDisplaySettings::EnumDirectorySizeMode::ContentCount && itemA.isDir()) {
// folders first then
// items A and B are folders thanks to lessThan checks
auto valueA = a->values.value("count");
groupInfo.comparable = -1; // None
if (!item.isNull() && item.isDir()) {
- if (m_dirSizeMode != ContentDisplaySettings::EnumDirectorySizeMode::ContentSize) {
+ if (ContentDisplaySettings::directorySizeMode() != ContentDisplaySettings::EnumDirectorySizeMode::ContentSize) {
groupInfo.comparable = 0; // Folders
} else {
fileSize = itemData->values.value("size").toULongLong();
if (withString) {
// Dolphin does not currently use string representation of star rating
// as stars are rendered as graphics in group headers.
- groupInfo.text = i18nc("@item:intext Rated N (stars)", "Rated ") + QString::number(groupInfo.comparable);
+ groupInfo.text = i18nc("@item:intext Rated N (stars)", "Rated %i", QString::number(groupInfo.comparable));
}
return groupInfo;
}