diff options
| author | Stefan Brüns <[email protected]> | 2020-12-28 01:07:52 +0100 |
|---|---|---|
| committer | Stefan Brüns <[email protected]> | 2021-01-11 12:28:38 +0100 |
| commit | dcdf4b01c8b0517ad23b420316e27c8dce9cef82 (patch) | |
| tree | 6f6726abb7c3bb60f34f00e991e769639bc3fd51 /src/kitemviews/private/kbaloorolesprovider.cpp | |
| parent | fa60438376d02c0f05b45ce7b2ead529eb9859a4 (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/kitemviews/private/kbaloorolesprovider.cpp')
| -rw-r--r-- | src/kitemviews/private/kbaloorolesprovider.cpp | 28 |
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()); } |
