┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorArnav Dhamija <[email protected]>2016-03-16 20:53:52 +0100
committerEmmanuel Pescosta <[email protected]>2016-03-16 20:53:52 +0100
commit92c0ecde90f30061bef321f50fbea99616e852a7 (patch)
tree58d4487c38533b932d7dbbbbb5f058e28abdc3a6 /src/kitemviews
parent189d5cd0f94eda044e243972961a85218bc3b2fe (diff)
Add case sensitive sorting mode
Dolphin users can now choose between 3 different sorting modes: * natural sorting * case insensitive sorting * case sensitive sorting REVIEW: 126467 BUG: 148550 FIXED-IN: 16.04.0
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp32
-rw-r--r--src/kitemviews/kfileitemmodel.h7
2 files changed, 32 insertions, 7 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index b8b39603c..8626f947d 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -41,7 +41,6 @@
KFileItemModel::KFileItemModel(QObject* parent) :
KItemModelBase("text", parent),
m_dirLister(0),
- m_naturalSorting(GeneralSettings::naturalSorting()),
m_sortDirsFirst(true),
m_sortRole(NameRole),
m_sortingProgressPercent(-1),
@@ -58,9 +57,10 @@ KFileItemModel::KFileItemModel(QObject* parent) :
m_expandedDirs(),
m_urlsToExpand()
{
- m_collator.setCaseSensitivity(Qt::CaseInsensitive);
m_collator.setNumericMode(true);
+ loadSortingSettings();
+
m_dirLister = new KFileItemModelDirLister(this);
m_dirLister->setDelayedMimeTypes(true);
@@ -106,8 +106,7 @@ KFileItemModel::KFileItemModel(QObject* parent) :
m_resortAllItemsTimer->setSingleShot(true);
connect(m_resortAllItemsTimer, &QTimer::timeout, this, &KFileItemModel::resortAllItems);
- connect(GeneralSettings::self(), &GeneralSettings::naturalSortingChanged,
- this, &KFileItemModel::slotNaturalSortingChanged);
+ connect(GeneralSettings::self(), &GeneralSettings::sortingChoiceChanged, this, &KFileItemModel::slotSortingChoiceChanged);
}
KFileItemModel::~KFileItemModel()
@@ -783,6 +782,27 @@ void KFileItemModel::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder pre
resortAllItems();
}
+void KFileItemModel::loadSortingSettings()
+{
+ using Choice = GeneralSettings::EnumSortingChoice;
+ switch (GeneralSettings::sortingChoice()) {
+ case Choice::NaturalSorting:
+ m_naturalSorting = true;
+ m_collator.setCaseSensitivity(Qt::CaseInsensitive);
+ break;
+ case Choice::CaseSensitiveSorting:
+ m_naturalSorting = false;
+ m_collator.setCaseSensitivity(Qt::CaseSensitive);
+ break;
+ case Choice::CaseInsensitiveSorting:
+ m_naturalSorting = false;
+ m_collator.setCaseSensitivity(Qt::CaseInsensitive);
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
+}
+
void KFileItemModel::resortAllItems()
{
m_resortAllItemsTimer->stop();
@@ -1103,9 +1123,9 @@ void KFileItemModel::slotClear()
m_expandedDirs.clear();
}
-void KFileItemModel::slotNaturalSortingChanged()
+void KFileItemModel::slotSortingChoiceChanged()
{
- m_naturalSorting = GeneralSettings::naturalSorting();
+ loadSortingSettings();
resortAllItems();
}
diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h
index e06313aa9..8a0df72b9 100644
--- a/src/kitemviews/kfileitemmodel.h
+++ b/src/kitemviews/kfileitemmodel.h
@@ -273,7 +273,7 @@ private slots:
void slotItemsDeleted(const KFileItemList& items);
void slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& items);
void slotClear();
- void slotNaturalSortingChanged();
+ void slotSortingChoiceChanged();
void dispatchPendingItemsToInsert();
@@ -416,6 +416,11 @@ private:
void removeFilteredChildren(const KItemRangeList& parents);
/**
+ * Loads the selected choice of sorting method from Dolphin General Settings
+ */
+ void loadSortingSettings();
+
+ /**
* Maps the QByteArray-roles to RoleTypes and provides translation- and
* group-contexts.
*/