00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef AEXTENSIONPLUGIN_H
00032 #define AEXTENSIONPLUGIN_H
00033
00034 #ifndef QT_H
00035 #include "qgplugin.h"
00036 #include "qstringlist.h"
00037 #endif // QT_H
00038 #include "ananasglobal.h"
00039 #include <qobject.h>
00040
00041 #ifndef QT_NO_COMPONENT
00042
00043 class AExtension;
00044 class AExtensionPluginPrivate;
00045
00046
00047 #define A_EXPORT_PLUGIN(pluginobjectname) Q_EXPORT_PLUGIN(pluginobjectname)
00048
00057 class ANANAS_EXPORT AExtensionPluginBase : public QGPlugin
00058 {
00059 Q_OBJECT
00060 public:
00061
00062 AExtensionPluginBase();
00063 ~AExtensionPluginBase();
00064 virtual QStringList keys() const = 0;
00065 virtual AExtension *create( const QString &key ) = 0;
00066
00067 private:
00068 AExtensionPluginPrivate *d;
00069 };
00070
00095 template<class type>
00096 class ANANAS_EXPORT AExtensionPlugin : public AExtensionPluginBase
00097 {
00098
00099 public:
00100
00101 AExtensionPlugin()
00102 {
00103 type o;
00104 extName = o.name();
00105 };
00106 ~AExtensionPlugin(){};
00107 QStringList keys() const
00108 {
00109 QStringList l;
00110 l << extName;
00111 return l;
00112 };
00113 AExtension *create( const QString &key )
00114 {
00115 if (key == extName) return new type();
00116 return 0;
00117 };
00118 private:
00119 QString extName;
00120 };
00121
00122 #endif // QT_NO_COMPONENT
00123 #endif //AEXTENSIONPLUGIN_H