krita
kis_resourceserver.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KIS_RESOURCESERVER_H_
00023 #define KIS_RESOURCESERVER_H_
00024
00025 #include <qstring.h>
00026 #include <qstringlist.h>
00027
00028 #include "kis_generic_registry.h"
00029
00030 class KisResource;
00031
00032 class KisResourceServerBase : public QObject {
00033 Q_OBJECT
00034 public:
00035 KisResourceServerBase(QString type);
00036 virtual ~KisResourceServerBase();
00037
00038 void loadResources(QStringList filenames);
00040 void addResource(KisResource* resource);
00041 QValueList<KisResource*> resources();
00042 QString type() { return m_type; };
00043
00044 signals:
00045 void resourceAdded(KisResource*);
00046
00047 protected:
00048 virtual KisResource* createResource( QString filename ) = 0;
00049
00050 private:
00051 QValueList<KisResource*> m_resources;
00052 QString m_type;
00053
00054 bool m_loaded;
00055
00056 };
00057
00058
00059 template <class T> class KisResourceServer : public KisResourceServerBase {
00060 typedef KisResourceServerBase super;
00061
00062 public:
00063 KisResourceServer(QString type) :super( type ) {}
00064 virtual ~KisResourceServer(){}
00065
00066 private:
00067 KisResource* createResource( QString filename ){return new T(filename);}
00068 };
00069
00070
00071
00072
00073 class KisResourceServerRegistry : public KisGenericRegistry<KisResourceServerBase*>
00074 {
00075
00076 public:
00077 virtual ~KisResourceServerRegistry();
00078
00079 static KisResourceServerRegistry* instance();
00080
00081 private:
00082 KisResourceServerRegistry();
00083 KisResourceServerRegistry(const KisResourceServerRegistry&);
00084 KisResourceServerRegistry operator=(const KisResourceServerRegistry&);
00085
00086 static KisResourceServerRegistry *m_singleton;
00087 };
00088
00089
00090 #endif // KIS_RESOURCESERVER_H_
|