From ad6ccf2b86b3e97138d13518bd6ea8fd670d3530 Mon Sep 17 00:00:00 2001 From: Nathan Williams Date: Thu, 11 Sep 2025 02:28:16 +0000 Subject: dolphinview: add preferred sort order for roles BUG: 425457 This commit ensures that both the menu and column headers in table view will have the same default sorting (ascending/descending) for each role. It also saves the user's preferences for each role throughout the session. Previously, sorting by "Modified" would always sort by "Oldest First." If the user then changed to "Newest First" and sorted again by "Name," files would be sorted in reverse alphabetical order (Z-A). Now, sorting by "Modified" defaults to "Newest First." If a user switches between multiple roles, the default for each role will be used unless the user changes to a non-default sort order. In that case, the user's preference will be applied. Defaults: **Descending Order:** Time-based roles - modificationtime - creationtime - accesstime - deletiontime - imageDateTime - releaseYear Size/dimension roles - size - width - height - pageCount - wordCount - lineCount Quality/Quantity roles - rating - duration - bitrate - frameRate **Ascending order:** - Text based roles (A-Z) - All other roles --- src/kitemviews/private/kitemlistheaderwidget.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'src/kitemviews/private/kitemlistheaderwidget.cpp') diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp index 378dd1d5d..08afdc5cf 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.cpp +++ b/src/kitemviews/private/kitemlistheaderwidget.cpp @@ -261,17 +261,11 @@ void KItemListHeaderWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) m_model->setSortOrder(current); Q_EMIT sortOrderChanged(current, previous); } else { - // Change the sort role and reset to the ascending order + // Change the sort role and use the appropriate default sort order const QByteArray previous = m_model->sortRole(); const QByteArray current = m_columns[m_pressedRoleIndex]; - const bool resetSortOrder = m_model->sortOrder() == Qt::DescendingOrder; - m_model->setSortRole(current, !resetSortOrder); + m_model->setSortRole(current, true); Q_EMIT sortRoleChanged(current, previous); - - if (resetSortOrder) { - m_model->setSortOrder(Qt::AscendingOrder); - Q_EMIT sortOrderChanged(Qt::AscendingOrder, Qt::DescendingOrder); - } } } -- cgit v1.3