┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Brüns <[email protected]>2020-12-28 01:07:52 +0100
committerStefan Brüns <[email protected]>2021-01-11 12:28:38 +0100
commitdcdf4b01c8b0517ad23b420316e27c8dce9cef82 (patch)
tree6f6726abb7c3bb60f34f00e991e769639bc3fd51 /src
parentfa60438376d02c0f05b45ce7b2ead529eb9859a4 (diff)
[BalooRolesProvider] Reduce number of XAttr reads
Typically most of the extended attributes are not set for a file. Instead of trying to fetch each attribute individually check which attributes exist first.
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/private/kbaloorolesprovider.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/kitemviews/private/kbaloorolesprovider.cpp b/src/kitemviews/private/kbaloorolesprovider.cpp
index ed79a79f8..df60a2533 100644
--- a/src/kitemviews/private/kbaloorolesprovider.cpp
+++ b/src/kitemviews/private/kbaloorolesprovider.cpp
@@ -91,17 +91,37 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f
rangeBegin = rangeEnd;
}
- KFileMetaData::UserMetaData md(file.path());
+ KFileMetaData::UserMetaData::Attributes attributes;
if (roles.contains("tags")) {
- values.insert("tags", tagsFromValues(md.tags()));
+ attributes |= KFileMetaData::UserMetaData::Tags;
}
if (roles.contains("rating")) {
- values.insert("rating", QString::number(md.rating()));
+ attributes |= KFileMetaData::UserMetaData::Rating;
}
if (roles.contains("comment")) {
- values.insert("comment", md.userComment());
+ attributes |= KFileMetaData::UserMetaData::Comment;
}
if (roles.contains("originUrl")) {
+ attributes |= KFileMetaData::UserMetaData::OriginUrl;
+ }
+
+ if (attributes == KFileMetaData::UserMetaData::None) {
+ return values;
+ }
+
+ KFileMetaData::UserMetaData md(file.path());
+ attributes = md.queryAttributes(attributes);
+
+ if (attributes & KFileMetaData::UserMetaData::Tags) {
+ values.insert("tags", tagsFromValues(md.tags()));
+ }
+ if (attributes & KFileMetaData::UserMetaData::Rating) {
+ values.insert("rating", QString::number(md.rating()));
+ }
+ if (attributes & KFileMetaData::UserMetaData::Comment) {
+ values.insert("comment", md.userComment());
+ }
+ if (attributes & KFileMetaData::UserMetaData::OriginUrl) {
values.insert("originUrl", md.originUrl());
}