X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/cdccbf471a88a34d7673712f6f6bead559dcc5be..9663bfbc23b8a73dade97a520783f101664fcb1d:/src/views/dolphinviewactionhandler.cpp diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index 7a3c758a5..815b0f63e 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -278,17 +278,17 @@ void DolphinViewActionHandler::createActions(SelectionMode::ActionTextHelper *ac sortByActionMenu->addSeparator(); - QActionGroup *group = new QActionGroup(sortByActionMenu); - group->setExclusive(true); + QActionGroup *groupForSort = new QActionGroup(sortByActionMenu); + groupForSort->setExclusive(true); KToggleAction *sortAscendingAction = m_actionCollection->add(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(QStringLiteral("sort_descending")); - sortDescendingAction->setActionGroup(group); + sortDescendingAction->setActionGroup(groupForSort); connect(sortDescendingAction, &QAction::triggered, this, [this] { m_currentView->setSortOrder(Qt::DescendingOrder); }); @@ -314,14 +314,17 @@ void DolphinViewActionHandler::createActions(SelectionMode::ActionTextHelper *ac groupByActionMenu->addSeparator(); + QActionGroup *groupForGroup = new QActionGroup(groupByActionMenu); + groupForGroup->setExclusive(true); + KToggleAction *groupAscendingAction = m_actionCollection->add(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(QStringLiteral("group_descending")); - groupDescendingAction->setActionGroup(group); + groupDescendingAction->setActionGroup(groupForGroup); connect(groupDescendingAction, &QAction::triggered, this, [this] { m_currentView->setGroupOrder(Qt::DescendingOrder); }); @@ -401,9 +404,9 @@ QActionGroup *DolphinViewActionHandler::createFileItemRolesActionGroup(const QSt #endif QList 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") { @@ -605,9 +608,9 @@ void DolphinViewActionHandler::slotGroupOrderChanged(Qt::SortOrder order) { 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) @@ -784,6 +787,15 @@ void DolphinViewActionHandler::slotGroupRoleChanged(const QByteArray &role) 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()); } @@ -836,7 +848,7 @@ void DolphinViewActionHandler::slotGroupTriggered(QAction *action) // 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(groupAction); if (actionMenu) { const auto actions = actionMenu->menu()->actions();