┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Fella <[email protected]>2019-06-22 17:52:35 +0200
committerNicolas Fella <[email protected]>2019-07-04 18:35:24 +0200
commit95270333dc3061138cc3e1c6a8162bd29564492d (patch)
treedb1f1b18974a87f619b283ca5c3c3fefbad5c725
parentcd2078cef4b89903a68f285b54811d32ab8f80de (diff)
Use more human-readable sort order descriptions
Summary: Anecdotal evidence shows that ascending/descending regularly takes people longer to process than necessary. This patch implements more human-friendly sort order descriptions, in particular: A-Z/Z-A for text Newest first/oldest-first for time Lowest first/highest first for rating smallest first/largest first for sizes If there is no string for a particular role defined it will fall back to Ascending/Descending. I'm aware that not every language uses A-Z. In this case the translator can pick any string that represents the concept of text sorting Test Plan: Sort view in various ways Reviewers: #dolphin, #vdg, ngraham Reviewed By: #dolphin, #vdg, ngraham Subscribers: ngraham, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D22006
-rw-r--r--src/views/dolphinviewactionhandler.cpp57
-rw-r--r--src/views/dolphinviewactionhandler.h3
2 files changed, 44 insertions, 16 deletions
diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp
index 6169ec2c1..41752e4f1 100644
--- a/src/views/dolphinviewactionhandler.cpp
+++ b/src/views/dolphinviewactionhandler.cpp
@@ -203,10 +203,6 @@ void DolphinViewActionHandler::createActions()
showPreview->setIcon(QIcon::fromTheme(QStringLiteral("view-preview")));
connect(showPreview, &KToggleAction::triggered, this, &DolphinViewActionHandler::togglePreview);
- KToggleAction* sortDescending = m_actionCollection->add<KToggleAction>(QStringLiteral("descending"));
- sortDescending->setText(i18nc("@action:inmenu Sort", "Descending"));
- connect(sortDescending, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleSortOrder);
-
KToggleAction* sortFoldersFirst = m_actionCollection->add<KToggleAction>(QStringLiteral("folders_first"));
sortFoldersFirst->setText(i18nc("@action:inmenu Sort", "Folders First"));
connect(sortFoldersFirst, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleSortFoldersFirst);
@@ -222,8 +218,27 @@ void DolphinViewActionHandler::createActions()
foreach (QAction* action, sortByActionGroup->actions()) {
sortByActionMenu->addAction(action);
}
+
+ sortByActionMenu->addSeparator();
+
+ QActionGroup* group = new QActionGroup(sortByActionMenu);
+ group->setExclusive(true);
+
+ KToggleAction* ascendingAction = m_actionCollection->add<KToggleAction>(QStringLiteral("ascending"));
+ ascendingAction->setActionGroup(group);
+ connect(ascendingAction, &QAction::triggered, this, [this] {
+ m_currentView->setSortOrder(Qt::AscendingOrder);
+ });
+
+ KToggleAction* descendingAction = m_actionCollection->add<KToggleAction>(QStringLiteral("descending"));
+ descendingAction->setActionGroup(group);
+ connect(descendingAction, &QAction::triggered, this, [this] {
+ m_currentView->setSortOrder(Qt::DescendingOrder);
+ });
+
+ sortByActionMenu->addAction(ascendingAction);
+ sortByActionMenu->addAction(descendingAction);
sortByActionMenu->addSeparator();
- sortByActionMenu->addAction(sortDescending);
sortByActionMenu->addAction(sortFoldersFirst);
// View -> Additional Information
@@ -439,14 +454,6 @@ void DolphinViewActionHandler::zoomOut()
updateViewActions();
}
-void DolphinViewActionHandler::toggleSortOrder()
-{
- const Qt::SortOrder order = (m_currentView->sortOrder() == Qt::AscendingOrder) ?
- Qt::DescendingOrder :
- Qt::AscendingOrder;
- m_currentView->setSortOrder(order);
-}
-
void DolphinViewActionHandler::toggleSortFoldersFirst()
{
const bool sortFirst = m_currentView->sortFoldersFirst();
@@ -456,8 +463,10 @@ void DolphinViewActionHandler::toggleSortFoldersFirst()
void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order)
{
QAction* descending = m_actionCollection->action(QStringLiteral("descending"));
+ QAction* ascending = m_actionCollection->action(QStringLiteral("ascending"));
const bool sortDescending = (order == Qt::DescendingOrder);
descending->setChecked(sortDescending);
+ ascending->setChecked(!sortDescending);
}
void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
@@ -583,6 +592,28 @@ void DolphinViewActionHandler::slotSortRoleChanged(const QByteArray& role)
sortByMenu->setIcon(action->icon());
}
}
+
+ QAction* descending = m_actionCollection->action(QStringLiteral("descending"));
+ QAction* ascending = m_actionCollection->action(QStringLiteral("ascending"));
+
+ if (role == "text" || role == "type" || role == "tags" || role == "comment") {
+ descending->setText(i18nc("Sort descending", "Z-A"));
+ ascending->setText(i18nc("Sort ascending", "A-Z"));
+ } else if (role == "size") {
+ descending->setText(i18nc("Sort descending", "Largest first"));
+ ascending->setText(i18nc("Sort ascending", "Smallest first"));
+ } else if (role == "modificationtime" || role == "creationtime" || role == "accesstime") {
+ descending->setText(i18nc("Sort descending", "Newest first"));
+ ascending->setText(i18nc("Sort ascending", "Oldest first"));
+ } else if (role == "rating") {
+ descending->setText(i18nc("Sort descending", "Highest first"));
+ ascending->setText(i18nc("Sort ascending", "Lowest first"));
+ } else {
+ descending->setText(i18nc("Sort descending", "Descending"));
+ ascending->setText(i18nc("Sort ascending", "Ascending"));
+ }
+
+ slotSortOrderChanged(m_currentView->sortOrder());
}
void DolphinViewActionHandler::slotZoomLevelChanged(int current, int previous)
diff --git a/src/views/dolphinviewactionhandler.h b/src/views/dolphinviewactionhandler.h
index 001a93d78..7d675b7d4 100644
--- a/src/views/dolphinviewactionhandler.h
+++ b/src/views/dolphinviewactionhandler.h
@@ -132,9 +132,6 @@ private Q_SLOTS:
/** Decreases the size of the current set view mode. */
void zoomOut();
- /** Switches between an ascending and descending sorting order. */
- void toggleSortOrder();
-
/** Switches between a separate sorting and a mixed sorting of files and folders. */
void toggleSortFoldersFirst();