From 50149d6abb8a0a978db3c6afb5238bc42a4a89c8 Mon Sep 17 00:00:00 2001 From: Gaston Haro Date: Sun, 1 Aug 2021 13:00:05 -0400 Subject: Configurable Show hidden files and folders last toggle CCBUG: 241227 Revision: https://phabricator.kde.org/D29115 --- src/kitemviews/kfileitemmodel.cpp | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'src/kitemviews/kfileitemmodel.cpp') diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index e03ec7c0e..ef80b4edb 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -34,6 +34,7 @@ KFileItemModel::KFileItemModel(QObject* parent) : KItemModelBase("text", parent), m_dirLister(nullptr), m_sortDirsFirst(true), + m_sortHiddenLast(true), m_sortRole(NameRole), m_sortingProgressPercent(-1), m_roles(), @@ -212,6 +213,19 @@ bool KFileItemModel::sortDirectoriesFirst() const return m_sortDirsFirst; } +void KFileItemModel::setSortHiddenLast(bool hiddenLast) +{ + if (hiddenLast != m_sortHiddenLast) { + m_sortHiddenLast = hiddenLast; + resortAllItems(); + } +} + +bool KFileItemModel::sortHiddenLast() const +{ + return m_sortHiddenLast; +} + void KFileItemModel::setShowHiddenFiles(bool show) { m_dirLister->setShowingDotFiles(show); @@ -1734,12 +1748,14 @@ bool KFileItemModel::lessThan(const ItemData* a, const ItemData* b, const QColla } // Show hidden files and folders last - const bool isHiddenA = a->item.isHidden(); - const bool isHiddenB = b->item.isHidden(); - if (isHiddenA && !isHiddenB) { - return false; - } else if (!isHiddenA && isHiddenB) { - return true; + if (m_sortHiddenLast) { + const bool isHiddenA = a->item.isHidden(); + const bool isHiddenB = b->item.isHidden(); + if (isHiddenA && !isHiddenB) { + return false; + } else if (!isHiddenA && isHiddenB) { + return true; + } } if (m_sortDirsFirst || (DetailsModeSettings::directorySizeCount() && m_sortRole == SizeRole)) { -- cgit v1.3 From fd2203bb3925edb5d657d49a706e26ea736362d2 Mon Sep 17 00:00:00 2001 From: Chris Holland Date: Wed, 4 Aug 2021 02:26:10 -0400 Subject: Disable Hidden Files Last sort by default --- src/kitemviews/kfileitemmodel.cpp | 2 +- .../dolphin_directoryviewpropertysettings.kcfg | 2 +- src/tests/kfileitemmodeltest.cpp | 26 +++++++++++++++------- 3 files changed, 20 insertions(+), 10 deletions(-) (limited to 'src/kitemviews/kfileitemmodel.cpp') diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index ef80b4edb..af8cfc131 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -34,7 +34,7 @@ KFileItemModel::KFileItemModel(QObject* parent) : KItemModelBase("text", parent), m_dirLister(nullptr), m_sortDirsFirst(true), - m_sortHiddenLast(true), + m_sortHiddenLast(false), m_sortRole(NameRole), m_sortingProgressPercent(-1), m_roles(), diff --git a/src/settings/dolphin_directoryviewpropertysettings.kcfg b/src/settings/dolphin_directoryviewpropertysettings.kcfg index 9846326b9..f4d288369 100644 --- a/src/settings/dolphin_directoryviewpropertysettings.kcfg +++ b/src/settings/dolphin_directoryviewpropertysettings.kcfg @@ -59,7 +59,7 @@ - true + false diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp index f527fbc61..4b84f1579 100644 --- a/src/tests/kfileitemmodeltest.cpp +++ b/src/tests/kfileitemmodeltest.cpp @@ -814,16 +814,16 @@ void KFileItemModelTest::testSorting() { // testDir structure is as follows // ./ + // ├─ .g/ // ├─ a // ├─ b // ├─ c/ // │ ├─ c-2/ // │ │ ├─ c-3 // │ ├─ c-1 + // ├─ .f // ├─ d // ├─ e - // ├─ .f - // ├─ .g/ QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted); QSignalSpy itemsMovedSpy(m_model, &KFileItemModel::itemsMoved); @@ -968,10 +968,20 @@ void KFileItemModelTest::testSorting() // 'Show Hidden Files' enabled m_model->setShowHiddenFiles(true); QVERIFY(m_model->showHiddenFiles()); - QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "d" << "e" << "b" << "a" << ".g" << ".f"); + QVERIFY(!m_model->sortHiddenLast()); + QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << ".g" << "d" << "e" << "b" << "a" << ".f"); QCOMPARE(itemsMovedSpy.count(), 0); QCOMPARE(itemsInsertedSpy.count(), 1); - QCOMPARE(itemsInsertedSpy.takeFirst().at(0).value(), KItemRangeList() << KItemRange(8, 2)); + QCOMPARE(itemsInsertedSpy.takeFirst().at(0).value(), KItemRangeList() << KItemRange(4, 1) << KItemRange(8, 1)); + + // 'Sort Hidden Files Last' enabled + m_model->setSortHiddenLast(true); + QVERIFY(m_model->sortHiddenLast()); + QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "d" << "e" << "b" << "a" << ".g" << ".f"); + QCOMPARE(itemsMovedSpy.count(), 1); + QCOMPARE(itemsInsertedSpy.count(), 0); + QCOMPARE(itemsMovedSpy.first().at(0).value(), KItemRange(4, 5)); + QCOMPARE(itemsMovedSpy.takeFirst().at(1).value >(), QList() << 8 << 4 << 5 << 6 << 7); // Sort by Name m_model->setSortRole("text"); @@ -1151,7 +1161,7 @@ void KFileItemModelTest::testRemoveHiddenItems() m_model->setShowHiddenFiles(true); m_model->loadDirectory(m_testDir->url()); QVERIFY(itemsInsertedSpy.wait()); - QCOMPARE(itemsInModel(), QStringList() << "c" << "d" << "h" << "i" << ".a" << ".b" <<".f" << ".g"); + QCOMPARE(itemsInModel(), QStringList() << ".a" << ".b" << "c" << "d" <<".f" << ".g" << "h" << "i"); QCOMPARE(itemsInsertedSpy.count(), 1); QCOMPARE(itemsRemovedSpy.count(), 0); KItemRangeList itemRangeList = itemsInsertedSpy.takeFirst().at(0).value(); @@ -1162,14 +1172,14 @@ void KFileItemModelTest::testRemoveHiddenItems() QCOMPARE(itemsInsertedSpy.count(), 0); QCOMPARE(itemsRemovedSpy.count(), 1); itemRangeList = itemsRemovedSpy.takeFirst().at(0).value(); - QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(4, 4)); + QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 2) << KItemRange(4, 2)); m_model->setShowHiddenFiles(true); - QCOMPARE(itemsInModel(), QStringList() << "c" << "d" << "h" << "i" << ".a" << ".b" <<".f" << ".g"); + QCOMPARE(itemsInModel(), QStringList() << ".a" << ".b" << "c" << "d" <<".f" << ".g" << "h" << "i"); QCOMPARE(itemsInsertedSpy.count(), 1); QCOMPARE(itemsRemovedSpy.count(), 0); itemRangeList = itemsInsertedSpy.takeFirst().at(0).value(); - QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(4, 4)); + QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 2) << KItemRange(2, 2)); m_model->clear(); QCOMPARE(itemsInModel(), QStringList()); -- cgit v1.3