File indexing completed on 2024-03-24 15:25:29

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 }