00001
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 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 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