diff options
Diffstat (limited to 'src/kitemviews/kitemmodelbase.cpp')
| -rw-r--r-- | src/kitemviews/kitemmodelbase.cpp | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/src/kitemviews/kitemmodelbase.cpp b/src/kitemviews/kitemmodelbase.cpp index 82e491220..a4f7b0890 100644 --- a/src/kitemviews/kitemmodelbase.cpp +++ b/src/kitemviews/kitemmodelbase.cpp @@ -50,13 +50,41 @@ bool KItemModelBase::groupedSorting() const void KItemModelBase::setSortRole(const QByteArray &role, bool resortItems) { if (role != m_sortRole) { - const QByteArray previous = m_sortRole; + const QByteArray previousSortRole = m_sortRole; m_sortRole = role; - onSortRoleChanged(role, previous, resortItems); - Q_EMIT sortRoleChanged(role, previous); + onSortRoleChanged(role, previousSortRole, resortItems); + Q_EMIT sortRoleChanged(role, previousSortRole); + + if (m_groupRole.isEmpty()) { + onGroupRoleChanged(role, previousSortRole, false); + Q_EMIT groupRoleChanged(role, previousSortRole); + } + } +} + +void KItemModelBase::setGroupRole(const QByteArray &role) +{ + if (role != m_groupRole) { + const QByteArray previousEffective = groupRole(); + m_groupRole = role; + const QByteArray currentEffective = groupRole(); + if (currentEffective != previousEffective) { + onGroupRoleChanged(currentEffective, previousEffective); + Q_EMIT groupRoleChanged(currentEffective, previousEffective); + } } } +QByteArray KItemModelBase::groupRole() const +{ + return m_groupRole.isEmpty() ? m_sortRole : m_groupRole; +} + +QByteArray KItemModelBase::rawGroupRole() const +{ + return m_groupRole; +} + QByteArray KItemModelBase::sortRole() const { return m_sortRole; @@ -149,6 +177,13 @@ void KItemModelBase::onSortRoleChanged(const QByteArray ¤t, const QByteArr Q_UNUSED(resortItems) } +void KItemModelBase::onGroupRoleChanged(const QByteArray ¤t, const QByteArray &previous, bool resortItems) +{ + Q_UNUSED(current) + Q_UNUSED(previous) + Q_UNUSED(resortItems) +} + void KItemModelBase::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) { Q_UNUSED(current) |
