diff options
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 34 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodel.h | 9 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 10 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.h | 1 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistcontainer.cpp | 4 | ||||
| -rw-r--r-- | src/kitemviews/private/kbaloorolesprovider.cpp | 7 | ||||
| -rw-r--r-- | src/kitemviews/private/kitemlistsmoothscroller.cpp | 5 |
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)) { |
