File indexing completed on 2024-05-12 17:07:25

0001 /*
0002     SPDX-FileCopyrightText: 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <QCommandLineParser>
0008 #include <QCoreApplication>
0009 
0010 #include <KAboutData>
0011 #include <KLocalizedString>
0012 
0013 #include <KConfigGroup>
0014 #include <KDesktopFile>
0015 
0016 #include "SolidActionData.h"
0017 
0018 int main(int argc, char *argv[])
0019 {
0020     QCoreApplication application(argc, argv);
0021     KLocalizedString::setApplicationDomain("kcm_solid_actions");
0022 
0023     // About data
0024     KAboutData aboutData(QStringLiteral("solid-action-desktop-gen"),
0025                          i18n("Solid Action Desktop File Generator"),
0026                          QStringLiteral("0.4"),
0027                          i18n("Tool to automatically generate Desktop Files from Solid DeviceInterface classes for translation"),
0028                          KAboutLicense::GPL,
0029                          i18n("(c) 2009, Ben Cooksley"));
0030     aboutData.addAuthor(i18n("Ben Cooksley"), i18n("Maintainer"), QStringLiteral("ben@eclipse.endoftheinternet.org"));
0031     KAboutData::setApplicationData(aboutData);
0032 
0033     QCommandLineParser parser;
0034     aboutData.setupCommandLine(&parser);
0035     parser.process(application);
0036     aboutData.processCommandLine(&parser);
0037 
0038     SolidActionData *availActions = SolidActionData::instance();
0039     const auto interfaceTypes = availActions->interfaceTypeList();
0040     for (Solid::DeviceInterface::Type internalType : interfaceTypes) {
0041         const QString typeName = Solid::DeviceInterface::typeToString(internalType);
0042         KDesktopFile typeFile(QStandardPaths::GenericDataLocation, "solid/devices/solid-device-" + typeName + ".desktop");
0043         KConfigGroup tConfig = typeFile.desktopGroup();
0044 
0045         tConfig.writeEntry("Name", "Solid Device");
0046         tConfig.writeEntry("X-KDE-ServiceTypes", "SolidDevice");
0047         tConfig.writeEntry("Type", "Service");
0048 
0049         if (!tConfig.hasKey("X-KDE-Solid-Actions-Type")) {
0050             tConfig.writeEntry("X-KDE-Solid-Actions-Type", typeName);
0051         }
0052 
0053         const QStringList typeValues = availActions->propertyInternalList(internalType);
0054         const QString actionText = typeValues.join(QLatin1Char(';')).append(";");
0055         tConfig.writeEntry("Actions", actionText);
0056 
0057         for (const QString &tValue : typeValues) {
0058             KConfigGroup vConfig = typeFile.actionGroup(tValue);
0059             if (!vConfig.hasKey("Name")) {
0060                 vConfig.writeEntry("Name", availActions->propertyName(internalType, tValue));
0061             }
0062             vConfig.sync();
0063         }
0064         tConfig.sync();
0065         typeFile.sync();
0066     }
0067 
0068     return 0;
0069 }