File indexing completed on 2024-04-28 11:44:19
0001 /* 0002 SPDX-FileCopyrightText: 2022 Alexander Lohnau <alexander.lohnau@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <KAboutData> 0008 #include <KConfigGroup> 0009 #include <KDesktopFile> 0010 #include <KPluginMetaData> 0011 #include <QJsonArray> 0012 #include <QJsonObject> 0013 #include <QString> 0014 0015 template<class T = QString> 0016 inline void copyIfExists(const KConfigGroup &grp, QJsonObject &obj, const char *key, const T &t = QString()) 0017 { 0018 copyAndRenameIfExists(grp, obj, key, key, t); 0019 } 0020 0021 template<class T> 0022 inline void copyAndRenameIfExists(const KConfigGroup &grp, QJsonObject &obj, const char *oldKey, const char *key, const T &t) 0023 { 0024 if (grp.hasKey(oldKey)) { 0025 obj.insert(QLatin1String(key), grp.readEntry(oldKey, t)); 0026 } 0027 } 0028 inline KPluginMetaData parseMetaDataFromDesktopFile(const QString &fileName) 0029 { 0030 KDesktopFile file(fileName); 0031 const KConfigGroup grp = file.desktopGroup(); 0032 0033 QJsonObject kplugin; 0034 copyIfExists(grp, kplugin, "Name"); 0035 copyIfExists(grp, kplugin, "Icon"); 0036 copyAndRenameIfExists(grp, kplugin, "X-KDE-PluginInfo-Name", "Id", QString()); 0037 copyIfExists(grp, kplugin, "Description"); 0038 copyAndRenameIfExists(grp, kplugin, "Comment", "Description", QString()); 0039 copyAndRenameIfExists(grp, kplugin, "X-KDE-PluginInfo-EnabledByDefault", "EnabledByDefault", false); 0040 QJsonObject root; 0041 root.insert(QLatin1String("KPlugin"), kplugin); 0042 0043 copyIfExists(grp, root, "X-Plasma-DBusRunner-Service"); 0044 copyIfExists(grp, root, "X-Plasma-DBusRunner-Path"); 0045 copyIfExists(grp, root, "X-Plasma-Runner-Unique-Results", false); 0046 copyIfExists(grp, root, "X-Plasma-Runner-Weak-Results", false); 0047 copyIfExists(grp, root, "X-Plasma-API"); 0048 copyIfExists(grp, root, "X-Plasma-Request-Actions-Once", false); 0049 copyIfExists(grp, root, "X-Plasma-AdvertiseSingleRunnerQueryMode", false); 0050 copyIfExists(grp, root, "X-Plasma-Runner-Min-Letter-Count", 0); 0051 copyIfExists(grp, root, "X-Plasma-Runner-Match-Regex"); 0052 root.insert(QLatin1String("X-Plasma-Runner-Syntaxes"), QJsonArray::fromStringList(grp.readEntry("X-Plasma-Runner-Syntaxes", QStringList()))); 0053 root.insert(QLatin1String("X-Plasma-Runner-Syntax-Descriptions"), 0054 QJsonArray::fromStringList(grp.readEntry("X-Plasma-Runner-Syntax-Descriptions", QStringList()))); 0055 QJsonObject author; 0056 author.insert(QLatin1String("Name"), grp.readEntry("X-KDE-PluginInfo-Author")); 0057 author.insert(QLatin1String("Email"), grp.readEntry("X-KDE-PluginInfo-Email")); 0058 author.insert(QLatin1String("Website"), grp.readEntry("X-KDE-PluginInfo-Website")); 0059 0060 return KPluginMetaData(root, fileName); 0061 }