00001
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
00080 Plugin* plugin(
const QString& pluginName )
const;
00081
00089
QString pluginName(
const Plugin* plugin )
const;
00090
00099
QString pluginId(
const Plugin* plugin )
const;
00100
00104
bool unloadPlugin(
const QString& pluginName );
00105
00112
QString pluginIcon(
const Plugin* plugin )
const;
00113
00124
void shutdown();
00125
00140
bool setPluginEnabled(
const QString& name,
bool enabled =
true );
00141
00147
enum PluginLoadMode { LoadSync, LoadAsync };
00148
00149
public slots:
00160 Plugin* loadPlugin(
const QString& pluginId, PluginLoadMode mode = LoadSync );
00161
00166
void loadAllPlugins();
00167
00168 signals:
00172
void pluginLoaded( Plugin* plugin );
00173
00193
void allPluginsLoaded();
00194
00195
private slots:
00199
void slotPluginDestroyed(
QObject* plugin );
00200
00206
void slotShutdownTimeout();
00207
00212
void slotShutdownDone();
00213
00217
void slotPluginReadyForUnload();
00218
00223
void slotLoadNextPlugin();
00224
00225
private:
00233 Plugin * loadPluginInternal(
const QString &pluginId );
00234
00242 KPluginInfo* infoForPluginId(
const QString& pluginId )
const;
00243
private:
00244
class Private;
00245 Private* d;
00246 };
00247
00248 }
00249
00250
#endif // KOMPOSER_PLUGINMANAGER_H