sortByActionMenu->addSeparator();
- QActionGroup *group = new QActionGroup(sortByActionMenu);
- group->setExclusive(true);
+ QActionGroup *groupForSort = new QActionGroup(sortByActionMenu);
+ groupForSort->setExclusive(true);
KToggleAction *sortAscendingAction = m_actionCollection->add<KToggleAction>(QStringLiteral("sort_ascending"));
- sortAscendingAction->setActionGroup(group);
+ sortAscendingAction->setActionGroup(groupForSort);
connect(sortAscendingAction, &QAction::triggered, this, [this] {
m_currentView->setSortOrder(Qt::AscendingOrder);
});
KToggleAction *sortDescendingAction = m_actionCollection->add<KToggleAction>(QStringLiteral("sort_descending"));
- sortDescendingAction->setActionGroup(group);
+ sortDescendingAction->setActionGroup(groupForSort);
connect(sortDescendingAction, &QAction::triggered, this, [this] {
m_currentView->setSortOrder(Qt::DescendingOrder);
});
groupByActionMenu->addSeparator();
+ QActionGroup *groupForGroup = new QActionGroup(groupByActionMenu);
+ groupForGroup->setExclusive(true);
+
KToggleAction *groupAscendingAction = m_actionCollection->add<KToggleAction>(QStringLiteral("group_ascending"));
- groupAscendingAction->setActionGroup(group);
+ groupAscendingAction->setActionGroup(groupForGroup);
connect(groupAscendingAction, &QAction::triggered, this, [this] {
m_currentView->setGroupOrder(Qt::AscendingOrder);
});
KToggleAction *groupDescendingAction = m_actionCollection->add<KToggleAction>(QStringLiteral("group_descending"));
- groupDescendingAction->setActionGroup(group);
+ groupDescendingAction->setActionGroup(groupForGroup);
connect(groupDescendingAction, &QAction::triggered, this, [this] {
m_currentView->setGroupOrder(Qt::DescendingOrder);
});
#endif
QList<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
- // Unlike sorting, grouping is optional. If creating for group_by_, include a None role.
- if (isGroupGroup)
- rolesInfo.append(KFileItemModel::roleInformation(nullptr));
+ if (isGroupGroup) {
+ rolesInfo += KFileItemModel::extraGroupingInformation();
+ }
for (const KFileItemModel::RoleInfo &info : rolesInfo) {
if (!isSortGroup && !isGroupGroup && info.role == "text") {
{
QAction *descending = m_actionCollection->action(QStringLiteral("group_descending"));
QAction *ascending = m_actionCollection->action(QStringLiteral("group_ascending"));
- const bool sortDescending = (order == Qt::DescendingOrder);
- descending->setChecked(sortDescending);
- ascending->setChecked(!sortDescending);
+ const bool groupDescending = (order == Qt::DescendingOrder);
+ descending->setChecked(groupDescending);
+ ascending->setChecked(!groupDescending);
}
void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
ascending->setText(i18nc("Group ascending", "Ascending"));
}
+ // Disable group order selector if grouping behavior does not support it
+ if (role == "none" || role == "followSort") {
+ descending->setEnabled(false);
+ ascending->setEnabled(false);
+ } else {
+ descending->setEnabled(true);
+ ascending->setEnabled(true);
+ }
+
slotGroupOrderChanged(m_currentView->groupOrder());
}
// actions and the sub-menu-actions. If an action gets checked, it must
// be assured that all other actions get unchecked, except the ascending/
// descending actions
- for (QAction *groupAction : std::as_const(m_sortByActions)) {
+ for (QAction *groupAction : std::as_const(m_groupByActions)) {
KActionMenu *actionMenu = qobject_cast<KActionMenu *>(groupAction);
if (actionMenu) {
const auto actions = actionMenu->menu()->actions();