00001 #ifndef BALL_PLUGIN_BALLPLUGIN_H 00002 #define BALL_PLUGIN_BALLPLUGIN_H 00003 00004 #include <QtCore/QString> 00005 #include <QtCore/QtPlugin> 00006 #include <QtCore/QVariant> 00007 00008 class QPixmap; 00009 class QDialog; 00010 00011 namespace BALL 00012 { 00013 00014 class PluginHandler; 00015 00016 class BALLPlugin 00017 { 00018 public: 00019 virtual ~BALLPlugin() {} 00020 00026 virtual QString getName() const = 0; 00027 00033 virtual QString getDescription() const = 0; 00034 00040 virtual bool isActive() = 0; 00041 00047 virtual bool activate() = 0; 00048 00054 virtual bool deactivate() = 0; 00055 }; 00056 } 00057 00058 template<typename T> 00059 T qobject_cast(BALL::BALLPlugin* plugin) 00060 { 00061 return qobject_cast<T>(dynamic_cast<QObject*>(plugin)); 00062 } 00063 00064 Q_DECLARE_METATYPE(BALL::BALLPlugin*) 00065 Q_DECLARE_INTERFACE(BALL::BALLPlugin, "org.ball-project.Plugin.BALLPlugin/1.0") 00066 00067 #endif //BALL_PLUGIN_BALLPLUGIN_H 00068