1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-02 16:31:23 +00:00

Some code cleanup as per suggestions

This commit is contained in:
Zakhar Afonin 2024-06-22 12:31:29 +03:00
parent 27ca9bd64e
commit 9aaf305410
5 changed files with 30 additions and 56 deletions

View File

@ -452,8 +452,9 @@ void KFileItemListView::applyRolesToModel()
roles.insert("expandedParentsCount"); roles.insert("expandedParentsCount");
} }
// Assure that the role that is used for sorting will be determined // Assure that the roles used for sorting and grouping will be determined
roles.insert(fileItemModel->sortRole()); roles.insert(fileItemModel->sortRole());
roles.insert(fileItemModel->groupRole());
fileItemModel->setRoles(roles); fileItemModel->setRoles(roles);
m_modelRolesUpdater->setRoles(roles); m_modelRolesUpdater->setRoles(roles);

View File

@ -975,14 +975,10 @@ void KFileItemModel::onSortRoleChanged(const QByteArray &current, const QByteArr
} }
} }
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(current)
Q_UNUSED(previous) Q_UNUSED(previous)
if (resortItems) {
resortAllItems();
}
} }
void KFileItemModel::onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems) void KFileItemModel::onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems)
@ -1008,14 +1004,10 @@ void KFileItemModel::onGroupRoleChanged(const QByteArray &current, const QByteAr
} }
} }
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(current)
Q_UNUSED(previous) Q_UNUSED(previous)
if (resortItems) {
resortAllItems();
}
} }
void KFileItemModel::loadSortingSettings() void KFileItemModel::loadSortingSettings()
@ -1716,9 +1708,9 @@ QList<KFileItemModel::ItemData *> KFileItemModel::createItemDataList(const QUrl
return itemDataList; return itemDataList;
} }
void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList) void KFileItemModel::prepareItemsWithRole(QList<ItemData *> &itemDataList, RoleType roleType)
{ {
switch (m_sortRole) { switch (roleType) {
case ExtensionRole: case ExtensionRole:
case PermissionsRole: case PermissionsRole:
case OwnerRole: case OwnerRole:
@ -1755,35 +1747,12 @@ void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList)
// DateRole). // DateRole).
break; 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: void KFileItemModel::prepareItemsForSorting(QList<ItemData *> &itemDataList)
for (ItemData *itemData : std::as_const(itemDataList)) { {
if (itemData->values.isEmpty()) { prepareItemsWithRole(itemDataList, m_sortRole);
const KFileItem item = itemData->item; prepareItemsWithRole(itemDataList, m_groupRole);
if (item.isDir() || item.isMimeTypeKnown()) {
itemData->values = retrieveData(itemData->item, itemData->parent);
}
}
}
break;
default:
break;
}
} }
int KFileItemModel::expandedParentsCount(const ItemData *data) int KFileItemModel::expandedParentsCount(const ItemData *data)

View File

@ -293,9 +293,9 @@ Q_SIGNALS:
protected: protected:
void onGroupedSortingChanged(bool current) override; void onGroupedSortingChanged(bool current) override;
void onSortRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems = true) override; void onSortRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems = true) override;
void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems = true) override; void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) override;
void onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems = true) override; void onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems = true) override;
void onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems = true) override; void onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) override;
private Q_SLOTS: private Q_SLOTS:
/** /**
@ -396,6 +396,12 @@ private:
*/ */
QList<ItemData *> createItemDataList(const QUrl &parentUrl, const KFileItemList &items) const; QList<ItemData *> createItemDataList(const QUrl &parentUrl, const KFileItemList &items) const;
/**
* Helper method for prepareItemsForSorting().
* For a set role, fills 'values' of ItemData non-lazily.
*/
void prepareItemsWithRole(QList<ItemData *> &itemDataList, RoleType roleType);
/** /**
* Prepares the items for sorting. Normally, the hash 'values' in ItemData is filled * Prepares the items for sorting. Normally, the hash 'values' in ItemData is filled
* lazily to save time and memory, but for some sort roles, it is expected that the * lazily to save time and memory, but for some sort roles, it is expected that the

View File

@ -68,12 +68,12 @@ QByteArray KItemModelBase::sortRole() const
return m_sortRole; return m_sortRole;
} }
void KItemModelBase::setSortOrder(Qt::SortOrder order, bool resortItems) void KItemModelBase::setSortOrder(Qt::SortOrder order)
{ {
if (order != m_sortOrder) { if (order != m_sortOrder) {
const Qt::SortOrder previous = m_sortOrder; const Qt::SortOrder previous = m_sortOrder;
m_sortOrder = order; m_sortOrder = order;
onSortOrderChanged(order, previous, resortItems); onSortOrderChanged(order, previous);
Q_EMIT sortOrderChanged(order, previous); Q_EMIT sortOrderChanged(order, previous);
} }
} }
@ -93,12 +93,12 @@ QByteArray KItemModelBase::groupRole() const
return m_groupRole; return m_groupRole;
} }
void KItemModelBase::setGroupOrder(Qt::SortOrder order, bool resortItems) void KItemModelBase::setGroupOrder(Qt::SortOrder order)
{ {
if (order != m_groupOrder) { if (order != m_groupOrder) {
const Qt::SortOrder previous = m_groupOrder; const Qt::SortOrder previous = m_groupOrder;
m_groupOrder = order; m_groupOrder = order;
onGroupOrderChanged(order, previous, resortItems); onGroupOrderChanged(order, previous);
Q_EMIT groupOrderChanged(order, previous); Q_EMIT groupOrderChanged(order, previous);
} }
} }
@ -180,11 +180,10 @@ void KItemModelBase::onSortRoleChanged(const QByteArray &current, const QByteArr
Q_UNUSED(resortItems) Q_UNUSED(resortItems)
} }
void KItemModelBase::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems) void KItemModelBase::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous)
{ {
Q_UNUSED(current) Q_UNUSED(current)
Q_UNUSED(previous) Q_UNUSED(previous)
Q_UNUSED(resortItems)
} }
void KItemModelBase::onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems) void KItemModelBase::onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems)
@ -194,11 +193,10 @@ void KItemModelBase::onGroupRoleChanged(const QByteArray &current, const QByteAr
Q_UNUSED(resortItems) Q_UNUSED(resortItems)
} }
void KItemModelBase::onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems) void KItemModelBase::onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous)
{ {
Q_UNUSED(current) Q_UNUSED(current)
Q_UNUSED(previous) Q_UNUSED(previous)
Q_UNUSED(resortItems)
} }
QUrl KItemModelBase::url(int index) const QUrl KItemModelBase::url(int index) const

View File

@ -81,7 +81,7 @@ public:
* called so that model-implementations can react on the sort order change. Afterwards the * called so that model-implementations can react on the sort order change. Afterwards the
* signal sortOrderChanged() will be emitted. * signal sortOrderChanged() will be emitted.
*/ */
void setSortOrder(Qt::SortOrder order, bool resortItems = true); void setSortOrder(Qt::SortOrder order);
Qt::SortOrder sortOrder() const; Qt::SortOrder sortOrder() const;
/** /**
@ -98,7 +98,7 @@ public:
* called so that model-implementations can react on the group order change. Afterwards the * called so that model-implementations can react on the group order change. Afterwards the
* signal groupOrderChanged() will be emitted. * signal groupOrderChanged() will be emitted.
*/ */
void setGroupOrder(Qt::SortOrder order, bool resortItems = true); void setGroupOrder(Qt::SortOrder order);
Qt::SortOrder groupOrder() const; Qt::SortOrder groupOrder() const;
/** /**
@ -293,7 +293,7 @@ protected:
* itemsRemoved() signal for all items, reorder the items internally and to emit a * itemsRemoved() signal for all items, reorder the items internally and to emit a
* itemsInserted() signal afterwards. * itemsInserted() signal afterwards.
*/ */
virtual void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems = true); virtual void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
/** /**
* Is invoked if the sort role has been changed by KItemModelBase::setSortRole(). Allows * Is invoked if the sort role has been changed by KItemModelBase::setSortRole(). Allows
@ -304,7 +304,7 @@ protected:
* itemsInserted() signal afterwards. * itemsInserted() signal afterwards.
* The implementation should resort only if \a regroupItems is true. * The implementation should resort only if \a regroupItems is true.
*/ */
virtual void onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool resortItems = true); virtual void onGroupRoleChanged(const QByteArray &current, const QByteArray &previous, bool regroupItems = true);
/** /**
* Is invoked if the sort order has been changed by KItemModelBase::setSortOrder(). Allows * Is invoked if the sort order has been changed by KItemModelBase::setSortOrder(). Allows
@ -314,7 +314,7 @@ protected:
* itemsRemoved() signal for all items, reorder the items internally and to emit a * itemsRemoved() signal for all items, reorder the items internally and to emit a
* itemsInserted() signal afterwards. * itemsInserted() signal afterwards.
*/ */
virtual void onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous, bool resortItems = true); virtual void onGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
private: private:
bool m_groupedSorting; bool m_groupedSorting;