File indexing completed on 2024-04-21 04:58:24
0001 /* 0002 This file is part of the KDE project. 0003 0004 SPDX-FileCopyrightText: 2022 Stefano Crocco <stefano.crocco@alice.it> 0005 0006 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0007 */ 0008 0009 #include "pluginmetadatautils.h" 0010 0011 #include <KParts/PartLoader> 0012 0013 #include <QStringLiteral> 0014 0015 static QString partDir() { 0016 static QString s_partDir{QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR) "/parts")}; 0017 return s_partDir; 0018 } 0019 0020 KPluginMetaData findPartById(const QString& id) 0021 { 0022 return KPluginMetaData::findPluginById(partDir(), id); 0023 } 0024 0025 KPluginMetaData preferredPart(const QString &mimeType) { 0026 QVector<KPluginMetaData> plugins = KParts::PartLoader::partsForMimeType(mimeType); 0027 if (!plugins.isEmpty()) { 0028 return plugins.first(); 0029 } else { 0030 return KPluginMetaData(); 0031 } 0032 } 0033 0034 QVector<KPluginMetaData> findParts(std::function<bool (const KPluginMetaData &)> filter) 0035 { 0036 return KPluginMetaData::findPlugins(partDir(), filter); 0037 } 0038 0039 QVector<KPluginMetaData> findParts(std::function<bool (const KPluginMetaData &)> filter, bool includeDefaultDir) 0040 { 0041 QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(partDir(), filter); 0042 if (includeDefaultDir) { 0043 plugins.append(KPluginMetaData::findPlugins(QString(), filter)); 0044 } 0045 return plugins; 0046 } 0047 0048 QDebug operator<<(QDebug debug, const KPluginMetaData& md) 0049 { 0050 QDebugStateSaver saver(debug); 0051 debug.nospace() << "KPluginMetaData(name:" << md.name() << ", plugin-id:" << md.pluginId() << ')'; 0052 return debug; 0053 } 0054 0055 QDebug operator<<(QDebug debug, const QVector<KPluginMetaData>& vec) 0056 { 0057 QDebugStateSaver saver(debug); 0058 debug.nospace() << "QVector<KPluginMetaData> {\n"; 0059 for (const KPluginMetaData &md : vec) { 0060 debug << '\t' << md << ",\n"; 0061 } 0062 debug << '}'; 0063 return debug; 0064 }