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 }