┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp34
-rw-r--r--src/kitemviews/kfileitemmodel.h9
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp10
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.h1
-rw-r--r--src/kitemviews/kitemlistcontainer.cpp4
-rw-r--r--src/kitemviews/private/kbaloorolesprovider.cpp7
-rw-r--r--src/kitemviews/private/kitemlistsmoothscroller.cpp5
7 files changed, 53 insertions, 17 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 5f6fed0dc..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();
}
@@ -2200,7 +2220,7 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count)
{ "track", TrackRole, I18N_NOOP2_NOSTRIP("@label", "Track"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "path", PathRole, I18N_NOOP2_NOSTRIP("@label", "Path"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
{ "destination", DestinationRole, I18N_NOOP2_NOSTRIP("@label", "Link Destination"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
- { "copiedFrom", CopiedFromRole, I18N_NOOP2_NOSTRIP("@label", "Copied From"), I18N_NOOP2_NOSTRIP("@label", "Other"), true, false },
+ { "originUrl", OriginUrlRole, I18N_NOOP2_NOSTRIP("@label", "Downloaded From"), I18N_NOOP2_NOSTRIP("@label", "Other"), true, false },
{ "permissions", PermissionsRole, I18N_NOOP2_NOSTRIP("@label", "Permissions"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
{ "owner", OwnerRole, I18N_NOOP2_NOSTRIP("@label", "Owner"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
{ "group", GroupRole, I18N_NOOP2_NOSTRIP("@label", "User Group"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h
index 167f508cf..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();
@@ -285,7 +285,7 @@ private:
// User visible roles available with Baloo:
CommentRole, TagsRole, RatingRole, ImageSizeRole, OrientationRole,
WordCountRole, LineCountRole, ArtistRole, AlbumRole, DurationRole, TrackRole,
- CopiedFromRole,
+ OriginUrlRole,
// Non-visible roles:
IsDirRole, IsLinkRole, IsExpandedRole, IsExpandableRole, ExpandedParentsCountRole,
// Mandatory last entry:
@@ -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.
*/
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp
index d3d3745fc..9f89de8e7 100644
--- a/src/kitemviews/kfileitemmodelrolesupdater.cpp
+++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp
@@ -717,7 +717,13 @@ void KFileItemModelRolesUpdater::applyChangedBalooRoles(const QString& itemUrl)
// the corresponding file has been deleted in the meantime.
return;
}
+ applyChangedBalooRolesForItem(item);
+#endif
+}
+void KFileItemModelRolesUpdater::applyChangedBalooRolesForItem(const KFileItem &item)
+{
+#ifdef HAVE_BALOO
Baloo::File file(item.localPath());
file.load();
@@ -745,7 +751,7 @@ void KFileItemModelRolesUpdater::applyChangedBalooRoles(const QString& itemUrl)
this, &KFileItemModelRolesUpdater::slotItemsChanged);
#else
#ifndef Q_CC_MSVC
- Q_UNUSED(itemUrl);
+ Q_UNUSED(item);
#endif
#endif
}
@@ -1089,7 +1095,7 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
#ifdef HAVE_BALOO
if (m_balooFileMonitor) {
m_balooFileMonitor->addFile(item.localPath());
- applyChangedBalooRoles(item.localPath());
+ applyChangedBalooRolesForItem(item);
}
#endif
return data;
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h
index f3d40a6c5..cd86fce1e 100644
--- a/src/kitemviews/kfileitemmodelrolesupdater.h
+++ b/src/kitemviews/kfileitemmodelrolesupdater.h
@@ -211,6 +211,7 @@ private slots:
void resolveRecentlyChangedItems();
void applyChangedBalooRoles(const QString& file);
+ void applyChangedBalooRolesForItem(const KFileItem& file);
void slotDirectoryContentsCountReceived(const QString& path, int count);
diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp
index c9d521ce7..94b49dbde 100644
--- a/src/kitemviews/kitemlistcontainer.cpp
+++ b/src/kitemviews/kitemlistcontainer.cpp
@@ -194,12 +194,12 @@ void KItemListContainer::wheelEvent(QWheelEvent* event)
}
} else {
const int numDegrees = event->angleDelta().y() / 8;
- const int numSteps = numDegrees / 15;
+ const int numSteps = qApp->wheelScrollLines() * numDegrees / 15;
if (event->modifiers().testFlag(Qt::ShiftModifier)) {
const int scrollingDirection = numSteps > 0 ? 1 : -1;
smoothScroller->scrollTo(scrollBar->value() - scrollBar->pageStep() * scrollingDirection);
} else {
- smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 4);
+ smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 12);
}
}
diff --git a/src/kitemviews/private/kbaloorolesprovider.cpp b/src/kitemviews/private/kbaloorolesprovider.cpp
index 920ce0671..b49499483 100644
--- a/src/kitemviews/private/kbaloorolesprovider.cpp
+++ b/src/kitemviews/private/kbaloorolesprovider.cpp
@@ -109,6 +109,9 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f
if (roles.contains("comment")) {
values.insert("comment", md.userComment());
}
+ if (roles.contains("originUrl")) {
+ values.insert("originUrl", md.originUrl());
+ }
return values;
}
@@ -143,8 +146,8 @@ KBalooRolesProvider::KBalooRolesProvider() :
{ "artist", "artist" },
{ "album", "album" },
{ "duration", "duration" },
- { "trackNumber", "track" }
- // { "http://www.semanticdesktop.org/ontologies/2010/04/30/ndo#copiedFrom", "copiedFrom" }
+ { "trackNumber", "track" },
+ { "originUrl", "originUrl" }
};
for (unsigned int i = 0; i < sizeof(propertyInfoList) / sizeof(PropertyInfo); ++i) {
diff --git a/src/kitemviews/private/kitemlistsmoothscroller.cpp b/src/kitemviews/private/kitemlistsmoothscroller.cpp
index 2bd467aa5..c89d3cf8f 100644
--- a/src/kitemviews/private/kitemlistsmoothscroller.cpp
+++ b/src/kitemviews/private/kitemlistsmoothscroller.cpp
@@ -19,6 +19,7 @@
#include "kitemlistsmoothscroller.h"
+#include <QApplication>
#include <QEvent>
#include <QPropertyAnimation>
#include <QScrollBar>
@@ -200,8 +201,8 @@ void KItemListSmoothScroller::handleWheelEvent(QWheelEvent* event)
numPixels = event->pixelDelta().y();
} else {
const int numDegrees = event->angleDelta().y() / 8;
- const int numSteps = numDegrees / 15;
- numPixels = numSteps * m_scrollBar->pageStep() / 4;
+ const int numSteps = qApp->wheelScrollLines() * numDegrees / 15;
+ numPixels = numSteps * m_scrollBar->pageStep() / 12;
}
int value = m_scrollBar->value();
if (event->modifiers().testFlag(Qt::ShiftModifier)) {