From dcdf4b01c8b0517ad23b420316e27c8dce9cef82 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20Br=C3=BCns?= Date: Mon, 28 Dec 2020 01:07:52 +0100 Subject: [PATCH] [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. --- .../private/kbaloorolesprovider.cpp | 28 ++++++++++++++++--- 1 file 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 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()); } -- 2.47.3