Plasma
packagestructure.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PLASMA_PACKAGESTRUCTURE_H
00021 #define PLASMA_PACKAGESTRUCTURE_H
00022
00023 #include <QtCore/QStringList>
00024 #include <QtCore/QSharedData>
00025
00026 #include <kgenericfactory.h>
00027 #include <klocale.h>
00028 #include <ksharedptr.h>
00029
00030 #include <plasma/version.h>
00031 #include "packagemetadata.h"
00032
00033 class KConfigBase;
00034
00035 namespace Plasma
00036 {
00037
00038 class PackageStructurePrivate;
00039
00072 class PLASMA_EXPORT PackageStructure : public QObject, public QSharedData
00073 {
00074 Q_OBJECT
00075
00076 public:
00077 typedef KSharedPtr<PackageStructure> Ptr;
00078
00084 explicit PackageStructure(QObject *parent = 0,
00085 const QString &type = i18nc("A non-functional package", "Invalid"));
00086
00090 virtual ~PackageStructure();
00091
00095 PackageStructure &operator=(const PackageStructure &rhs);
00096
00105 static PackageStructure::Ptr load(const QString &packageFormat);
00106
00110 QString type() const;
00111
00115 QList<const char*> directories() const;
00116
00120 QList<const char*> requiredDirectories() const;
00121
00125 QList<const char*> files() const;
00126
00130 QList<const char*> requiredFiles() const;
00131
00140 void addDirectoryDefinition(const char *key, const QString &path, const QString &name);
00141
00150 void addFileDefinition(const char *key, const QString &path, const QString &name);
00151
00155 QString path(const char *key) const;
00156
00160 QString name(const char *key) const;
00161
00170 void setRequired(const char *key, bool required);
00171
00175 bool isRequired(const char *key) const;
00176
00184 void setDefaultMimetypes(QStringList mimetypes);
00185
00194 void setMimetypes(const char *key, QStringList mimetypes);
00195
00199 QStringList mimetypes(const char *key) const;
00200
00205 void setPath(const QString &path);
00206
00210 QString path() const;
00211
00215 void read(const KConfigBase *config);
00216
00220 void write(KConfigBase *config) const;
00221
00231 virtual bool installPackage(const QString &archivePath, const QString &packageRoot);
00232
00240 virtual bool uninstallPackage(const QString &packageName, const QString &packageRoot);
00241
00254 virtual void createNewWidgetBrowser(QWidget *parent = 0);
00255
00259 QString contentsPrefix() const;
00260
00264 QString defaultPackageRoot() const;
00265
00269 QString servicePrefix() const;
00270
00274 void setServicePrefix(const QString &servicePrefix);
00275
00279 virtual PackageMetadata metadata();
00280
00285 bool allowExternalPaths() const;
00286
00287 Q_SIGNALS:
00291 void newWidgetBrowserFinished();
00292
00293 protected:
00299 void setAllowExternalPaths(bool allow);
00300
00309 void setContentsPrefix(const QString &prefix);
00310
00314 void setDefaultPackageRoot(const QString &packageRoot);
00315
00320 virtual void pathChanged();
00321
00322 private:
00323 PackageStructurePrivate * const d;
00324 };
00325
00329 #define K_EXPORT_PLASMA_PACKAGESTRUCTURE(libname, classname) \
00330 K_PLUGIN_FACTORY(factory, registerPlugin<classname>();) \
00331 K_EXPORT_PLUGIN(factory("plasma_packagestructure_" #libname)) \
00332 K_EXPORT_PLUGIN_VERSION(PLASMA_VERSION)
00333
00334 }
00335 #endif