libkdepim
pluginmanager.h00001
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 QObject
00041 {
00042 Q_OBJECT
00043
00044 public:
00045 PluginManager( TQObject * );
00046
00047 ~PluginManager();
00048
00059 TQValueList<KPluginInfo*> availablePlugins( const TQString &category
00060 = TQString::null ) const;
00061
00067 TQMap<KPluginInfo*, Plugin*> loadedPlugins( const TQString &category
00068 = TQString::null ) const;
00069
00081 Plugin* plugin( const TQString &pluginName ) const;
00082
00090 TQString pluginName( const Plugin *plugin ) const;
00091
00100 TQString pluginId( const Plugin *plugin ) const;
00101
00105 bool unloadPlugin( const TQString &pluginName );
00106
00113 TQString pluginIcon( const Plugin *plugin ) const;
00114
00125 void shutdown();
00126
00141 bool setPluginEnabled( const TQString &name, bool enabled = true );
00142
00148 enum PluginLoadMode { LoadSync, LoadAsync };
00149
00150 public slots:
00161 Plugin* loadPlugin( const TQString &pluginId, PluginLoadMode mode = LoadSync );
00162
00167 void loadAllPlugins();
00168
00169 signals:
00173 void pluginLoaded( Plugin *plugin );
00174
00194 void allPluginsLoaded();
00195
00196 private slots:
00200 void slotPluginDestroyed( TQObject *plugin );
00201
00207 void slotShutdownTimeout();
00208
00213 void slotShutdownDone();
00214
00218 void slotPluginReadyForUnload();
00219
00224 void slotLoadNextPlugin();
00225
00226 private:
00234 Plugin *loadPluginInternal( const TQString &pluginId );
00235
00243 KPluginInfo *infoForPluginId( const TQString &pluginId ) const;
00244 private:
00245 class Private;
00246 Private *d;
00247 };
00248
00249 }
00250
00251 #endif // KOMPOSER_PLUGINMANAGER_H
|