diff --git a/package.cpp b/package.cpp index bb9b43ba2..0802a3c5b 100644 --- a/package.cpp +++ b/package.cpp @@ -68,6 +68,12 @@ Package::Package(const QString& packageRoot, const QString& package, { } +Package::Package(const QString &packagePath, const PackageStructure &structure) + : d(new Private(structure, packagePath)) +{ +} + + Package::~Package() { delete d; diff --git a/package.h b/package.h index 8c64a3d8a..3f6a2bfdb 100644 --- a/package.h +++ b/package.h @@ -47,6 +47,15 @@ class PLASMA_EXPORT Package **/ Package(const QString& packageRoot, const QString& package, const PackageStructure& structure); + + /** + * Construct a Package object. + * + * @arg packagePath full path to the package directory + * @arg structure the package structure describing this package + */ + Package(const QString &packagePath, const PackageStructure &structure); + ~Package(); /** diff --git a/packagemetadata.cpp b/packagemetadata.cpp index 858603fd1..c3b831cf4 100644 --- a/packagemetadata.cpp +++ b/packagemetadata.cpp @@ -89,7 +89,7 @@ void PackageMetadata::write(const QString& filename) const config.writeEntry("Description", d->description); config.writeEntry("Icon", d->icon); config.writeEntry("X-KDE-Screenshot", d->screenshot); - config.writeEntry("ServiceTypes", d->serviceType); + config.writeEntry("X-KDE-ServiceTypes", d->serviceType); config.writeEntry("X-KDE-PluginInfo-Name", d->name); config.writeEntry("X-KDE-PluginInfo-Author", d->author); config.writeEntry("X-KDE-PluginInfo-Email", d->email); @@ -112,7 +112,7 @@ void PackageMetadata::read(const QString& filename) d->description = config.readEntry("Description", d->description); d->icon = config.readEntry("Icon", d->icon); d->screenshot= config.readEntry("X-KDE-Screenshot", d->screenshot); - d->serviceType = config.readEntry("ServiceTypes", d->serviceType); + d->serviceType = config.readEntry("X-KDE-ServiceTypes", d->serviceType); d->author = config.readEntry("X-KDE-PluginInfo-Author", d->author); d->email = config.readEntry("X-KDE-PluginInfo-Email", d->email); d->version = config.readEntry("X-KDE-PluginInfo-Version", d->version); diff --git a/packagestructure.cpp b/packagestructure.cpp index 074fa6224..bcc157f34 100644 --- a/packagestructure.cpp +++ b/packagestructure.cpp @@ -19,7 +19,7 @@ #include "packagestructure.h" -#include +#include namespace Plasma { @@ -53,7 +53,7 @@ class PackageStructure::Private { public: QString type; - QHash contents; + QMap contents; QStringList mimetypes; }; @@ -84,28 +84,28 @@ PackageStructure& PackageStructure::operator=(const PackageStructure& rhs) return *this; } -QString PackageStructure::type() +QString PackageStructure::type() const { return d->type; } -QList PackageStructure::directories() +QList PackageStructure::directories() const { QList dirs; - QHash::const_iterator it = d->contents.constBegin(); + QMap::const_iterator it = d->contents.constBegin(); while (it != d->contents.constEnd()) { if (it.value().directory) { - dirs << it.key(); + dirs << it.key().constData(); } ++it; } return dirs; } -QList PackageStructure::requiredDirectories() +QList PackageStructure::requiredDirectories() const { QList dirs; - QHash::const_iterator it = d->contents.constBegin(); + QMap::const_iterator it = d->contents.constBegin(); while (it != d->contents.constEnd()) { if (it.value().directory && it.value().required) { @@ -116,10 +116,10 @@ QList PackageStructure::requiredDirectories() return dirs; } -QList PackageStructure::files() +QList PackageStructure::files() const { QList files; - QHash::const_iterator it = d->contents.constBegin(); + QMap::const_iterator it = d->contents.constBegin(); while (it != d->contents.constEnd()) { if (!it.value().directory) { files << it.key(); @@ -129,10 +129,10 @@ QList PackageStructure::files() return files; } -QList PackageStructure::requiredFiles() +QList PackageStructure::requiredFiles() const { QList files; - QHash::const_iterator it = d->contents.constBegin(); + QMap::const_iterator it = d->contents.constBegin(); while (it != d->contents.constEnd()) { if (!it.value().directory && it.value().required) { files << it.key(); @@ -162,9 +162,9 @@ void PackageStructure::addFileDefinition(const char* key, const QString& path, c d->contents[key] = s; } -QString PackageStructure::path(const char* key) +QString PackageStructure::path(const char* key) const { - QHash::const_iterator it = d->contents.find(key); + QMap::const_iterator it = d->contents.find(key); if (it == d->contents.constEnd()) { return QString(); } @@ -172,9 +172,9 @@ QString PackageStructure::path(const char* key) return it.value().path; } -QString PackageStructure::name(const char* key) +QString PackageStructure::name(const char* key) const { - QHash::const_iterator it = d->contents.find(key); + QMap::const_iterator it = d->contents.find(key); if (it == d->contents.constEnd()) { return QString(); } @@ -184,7 +184,7 @@ QString PackageStructure::name(const char* key) void PackageStructure::setRequired(const char* key, bool required) { - QHash::iterator it = d->contents.find(key); + QMap::iterator it = d->contents.find(key); if (it == d->contents.end()) { return; } @@ -192,9 +192,9 @@ void PackageStructure::setRequired(const char* key, bool required) it.value().required = required; } -bool PackageStructure::required(const char* key) +bool PackageStructure::required(const char* key) const { - QHash::const_iterator it = d->contents.find(key); + QMap::const_iterator it = d->contents.find(key); if (it == d->contents.constEnd()) { return false; } @@ -209,7 +209,7 @@ void PackageStructure::setDefaultMimetypes(QStringList mimetypes) void PackageStructure::setMimetypes(const char* key, QStringList mimetypes) { - QHash::iterator it = d->contents.find(key); + QMap::iterator it = d->contents.find(key); if (it == d->contents.end()) { return; } @@ -217,9 +217,9 @@ void PackageStructure::setMimetypes(const char* key, QStringList mimetypes) it.value().mimetypes = mimetypes; } -QStringList PackageStructure::mimetypes(const char* key) +QStringList PackageStructure::mimetypes(const char* key) const { - QHash::const_iterator it = d->contents.find(key); + QMap::const_iterator it = d->contents.find(key); if (it == d->contents.constEnd()) { return QStringList(); } diff --git a/packagestructure.h b/packagestructure.h index bd64893da..917023b79 100644 --- a/packagestructure.h +++ b/packagestructure.h @@ -70,27 +70,27 @@ public: /** * Type of package this structure describes **/ - QString type(); + QString type() const; /** * The directories defined for this package **/ - QList directories(); + QList directories() const; /** * The required directories defined for this package **/ - QList requiredDirectories(); + QList requiredDirectories() const; /** * The individual files, by key, that are defined for this package **/ - QList files(); + QList files() const; /** * The individual required files, by key, that are defined for this package **/ - QList requiredFiles(); + QList requiredFiles() const; /** * Adds a directory to the structure of the package. It is added as @@ -115,12 +115,12 @@ public: /** * @return path relative to the package root for the given entry **/ - QString path(const char* key); + QString path(const char* key) const; /** * @return user visible name for the given entry **/ - QString name(const char* key); + QString name(const char* key) const; /** * Sets whether or not a given part of the structure is required or not. @@ -135,7 +135,7 @@ public: /** * @return true if the item at path exists and is required **/ - bool required(const char* key); + bool required(const char* key) const; /** * Defines the default mimetypes for any definitions that do not have @@ -159,7 +159,7 @@ public: /** * @return the mimetypes associated with the path, if any **/ - QStringList mimetypes(const char* key); + QStringList mimetypes(const char* key) const; /** * Copy constructor diff --git a/tests/plasmoidpackagetest.cpp b/tests/plasmoidpackagetest.cpp index f5c8c1af2..be80b05b5 100644 --- a/tests/plasmoidpackagetest.cpp +++ b/tests/plasmoidpackagetest.cpp @@ -239,9 +239,9 @@ void PlasmoidPackageTest::entryList() void PlasmoidPackageTest::knownPackages() { // Don't do strange things when package root doesn't exists. - QDir pRoot = QDir(mPackageRoot); + QDir pRoot = QDir(mPackageRoot + "blah"); QVERIFY(!pRoot.exists()); - p = new Plasma::Package(mPackageRoot, mPackage, *ps); + p = new Plasma::Package(mPackageRoot + "blah", mPackage, *ps); QCOMPARE(p->knownPackages(mPackageRoot), QStringList()); delete p; @@ -278,4 +278,14 @@ void PlasmoidPackageTest::knownPackages() QVERIFY(packages.contains(plamoid2)); } +void PlasmoidPackageTest::metadata() +{ + QString plasmoid("plasmoid_with_metadata"); + createTestPackage(plasmoid); + + QString path = mPackageRoot + '/' + plasmoid + "/metadata.desktop"; + p = new Plasma::Package(mPackageRoot, plasmoid, *ps); + QCOMPARE(p->filePath("metadata"), path); +} + QTEST_KDEMAIN(PlasmoidPackageTest, NoGUI) diff --git a/tests/plasmoidpackagetest.h b/tests/plasmoidpackagetest.h index 9c79673da..492d71a6d 100644 --- a/tests/plasmoidpackagetest.h +++ b/tests/plasmoidpackagetest.h @@ -36,6 +36,7 @@ private Q_SLOTS: void filePath(); void entryList(); void knownPackages(); + void metadata(); private: void removeDir(const QString &subdir);