resource.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KRESOURCES_RESOURCE_H
00023 #define KRESOURCES_RESOURCE_H
00024
00025 #include <qmutex.h>
00026 #include <qvaluelist.h>
00027 #include <qwidget.h>
00028
00029 #include <klibloader.h>
00030
00031 class KConfig;
00032
00033 namespace KRES {
00034
00035 class ConfigWidget;
00036
00255 class KRESOURCES_EXPORT Resource : public QObject
00256 {
00257 friend class Factory;
00258 friend class ManagerImpl;
00259
00260 Q_OBJECT
00261 public:
00262 typedef QValueList<Resource *> List;
00263
00269 Resource( const KConfig *config );
00270
00274 virtual ~Resource();
00275
00282 virtual void writeConfig( KConfig *config );
00283
00293 bool open();
00294
00301 void close();
00302
00306 bool isOpen() const;
00307
00314 QString identifier() const;
00315
00319 QString type() const;
00320
00325 virtual void setReadOnly( bool value );
00326
00330 virtual bool readOnly() const;
00331
00336 virtual void setResourceName( const QString &name );
00337
00341 virtual QString resourceName() const;
00342
00346 void setActive( bool active );
00347
00351 bool isActive() const;
00352
00356 virtual void dump() const;
00357
00358 protected:
00368 virtual bool doOpen() { return true; }
00369
00374 virtual void doClose() {}
00375
00376 void setIdentifier( const QString &identifier );
00377 void setType( const QString &type );
00378
00379 private:
00380 class ResourcePrivate;
00381 ResourcePrivate *d;
00382 };
00383
00384 class KRESOURCES_EXPORT PluginFactoryBase : public KLibFactory
00385 {
00386 public:
00387 virtual Resource *resource( const KConfig *config ) = 0;
00388
00389 virtual ConfigWidget *configWidget( QWidget *parent ) = 0;
00390
00391 protected:
00392 virtual QObject* createObject( QObject *, const char *, const char *,
00393 const QStringList & )
00394 {
00395 return 0;
00396 }
00397 };
00398
00399 template<class TR,class TC>
00400 class PluginFactory : public PluginFactoryBase
00401 {
00402 public:
00403 Resource *resource( const KConfig *config )
00404 {
00405 return new TR( config );
00406 }
00407
00408 ConfigWidget *configWidget( QWidget *parent )
00409 {
00410 return new TC( parent );
00411 }
00412 };
00413
00414 }
00415
00416 #endif
|