libkdepim Library API Documentation

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 
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
KDE Logo
This file is part of the documentation for libkdepim Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jan 31 15:53:22 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003