defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2011 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 class Plugins; 00012 00013 #ifndef PLUGINS_HPP 00014 #define PLUGINS_HPP 00015 00016 #include <QObject> 00017 #include <QHash> 00018 #include "plugin.hpp" 00019 00024 class Plugins : public QObject 00025 { 00026 Q_OBJECT 00027 public: 00028 explicit Plugins(Cores* c); 00029 ~Plugins(); 00030 void init(); 00031 void add(const QString& name, Plugin* plugin); 00032 Plugin* get(const QString& name); 00033 template<class T> T* cast(const QString& name) { 00034 return dynamic_cast<T*>(get(name)); 00035 } 00036 00037 signals: 00038 void message(const QString& msg); 00039 public slots: 00040 void aboutToQuit(); 00041 00042 private: 00043 Cores &cores; 00044 QHash<QString, Plugin*> plugins; 00045 }; 00046 00047 #endif // PLUGINS_HPP