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 }