Warning, file /frameworks/kcmutils/tools/kcmmetadatagenerator.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #include <QFile> 0007 #include <QFileInfo> 0008 #include <QJsonDocument> 0009 #include <QJsonObject> 0010 #include <QString> 0011 0012 int main(int argc, char **argv) 0013 { 0014 Q_ASSERT(argc == 3); 0015 QString fileName = QString::fromLatin1(argv[1]); 0016 0017 QFile file(fileName); 0018 bool isOpen = file.open(QIODevice::ReadOnly); 0019 if (!isOpen) { 0020 qCritical() << "Could not open file" << fileName; 0021 exit(1); 0022 } 0023 QJsonDocument doc = QJsonDocument::fromJson(file.readAll()); 0024 Q_ASSERT(doc.isObject()); 0025 0026 const QJsonObject kplugin = doc.object().value(QLatin1String("KPlugin")).toObject(); 0027 const QLatin1String namePrefix("Name"); 0028 0029 QFile out(QString::fromLatin1(argv[2])); 0030 out.open(QIODevice::WriteOnly); 0031 out.write("[Desktop Entry]\n"); 0032 out.write("Type=Application\n"); 0033 out.write("NoDisplay=true\n"); 0034 out.write("X-KDE-AliasFor=systemsettings\n"); 0035 0036 QString executableProgram = QStringLiteral("systemsettings "); 0037 if (!doc.object().contains(QLatin1String("X-KDE-System-Settings-Parent-Category"))) { 0038 executableProgram = QStringLiteral("kcmshell5 "); 0039 } 0040 0041 const QString exec = QLatin1String("Exec=") + executableProgram + QFileInfo(fileName).baseName() + QLatin1Char('\n'); 0042 out.write(exec.toLatin1()); 0043 const QString icon = QLatin1String("Icon=") + kplugin.value(QLatin1String("Icon")).toString() + QLatin1Char('\n'); 0044 out.write(icon.toLatin1()); 0045 0046 for (auto it = kplugin.begin(), end = kplugin.end(); it != end; ++it) { 0047 const QString key = it.key(); 0048 if (key.startsWith(namePrefix)) { 0049 const QString name = key + QLatin1Char('=') + it.value().toString() + QLatin1Char('\n'); 0050 out.write(name.toLocal8Bit()); 0051 } 0052 } 0053 }