diff --git a/package.cpp b/package.cpp index 1ff0380ce..34735710b 100644 --- a/package.cpp +++ b/package.cpp @@ -757,7 +757,11 @@ PackagePrivate::PackagePrivate(const PackageStructure::Ptr st, const QString &p) service(0) { if (structure) { - structure->setPath(p); + if (p.isEmpty()) { + structure->setPath(structure->defaultPackageRoot()); + } else { + structure->setPath(p); + } } valid = structure && !structure->path().isEmpty(); diff --git a/packagestructure.cpp b/packagestructure.cpp index 4fb78c33a..8bfb12482 100644 --- a/packagestructure.cpp +++ b/packagestructure.cpp @@ -145,6 +145,10 @@ PackageStructure::Ptr PackageStructure::load(const QString &packageFormat) } else if (packageFormat == "Plasma/Theme") { structure = Theme::packageStructure(); structure->d->type = "Plasma/Theme"; + } else if (packageFormat == "Plasma/Generic") { + structure = defaultPackageStructure(GenericComponent); + structure->d->type = "Plasma/Generic"; + structure->setDefaultPackageRoot(KStandardDirs::locate("data", "plasmapackages")); } if (structure) { diff --git a/plasma.h b/plasma.h index d6b9f8bd3..e4a1c7b1f 100644 --- a/plasma.h +++ b/plasma.h @@ -234,7 +234,8 @@ enum ComponentType { RunnerComponent = 4, /**< Plasma::AbstractRunner based plugsin **/ AnimatorComponent = 8, /**< Plasma::Animator based plugins **/ ContainmentComponent = 16,/**< Plasma::Containment based plugins **/ - WallpaperComponent = 32 /**< Plasma::Wallpaper based plugins **/ + WallpaperComponent = 32, /**< Plasma::Wallpaper based plugins **/ + GenericComponent = 64 /** Generic repositories of files, usually they keep QML files and their assets **/ }; Q_DECLARE_FLAGS(ComponentTypes, ComponentType)