24#include <kconfiggroup.h>
25#include <kdesktopfile.h>
30class PackageMetadataPrivate
33 PackageMetadataPrivate()
49 QString requiredVersion;
58 : d(new PackageMetadataPrivate(*other.d))
68PackageMetadata::PackageMetadata(
const QString &path)
69 : d(new PackageMetadataPrivate)
74PackageMetadata::~PackageMetadata()
79bool PackageMetadata::isValid()
const
81 return ! (d->name.isEmpty() ||
82 d->author.isEmpty() ||
83 d->license.isEmpty() ||
87void PackageMetadata::write(
const QString &filename)
const
89 KDesktopFile cfg(filename);
90 KConfigGroup config = cfg.desktopGroup();
91 config.writeEntry(
"Encoding",
"UTF-8");
93 config.writeEntry(
"Name", d->name);
94 config.writeEntry(
"Icon", d->icon);
95 config.writeEntry(
"Comment", d->description);
96 config.writeEntry(
"Keywords", d->keywords);
97 config.deleteEntry(
"X-KDE-Keywords");
98 config.writeEntry(
"X-KDE-ServiceTypes", d->serviceType);
99 config.deleteEntry(
"ServiceTypes");
100 config.writeEntry(
"X-KDE-PluginInfo-Name", d->pluginName);
101 config.writeEntry(
"X-KDE-PluginInfo-Author", d->author);
102 config.writeEntry(
"X-KDE-PluginInfo-Email", d->email);
103 config.writeEntry(
"X-KDE-PluginInfo-Version", d->version);
104 config.writeEntry(
"X-KDE-PluginInfo-Website", d->website);
105 config.writeEntry(
"X-KDE-PluginInfo-License", d->license);
106 config.writeEntry(
"X-KDE-PluginInfo-Category", d->category);
107 config.writeEntry(
"X-Plasma-API", d->api);
108 config.writeEntry(
"X-KDE-ParentApp", d->app);
109 config.writeEntry(
"Type", d->type);
110 config.writeEntry(
"X-Plasma-RemoteLocation", d->location);
113void PackageMetadata::read(
const QString &filename)
115 if (filename.isEmpty()) {
119 KDesktopFile cfg(filename);
120 KConfigGroup config = cfg.desktopGroup();
122 d->name = config.readEntry(
"Name", d->name);
123 d->icon = config.readEntry(
"Icon", d->icon);
124 d->description = config.readEntry(
"Comment", d->description);
125 bool hasKeywords = config.hasKey(
"Keywords");
126 bool hasXKdeKeywords = config.hasKey(
"X-KDE-Keywords");
127 if (hasKeywords && hasXKdeKeywords) {
128 d->keywords = config.readEntry(
"Keywords", d->keywords);
129 d->keywords.append(config.readEntry(
"X-KDE-Keywords", d->keywords));
130 }
else if (hasKeywords) {
131 d->keywords = config.readEntry(
"Keywords", d->keywords);
132 }
else if (hasXKdeKeywords) {
133 d->keywords = config.readEntry(
"X-KDE-Keywords", d->keywords);
135 bool hasServiceTypes = config.hasKey(
"ServiceTypes");
136 bool hasXKdeServiceTypes = config.hasKey(
"X-KDE-ServiceTypes");
137 if (hasServiceTypes && hasXKdeServiceTypes) {
138 d->serviceType = config.readEntry(
"ServiceTypes", d->serviceType);
139 d->serviceType.append(
',');
140 d->serviceType.append(config.readEntry(
"X-KDE-ServiceTypes", d->serviceType));
141 }
else if (hasServiceTypes) {
142 d->serviceType = config.readEntry(
"ServiceTypes", d->serviceType);
143 }
else if (hasXKdeServiceTypes) {
144 d->serviceType = config.readEntry(
"X-KDE-ServiceTypes", d->serviceType);
146 d->pluginName = config.readEntry(
"X-KDE-PluginInfo-Name", d->pluginName);
147 d->author = config.readEntry(
"X-KDE-PluginInfo-Author", d->author);
148 d->email = config.readEntry(
"X-KDE-PluginInfo-Email", d->email);
149 d->version = config.readEntry(
"X-KDE-PluginInfo-Version", d->version);
150 d->website = config.readEntry(
"X-KDE-PluginInfo-Website", d->website);
151 d->license = config.readEntry(
"X-KDE-PluginInfo-License", d->license);
152 d->category = config.readEntry(
"X-KDE-PluginInfo-Category", d->category);
153 d->api = config.readEntry(
"X-Plasma-API", d->api);
154 d->app = config.readEntry(
"X-KDE-ParentApp", d->app);
155 d->type = config.readEntry(
"Type", d->type);
156 d->location = config.readEntry(
"X-Plasma-RemoteLocation", d->location);
159QString PackageMetadata::name()
const
164QString PackageMetadata::description()
const
166 return d->description;
169QString PackageMetadata::serviceType()
const
171 return d->serviceType;
174QString PackageMetadata::author()
const
179QString PackageMetadata::email()
const
184QString PackageMetadata::icon()
const
189void PackageMetadata::setIcon(
const QString &icon)
194QString PackageMetadata::version()
const
199QString PackageMetadata::website()
const
204QString PackageMetadata::license()
const
209QString PackageMetadata::application()
const
214QString PackageMetadata::category()
const
219void PackageMetadata::setKeywords(
const QStringList &keywords)
224QStringList PackageMetadata::keywords()
const
229QString PackageMetadata::requiredVersion()
const
231 return d->requiredVersion;
234KUrl PackageMetadata::remoteLocation()
const
239QString PackageMetadata::type()
const
244QString PackageMetadata::implementationApi()
const
249void PackageMetadata::setImplementationApi(
const QString &api)
254QString PackageMetadata::pluginName()
const
256 return d->pluginName;
259void PackageMetadata::setPluginName(
const QString &pluginName)
264void PackageMetadata::setName(
const QString &name)
269void PackageMetadata::setDescription(
const QString &description)
274void PackageMetadata::setServiceType(
const QString &serviceType)
279void PackageMetadata::setAuthor(
const QString &author)
284void PackageMetadata::setEmail(
const QString &email)
289void PackageMetadata::setVersion(
const QString &version)
294void PackageMetadata::setWebsite(
const QString &website)
299void PackageMetadata::setLicense(
const QString &license)
304void PackageMetadata::setApplication(
const QString &application)
309void PackageMetadata::setCategory(
const QString &category)
314void PackageMetadata::setRequiredVersion(
const QString &requiredVersion)
319void PackageMetadata::setRemoteLocation(
const KUrl &location)
321 d->location = location;
324void PackageMetadata::setType(
const QString &type)
Namespace for everything in libplasma.
unsigned int version()
The runtime version of libplasma.