┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views
diff options
context:
space:
mode:
Diffstat (limited to 'src/views')
-rw-r--r--src/views/dolphinview.cpp29
-rw-r--r--src/views/dolphinview.h15
-rw-r--r--src/views/dolphinviewactionhandler.cpp19
-rw-r--r--src/views/dolphinviewactionhandler.h10
-rw-r--r--src/views/viewproperties.cpp14
-rw-r--r--src/views/viewproperties.h3
6 files changed, 90 insertions, 0 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 9c85303fd..39fd20bde 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -465,6 +465,18 @@ bool DolphinView::sortFoldersFirst() const
return m_model->sortDirectoriesFirst();
}
+void DolphinView::setSortHiddenLast(bool hiddenLast)
+{
+ if (sortHiddenLast() != hiddenLast) {
+ updateSortHiddenLast(hiddenLast);
+ }
+}
+
+bool DolphinView::sortHiddenLast() const
+{
+ return m_model->sortHiddenLast();
+}
+
void DolphinView::setVisibleRoles(const QList<QByteArray>& roles)
{
const QList<QByteArray> previousRoles = roles;
@@ -1375,6 +1387,17 @@ void DolphinView::updateSortFoldersFirst(bool foldersFirst)
Q_EMIT sortFoldersFirstChanged(foldersFirst);
}
+void DolphinView::updateSortHiddenLast(bool hiddenLast)
+{
+ ViewProperties props(viewPropertiesUrl());
+ props.setSortHiddenLast(hiddenLast);
+
+ m_model->setSortHiddenLast(hiddenLast);
+
+ Q_EMIT sortHiddenLastChanged(hiddenLast);
+}
+
+
QPair<bool, QString> DolphinView::pasteInfo() const
{
const QMimeData *mimeData = QApplication::clipboard()->mimeData();
@@ -1919,6 +1942,12 @@ void DolphinView::applyViewProperties(const ViewProperties& props)
Q_EMIT sortFoldersFirstChanged(sortFoldersFirst);
}
+ const bool sortHiddenLast = props.sortHiddenLast();
+ if (sortHiddenLast != m_model->sortHiddenLast()) {
+ m_model->setSortHiddenLast(sortHiddenLast);
+ Q_EMIT sortHiddenLastChanged(sortHiddenLast);
+ }
+
const QList<QByteArray> visibleRoles = props.visibleRoles();
if (visibleRoles != m_visibleRoles) {
const QList<QByteArray> previousVisibleRoles = m_visibleRoles;
diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h
index e4d779830..75c9dd985 100644
--- a/src/views/dolphinview.h
+++ b/src/views/dolphinview.h
@@ -206,6 +206,10 @@ public:
void setSortFoldersFirst(bool foldersFirst);
bool sortFoldersFirst() const;
+ /** Sets a separate sorting with hidden files and folders last (true) or not (false). */
+ void setSortHiddenLast(bool hiddenLast);
+ bool sortHiddenLast() const;
+
/** Sets the additional information which should be shown for the items. */
void setVisibleRoles(const QList<QByteArray>& roles);
@@ -470,6 +474,11 @@ Q_SIGNALS:
*/
void sortFoldersFirstChanged(bool foldersFirst);
+ /**
+ * Is emitted if the sorting of hidden files has been changed.
+ */
+ void sortHiddenLastChanged(bool hiddenLast);
+
/** Is emitted if the additional information shown for this view has been changed. */
void visibleRolesChanged(const QList<QByteArray>& current,
const QList<QByteArray>& previous);
@@ -680,6 +689,12 @@ private Q_SLOTS:
void updateSortFoldersFirst(bool foldersFirst);
/**
+ * Updates the view properties of the current URL to the
+ * sorting of hidden files given by \a hiddenLast.
+ */
+ void updateSortHiddenLast(bool hiddenLast);
+
+ /**
* Indicates in the status bar that the delete operation
* of the job \a job has been finished.
*/
diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp
index c9bab5f82..90109605b 100644
--- a/src/views/dolphinviewactionhandler.cpp
+++ b/src/views/dolphinviewactionhandler.cpp
@@ -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,6 +255,10 @@ 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_"));
@@ -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_"));
@@ -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();
diff --git a/src/views/dolphinviewactionhandler.h b/src/views/dolphinviewactionhandler.h
index 3f73153ea..6e9b4a432 100644
--- a/src/views/dolphinviewactionhandler.h
+++ b/src/views/dolphinviewactionhandler.h
@@ -137,6 +137,16 @@ private Q_SLOTS:
void slotSortFoldersFirstChanged(bool foldersFirst);
/**
+ * Switches between showing hidden files last or not.
+ */
+ void toggleSortHiddenLast();
+
+ /**
+ * Updates the state of the 'Sort Hidden Last' action.
+ */
+ void slotSortHiddenLastChanged(bool hiddenLast);
+
+ /**
* Updates the state of the 'Sort by' actions.
*/
void slotSortRoleChanged(const QByteArray& role);
diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp
index 1f73f3b33..4b8d017c7 100644
--- a/src/views/viewproperties.cpp
+++ b/src/views/viewproperties.cpp
@@ -245,6 +245,19 @@ bool ViewProperties::sortFoldersFirst() const
return m_node->sortFoldersFirst();
}
+void ViewProperties::setSortHiddenLast(bool hiddenLast)
+{
+ if (m_node->sortHiddenLast() != hiddenLast) {
+ m_node->setSortHiddenLast(hiddenLast);
+ update();
+ }
+}
+
+bool ViewProperties::sortHiddenLast() const
+{
+ return m_node->sortHiddenLast();
+}
+
void ViewProperties::setVisibleRoles(const QList<QByteArray>& roles)
{
if (roles == visibleRoles()) {
@@ -353,6 +366,7 @@ void ViewProperties::setDirProperties(const ViewProperties& props)
setSortRole(props.sortRole());
setSortOrder(props.sortOrder());
setSortFoldersFirst(props.sortFoldersFirst());
+ setSortHiddenLast(props.sortHiddenLast());
setVisibleRoles(props.visibleRoles());
setHeaderColumnWidths(props.headerColumnWidths());
m_node->setVersion(props.m_node->version());
diff --git a/src/views/viewproperties.h b/src/views/viewproperties.h
index a9daafc87..def8aa738 100644
--- a/src/views/viewproperties.h
+++ b/src/views/viewproperties.h
@@ -62,6 +62,9 @@ public:
void setSortFoldersFirst(bool foldersFirst);
bool sortFoldersFirst() const;
+ void setSortHiddenLast(bool hiddenLast);
+ bool sortHiddenLast() const;
+
/**
* Sets the additional information for the current set view-mode.
* Note that the additional-info property is the only property where