pluginmanager.h
00001 // -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*- 00024 #ifndef KOMPOSER_PLUGINMANAGER_H 00025 #define KOMPOSER_PLUGINMANAGER_H 00026 00027 #include <tqmap.h> 00028 #include <tqobject.h> 00029 #include <tqstring.h> 00030 #include <tqstringlist.h> 00031 #include <tqvaluelist.h> 00032 00033 class KPluginInfo; 00034 00035 namespace Komposer 00036 { 00037 00038 class Plugin; 00039 00040 class PluginManager : public TQObject 00041 { 00042 Q_OBJECT 00043 00044 00045 public: 00046 PluginManager( TQObject * ); 00047 00048 ~PluginManager(); 00049 00060 TQValueList<KPluginInfo*> availablePlugins( const TQString &category 00061 = TQString() ) const; 00062 00068 TQMap<KPluginInfo*, Plugin*> loadedPlugins( const TQString &category 00069 = TQString() ) const; 00070 00082 Plugin* plugin( const TQString &pluginName ) const; 00083 00091 TQString pluginName( const Plugin *plugin ) const; 00092 00101 TQString pluginId( const Plugin *plugin ) const; 00102 00106 bool unloadPlugin( const TQString &pluginName ); 00107 00114 TQString pluginIcon( const Plugin *plugin ) const; 00115 00126 void shutdown(); 00127 00142 bool setPluginEnabled( const TQString &name, bool enabled = true ); 00143 00149 enum PluginLoadMode { LoadSync, LoadAsync }; 00150 00151 public slots: 00162 Plugin* loadPlugin( const TQString &pluginId, PluginLoadMode mode = LoadSync ); 00163 00168 void loadAllPlugins(); 00169 00170 signals: 00174 void pluginLoaded( Plugin *plugin ); 00175 00195 void allPluginsLoaded(); 00196 00197 private slots: 00201 void slotPluginDestroyed( TQObject *plugin ); 00202 00208 void slotShutdownTimeout(); 00209 00214 void slotShutdownDone(); 00215 00219 void slotPluginReadyForUnload(); 00220 00225 void slotLoadNextPlugin(); 00226 00227 private: 00235 Plugin *loadPluginInternal( const TQString &pluginId ); 00236 00244 KPluginInfo *infoForPluginId( const TQString &pluginId ) const; 00245 private: 00246 class Private; 00247 Private *d; 00248 }; 00249 00250 } 00251 00252 #endif // KOMPOSER_PLUGINMANAGER_H