]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinviewactionhandler.cpp
Configurable Show hidden files and folders last toggle
[dolphin.git] / src / views / dolphinviewactionhandler.cpp
index 4acc420b023ca1ba7920d767a839d26ad2dc47f7..90109605b65a1ae4b9abfb5e358927d4b66b4987 100644 (file)
@@ -57,6 +57,8 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view)
             this, &DolphinViewActionHandler::slotSortOrderChanged);
     connect(view, &DolphinView::sortFoldersFirstChanged,
             this, &DolphinViewActionHandler::slotSortFoldersFirstChanged);
+    connect(view, &DolphinView::sortHiddenLastChanged,
+            this, &DolphinViewActionHandler::slotSortHiddenLastChanged);
     connect(view, &DolphinView::visibleRolesChanged,
             this, &DolphinViewActionHandler::slotVisibleRolesChanged);
     connect(view, &DolphinView::groupedSortingChanged,
@@ -253,13 +255,17 @@ void DolphinViewActionHandler::createActions()
     sortFoldersFirst->setText(i18nc("@action:inmenu Sort", "Folders First"));
     connect(sortFoldersFirst, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleSortFoldersFirst);
 
+    KToggleAction* sortHiddenLast = m_actionCollection->add<KToggleAction>(QStringLiteral("hidden_last"));
+    sortHiddenLast->setText(i18nc("@action:inmenu Sort", "Hidden Files Last"));
+    connect(sortHiddenLast, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleSortHiddenLast);
+
     // View -> Sort By
     QActionGroup* sortByActionGroup = createFileItemRolesActionGroup(QStringLiteral("sort_by_"));
 
     KActionMenu* sortByActionMenu = m_actionCollection->add<KActionMenu>(QStringLiteral("sort"));
     sortByActionMenu->setIcon(QIcon::fromTheme(QStringLiteral("view-sort")));
     sortByActionMenu->setText(i18nc("@action:inmenu View", "Sort By"));
-    sortByActionMenu->setDelayed(false);
+    sortByActionMenu->setPopupMode(QToolButton::InstantPopup);
 
     const auto sortByActionGroupActions = sortByActionGroup->actions();
     for (QAction* action : sortByActionGroupActions) {
@@ -287,6 +293,7 @@ void DolphinViewActionHandler::createActions()
     sortByActionMenu->addAction(descendingAction);
     sortByActionMenu->addSeparator();
     sortByActionMenu->addAction(sortFoldersFirst);
+    sortByActionMenu->addAction(sortHiddenLast);
 
     // View -> Additional Information
     QActionGroup* visibleRolesGroup = createFileItemRolesActionGroup(QStringLiteral("show_"));
@@ -294,7 +301,7 @@ void DolphinViewActionHandler::createActions()
     KActionMenu* visibleRolesMenu = m_actionCollection->add<KActionMenu>(QStringLiteral("additional_info"));
     visibleRolesMenu->setText(i18nc("@action:inmenu View", "Show Additional Information"));
     visibleRolesMenu->setIcon(QIcon::fromTheme(QStringLiteral("documentinfo")));
-    visibleRolesMenu->setDelayed(false);
+    visibleRolesMenu->setPopupMode(QToolButton::InstantPopup);
 
     const auto visibleRolesGroupActions = visibleRolesGroup->actions();
     for (QAction* action : visibleRolesGroupActions) {
@@ -481,6 +488,7 @@ void DolphinViewActionHandler::updateViewActions()
 
     slotSortOrderChanged(m_currentView->sortOrder());
     slotSortFoldersFirstChanged(m_currentView->sortFoldersFirst());
+    slotSortHiddenLastChanged(m_currentView->sortHiddenLast());
     slotVisibleRolesChanged(m_currentView->visibleRoles(), QList<QByteArray>());
     slotGroupedSortingChanged(m_currentView->groupedSorting());
     slotSortRoleChanged(m_currentView->sortRole());
@@ -516,6 +524,12 @@ void DolphinViewActionHandler::toggleSortFoldersFirst()
     m_currentView->setSortFoldersFirst(!sortFirst);
 }
 
+void DolphinViewActionHandler::toggleSortHiddenLast()
+{
+    const bool sortHiddenLast = m_currentView->sortHiddenLast();
+    m_currentView->setSortHiddenLast(!sortHiddenLast);
+}
+
 void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order)
 {
     QAction* descending = m_actionCollection->action(QStringLiteral("descending"));
@@ -530,6 +544,11 @@ void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
     m_actionCollection->action(QStringLiteral("folders_first"))->setChecked(foldersFirst);
 }
 
+void DolphinViewActionHandler::slotSortHiddenLastChanged(bool hiddenLast)
+{
+    m_actionCollection->action(QStringLiteral("hidden_last"))->setChecked(hiddenLast);
+}
+
 void DolphinViewActionHandler::toggleVisibleRole(QAction* action)
 {
     Q_EMIT actionBeingHandled();
@@ -793,7 +812,6 @@ void DolphinViewActionHandler::slotSelectionChanged(const KFileItemList& selecti
     basicActionsMenu->setText(basicActionsMenuText);
 
     // Add or remove contextual actions
-    auto basicActionsMenuActions = basicActionsMenu->menu()->actions();
     while (!basicActionsMenu->menu()->actions().constLast()->isSeparator()) {
         basicActionsMenu->menu()->removeAction(basicActionsMenu->menu()->actions().last());
     }