File indexing completed on 2024-04-14 04:35:08

0001 /*
0002     SPDX-FileCopyrightText: 2012 Vishesh Handa <me@vhanda.in>
0003 
0004     Adapted from KFileMetadataWidget
0005     SPDX-FileCopyrightText: 2008 Sebastian Trueg <trueg@kde.org>
0006     SPDX-FileCopyrightText: 2009-2010 Peter Penz <peter.penz@gmx.at>
0007 
0008     SPDX-License-Identifier: LGPL-2.1-or-later
0009 */
0010 
0011 #include "metadatafilter.h"
0012 
0013 #include <KConfig>
0014 #include <KConfigGroup>
0015 
0016 using namespace Baloo;
0017 
0018 MetadataFilter::MetadataFilter(QObject *parent)
0019     : QObject(parent)
0020 {
0021     initMetaInformationSettings();
0022 }
0023 
0024 MetadataFilter::~MetadataFilter() = default;
0025 
0026 void MetadataFilter::initMetaInformationSettings()
0027 {
0028     const int currentVersion = 13; // increase version, if the blacklist of disabled
0029     // properties should be updated
0030 
0031     KConfig config(QStringLiteral("baloofileinformationrc"), KConfig::NoGlobals);
0032     if (config.group(QStringLiteral("Misc")).readEntry("version", 0) < currentVersion) {
0033         // The resource file is read the first time. Assure
0034         // that some meta information is disabled per default.
0035 
0036         // clear old info
0037         config.deleteGroup(QStringLiteral("Show"));
0038         KConfigGroup settings = config.group(QStringLiteral("Show"));
0039 
0040         static const char *const disabledProperties[] = {
0041             "width",
0042             "height", // replaced by dimensions
0043             "comment",
0044             "contentSize",
0045             "depends",
0046             "lastModified",
0047             "created",
0048             "contentCreated",
0049             "mimeType",
0050             "url",
0051             "channels",
0052             "fileName",
0053             "fileSize",
0054             "kfileitem#owner",
0055             "kfileitem#group",
0056             "kfileitem#permissions",
0057             "replayGainAlbumPeak",
0058             "replayGainAlbumGain",
0059             "replayGainTrackPeak",
0060             "replayGainTrackGain",
0061             "embeddedRating",
0062             "lyrics",
0063             "photoWhiteBalance",
0064             "photoMeteringMode",
0065             "photoSharpness",
0066             "photoSaturation",
0067             "photoPixelXDimension",
0068             "photoPixelYDimension",
0069             "photoGpsLongitude",
0070             "photoGpsLatitude",
0071         };
0072 
0073         for (const auto property : disabledProperties) {
0074             settings.writeEntry(property, false);
0075         }
0076 
0077         // mark the group as initialized
0078         config.group(QStringLiteral("Misc")).writeEntry("version", currentVersion);
0079     }
0080 }
0081 
0082 QVariantMap MetadataFilter::filter(const QVariantMap &data)
0083 {
0084     if (data.isEmpty())
0085         return data;
0086 
0087     QVariantMap finalData(data);
0088 
0089     //
0090     // Remove all items, that are marked as hidden in kmetainformationrc
0091     KConfig config(QStringLiteral("baloofileinformationrc"), KConfig::NoGlobals);
0092     KConfigGroup settings = config.group(QStringLiteral("Show"));
0093     QVariantMap::iterator it = finalData.begin();
0094     while (it != finalData.end()) {
0095         const QString uriString = it.key();
0096         if (!settings.readEntry(uriString, true)) {
0097             it = finalData.erase(it);
0098         } else {
0099             ++it;
0100         }
0101     }
0102 
0103     return finalData;
0104 }