• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Plasma

  • sources
  • kde-4.12
  • kdelibs
  • plasma
packagemetadata.cpp
Go to the documentation of this file.
1 /******************************************************************************
2 * Copyright 2007 by Riccardo Iaconelli <riccardo@kde.org> *
3 * *
4 * This library is free software; you can redistribute it and/or *
5 * modify it under the terms of the GNU Library General Public *
6 * License as published by the Free Software Foundation; either *
7 * version 2 of the License, or (at your option) any later version. *
8 * *
9 * This library is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
12 * Library General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU Library General Public License *
15 * along with this library; see the file COPYING.LIB. If not, write to *
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
17 * Boston, MA 02110-1301, USA. *
18 *******************************************************************************/
19 
20 #include <packagemetadata.h>
21 
22 #include <QDir>
23 
24 #include <kconfiggroup.h>
25 #include <kdesktopfile.h>
26 
27 namespace Plasma
28 {
29 
30 class PackageMetadataPrivate
31 {
32  public:
33  PackageMetadataPrivate()
34  : type("Service")
35  {
36  }
37 
38  QString name;
39  QString icon;
40  QString description;
41  QStringList keywords;
42  QString author;
43  QString email;
44  QString version;
45  QString website;
46  QString license;
47  QString app;
48  QString category;
49  QString requiredVersion;
50  QString pluginName;
51  QString type;
52  QString serviceType;
53  QString api;
54  KUrl location;
55 };
56 
57 PackageMetadata::PackageMetadata(const PackageMetadata &other)
58  : d(new PackageMetadataPrivate(*other.d))
59 {
60 }
61 
62 PackageMetadata &PackageMetadata::operator=(const PackageMetadata &other)
63 {
64  *d = *other.d;
65  return *this;
66 }
67 
68 PackageMetadata::PackageMetadata(const QString &path)
69  : d(new PackageMetadataPrivate)
70 {
71  read(path);
72 }
73 
74 PackageMetadata::~PackageMetadata()
75 {
76  delete d;
77 }
78 
79 bool PackageMetadata::isValid() const
80 {
81  return ! (d->name.isEmpty() ||
82  d->author.isEmpty() ||
83  d->license.isEmpty() ||
84  d->type.isEmpty());
85 }
86 
87 void PackageMetadata::write(const QString &filename) const
88 {
89  KDesktopFile cfg(filename);
90  KConfigGroup config = cfg.desktopGroup();
91  config.writeEntry("Encoding", "UTF-8");
92 
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);
111 }
112 
113 void PackageMetadata::read(const QString &filename)
114 {
115  if (filename.isEmpty()) {
116  return;
117  }
118 
119  KDesktopFile cfg(filename);
120  KConfigGroup config = cfg.desktopGroup();
121 
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);
134  }
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);
145  }
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);
157 }
158 
159 QString PackageMetadata::name() const
160 {
161  return d->name;
162 }
163 
164 QString PackageMetadata::description() const
165 {
166  return d->description;
167 }
168 
169 QString PackageMetadata::serviceType() const
170 {
171  return d->serviceType;
172 }
173 
174 QString PackageMetadata::author() const
175 {
176  return d->author;
177 }
178 
179 QString PackageMetadata::email() const
180 {
181  return d->email;
182 }
183 
184 QString PackageMetadata::icon() const
185 {
186  return d->icon;
187 }
188 
189 void PackageMetadata::setIcon(const QString &icon)
190 {
191  d->icon = icon;
192 }
193 
194 QString PackageMetadata::version() const
195 {
196  return d->version;
197 }
198 
199 QString PackageMetadata::website() const
200 {
201  return d->website;
202 }
203 
204 QString PackageMetadata::license() const
205 {
206  return d->license;
207 }
208 
209 QString PackageMetadata::application() const
210 {
211  return d->app;
212 }
213 
214 QString PackageMetadata::category() const
215 {
216  return d->category;
217 }
218 
219 void PackageMetadata::setKeywords(const QStringList &keywords)
220 {
221  d->keywords = keywords;
222 }
223 
224 QStringList PackageMetadata::keywords() const
225 {
226  return d->keywords;
227 }
228 
229 QString PackageMetadata::requiredVersion() const
230 {
231  return d->requiredVersion;
232 }
233 
234 KUrl PackageMetadata::remoteLocation() const
235 {
236  return d->location;
237 }
238 
239 QString PackageMetadata::type() const
240 {
241  return d->type;
242 }
243 
244 QString PackageMetadata::implementationApi() const
245 {
246  return d->api;
247 }
248 
249 void PackageMetadata::setImplementationApi(const QString &api)
250 {
251  d->api = api;
252 }
253 
254 QString PackageMetadata::pluginName() const
255 {
256  return d->pluginName;
257 }
258 
259 void PackageMetadata::setPluginName(const QString &pluginName)
260 {
261  d->pluginName = pluginName;
262 }
263 
264 void PackageMetadata::setName(const QString &name)
265 {
266  d->name = name;
267 }
268 
269 void PackageMetadata::setDescription(const QString &description)
270 {
271  d->description = description;
272 }
273 
274 void PackageMetadata::setServiceType(const QString &serviceType)
275 {
276  d->serviceType = serviceType;
277 }
278 
279 void PackageMetadata::setAuthor(const QString &author)
280 {
281  d->author = author;
282 }
283 
284 void PackageMetadata::setEmail(const QString &email)
285 {
286  d->email = email;
287 }
288 
289 void PackageMetadata::setVersion(const QString &version)
290 {
291  d->version = version;
292 }
293 
294 void PackageMetadata::setWebsite(const QString &website)
295 {
296  d->website = website;
297 }
298 
299 void PackageMetadata::setLicense(const QString &license)
300 {
301  d->license = license;
302 }
303 
304 void PackageMetadata::setApplication(const QString &application)
305 {
306  d->app = application;
307 }
308 
309 void PackageMetadata::setCategory(const QString &category)
310 {
311  d->category = category;
312 }
313 
314 void PackageMetadata::setRequiredVersion(const QString &requiredVersion)
315 {
316  d->requiredVersion = requiredVersion;
317 }
318 
319 void PackageMetadata::setRemoteLocation(const KUrl &location)
320 {
321  d->location = location;
322 }
323 
324 void PackageMetadata::setType(const QString &type)
325 {
326  d->type = type;
327 }
328 
329 } // namespace Plasma
330 
Plasma::PackageMetadata::keywords
QStringList keywords() const
Definition: packagemetadata.cpp:224
packagemetadata.h
Plasma::PackageMetadata::serviceType
QString serviceType() const
Definition: packagemetadata.cpp:169
Plasma::PackageMetadata::setServiceType
void setServiceType(const QString &)
Set the service-type which defines the X-KDE-ServiceTypes type within the desktop file...
Definition: packagemetadata.cpp:274
Plasma::PackageMetadata::setEmail
void setEmail(const QString &)
Set the E-Mail address of the author or of the project that provided the package. ...
Definition: packagemetadata.cpp:284
Plasma::PackageMetadata::setWebsite
void setWebsite(const QString &)
Set the website URL where the package is hosted or where additional details about the project are ava...
Definition: packagemetadata.cpp:294
Plasma::PackageMetadata::author
QString author() const
Definition: packagemetadata.cpp:174
Plasma::PackageMetadata::requiredVersion
QString requiredVersion() const
Definition: packagemetadata.cpp:229
Plasma::PackageMetadata::pluginName
QString pluginName() const
Definition: packagemetadata.cpp:254
Plasma::PackageMetadata::application
QString application() const
Definition: packagemetadata.cpp:209
Plasma::PackageMetadata::setCategory
void setCategory(const QString &)
Sets the category this package belongs in.
Definition: packagemetadata.cpp:309
Plasma::PackageMetadata::name
QString name() const
Definition: packagemetadata.cpp:159
Plasma::PackageMetadata::description
QString description() const
Definition: packagemetadata.cpp:164
Plasma::PackageMetadata::operator=
PackageMetadata & operator=(const PackageMetadata &other)
Definition: packagemetadata.cpp:62
Plasma::PackageMetadata::write
void write(const QString &filename) const
Writes out the metadata to filename, which should be a .desktop file.
Definition: packagemetadata.cpp:87
Plasma::PackageMetadata::read
void read(const QString &filename)
Reads in metadata from a file, which should be a .desktop file.
Definition: packagemetadata.cpp:113
Plasma::version
unsigned int version()
The runtime version of libplasma.
Definition: version.cpp:26
Plasma::PackageMetadata::isValid
bool isValid() const
Definition: packagemetadata.cpp:79
Plasma::PackageMetadata::website
QString website() const
Definition: packagemetadata.cpp:199
Plasma::PackageMetadata::type
QString type() const
Definition: packagemetadata.cpp:239
Plasma::PackageMetadata::setApplication
void setApplication(const QString &)
Set the name of the application this package may belongs to.
Definition: packagemetadata.cpp:304
Plasma::PackageMetadata::setPluginName
void setPluginName(const QString &name)
Set the plugin name of the package.
Definition: packagemetadata.cpp:259
Plasma::PackageMetadata::setDescription
void setDescription(const QString &)
Set the description used to provide some general information what the package is about.
Definition: packagemetadata.cpp:269
Plasma::PackageMetadata::PackageMetadata
PackageMetadata(const QString &path=QString())
Constructs a metadata object using the values in the file at path.
Definition: packagemetadata.cpp:68
Plasma::PackageMetadata::remoteLocation
KUrl remoteLocation() const
Definition: packagemetadata.cpp:234
Plasma::PackageMetadata::setAuthor
void setAuthor(const QString &)
Set the name of the author of the package.
Definition: packagemetadata.cpp:279
Plasma::PackageMetadata::setVersion
void setVersion(const QString &)
Set the version of the package.
Definition: packagemetadata.cpp:289
Plasma::PackageMetadata::icon
QString icon() const
Returns the icon name associated with this package, or QString() if none.
Definition: packagemetadata.cpp:184
Plasma::PackageMetadata::setRequiredVersion
void setRequiredVersion(const QString &)
Set the required version.
Definition: packagemetadata.cpp:314
Plasma::PackageMetadata::setImplementationApi
void setImplementationApi(const QString &api)
Set the implementation API this package uses.
Definition: packagemetadata.cpp:249
Plasma::PackageMetadata::license
QString license() const
Definition: packagemetadata.cpp:204
Plasma::PackageMetadata::implementationApi
QString implementationApi() const
Definition: packagemetadata.cpp:244
Plasma::type
static QScriptValue type(QScriptContext *ctx, QScriptEngine *eng)
Definition: easingcurve.cpp:63
Plasma::PackageMetadata::category
QString category() const
Definition: packagemetadata.cpp:214
Plasma::PackageMetadata::version
QString version() const
Definition: packagemetadata.cpp:194
Plasma::PackageMetadata
Provides metadata for a Package.
Definition: packagemetadata.h:39
Plasma::PackageMetadata::setRemoteLocation
void setRemoteLocation(const KUrl &)
Set the url where this package is hosted.
Definition: packagemetadata.cpp:319
Plasma::PackageMetadata::email
QString email() const
Definition: packagemetadata.cpp:179
Plasma::PackageMetadata::setLicense
void setLicense(const QString &)
Set the license the package is distributed under.
Definition: packagemetadata.cpp:299
Plasma::PackageMetadata::setKeywords
void setKeywords(const QStringList &keywords)
Set the keywords used to provide search and categorizations.
Definition: packagemetadata.cpp:219
Plasma::PackageMetadata::setType
void setType(const QString &type)
Set the type of the package.
Definition: packagemetadata.cpp:324
Plasma::PackageMetadata::~PackageMetadata
~PackageMetadata()
Definition: packagemetadata.cpp:74
Plasma::PackageMetadata::setName
void setName(const QString &)
Set the name of the package used to displayed a short describing name.
Definition: packagemetadata.cpp:264
Plasma::PackageMetadata::setIcon
void setIcon(const QString &icon)
Set the icon name to be used with this package.
Definition: packagemetadata.cpp:189
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:33 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Plasma

Skip menu "Plasma"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal