00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TDERESOURCES_RESOURCE_H
00023 #define TDERESOURCES_RESOURCE_H
00024
00025 #include <tqmutex.h>
00026 #include <tqvaluelist.h>
00027 #include <tqwidget.h>
00028
00029 #include <klibloader.h>
00030
00031 class TDEConfig;
00032
00033 namespace KRES {
00034
00035 class ConfigWidget;
00036
00255 class TDERESOURCES_EXPORT Resource : public TQObject
00256 {
00257 friend class Factory;
00258 friend class ManagerImpl;
00259
00260 Q_OBJECT
00261 public:
00262 typedef TQValueList<Resource *> List;
00263
00269 Resource( const TDEConfig *config );
00270
00274 virtual ~Resource();
00275
00282 virtual void writeConfig( TDEConfig *config );
00283
00293 bool open();
00294
00301 void close();
00302
00306 bool isOpen() const;
00307
00314 TQString identifier() const;
00315
00319 TQString type() const;
00320
00325 virtual void setReadOnly( bool value );
00326
00330 virtual bool readOnly() const;
00331
00336 virtual void setResourceName( const TQString &name );
00337
00341 virtual TQString 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 TQString &identifier );
00377 void setType( const TQString &type );
00378
00379 private:
00380 class ResourcePrivate;
00381 ResourcePrivate *d;
00382 };
00383
00384 class TDERESOURCES_EXPORT PluginFactoryBase : public KLibFactory
00385 {
00386 public:
00387 virtual Resource *resource( const TDEConfig *config ) = 0;
00388
00389 virtual ConfigWidget *configWidget( TQWidget *parent ) = 0;
00390
00391 protected:
00392 virtual TQObject* createObject( TQObject *parent, const char *name, const char *className,
00393 const TQStringList & args)
00394 {
00395 Q_UNUSED(parent);
00396 Q_UNUSED(name);
00397 Q_UNUSED(className);
00398 Q_UNUSED(args);
00399 return 0;
00400 }
00401 };
00402
00403 template<class TR,class TC>
00404 class PluginFactory : public PluginFactoryBase
00405 {
00406 public:
00407 Resource *resource( const TDEConfig *config )
00408 {
00409 return new TR( config );
00410 }
00411
00412 ConfigWidget *configWidget( TQWidget *parent )
00413 {
00414 return new TC( parent );
00415 }
00416 };
00417
00418 }
00419
00420 #endif