libkdepim

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 <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
KDE Home | KDE Accessibility Home | Description of Access Keys