libkdepim
pluginmanager.h00001
00024 #ifndef KOMPOSER_PLUGINMANAGER_H
00025 #define KOMPOSER_PLUGINMANAGER_H
00026
00027 #include <qmap.h>
00028 #include <qobject.h>
00029 #include <qstring.h>
00030 #include <qstringlist.h>
00031 #include <qvaluelist.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( QObject * );
00046
00047 ~PluginManager();
00048
00059 QValueList<KPluginInfo*> availablePlugins( const QString &category
00060 = QString::null ) const;
00061
00067 QMap<KPluginInfo*, Plugin*> loadedPlugins( const QString &category
00068 = QString::null ) const;
00069
00081 Plugin* plugin( const QString &pluginName ) const;
00082
00090 QString pluginName( const Plugin *plugin ) const;
00091
00100 QString pluginId( const Plugin *plugin ) const;
00101
00105 bool unloadPlugin( const QString &pluginName );
00106
00113 QString pluginIcon( const Plugin *plugin ) const;
00114
00125 void shutdown();
00126
00141 bool setPluginEnabled( const QString &name, bool enabled = true );
00142
00148 enum PluginLoadMode { LoadSync, LoadAsync };
00149
00150 public slots:
00161 Plugin* loadPlugin( const QString &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( QObject *plugin );
00201
00207 void slotShutdownTimeout();
00208
00213 void slotShutdownDone();
00214
00218 void slotPluginReadyForUnload();
00219
00224 void slotLoadNextPlugin();
00225
00226 private:
00234 Plugin *loadPluginInternal( const QString &pluginId );
00235
00243 KPluginInfo *infoForPluginId( const QString &pluginId ) const;
00244 private:
00245 class Private;
00246 Private *d;
00247 };
00248
00249 }
00250
00251 #endif // KOMPOSER_PLUGINMANAGER_H
|