pluginmanager.h
1 // -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
24 #ifndef KOMPOSER_PLUGINMANAGER_H
25 #define KOMPOSER_PLUGINMANAGER_H
26 
27 #include <tqmap.h>
28 #include <tqobject.h>
29 #include <tqstring.h>
30 #include <tqstringlist.h>
31 #include <tqvaluelist.h>
32 
33 class KPluginInfo;
34 
35 namespace Komposer
36 {
37 
38  class Plugin;
39 
40  class PluginManager : public TQObject
41  {
42  Q_OBJECT
43 
44 
45  public:
46  PluginManager( TQObject * );
47 
48  ~PluginManager();
49 
60  TQValueList<KPluginInfo*> availablePlugins( const TQString &category
61  = TQString() ) const;
62 
68  TQMap<KPluginInfo*, Plugin*> loadedPlugins( const TQString &category
69  = TQString() ) const;
70 
82  Plugin* plugin( const TQString &pluginName ) const;
83 
91  TQString pluginName( const Plugin *plugin ) const;
92 
101  TQString pluginId( const Plugin *plugin ) const;
102 
106  bool unloadPlugin( const TQString &pluginName );
107 
114  TQString pluginIcon( const Plugin *plugin ) const;
115 
126  void shutdown();
127 
142  bool setPluginEnabled( const TQString &name, bool enabled = true );
143 
149  enum PluginLoadMode { LoadSync, LoadAsync };
150 
151  public slots:
162  Plugin* loadPlugin( const TQString &pluginId, PluginLoadMode mode = LoadSync );
163 
168  void loadAllPlugins();
169 
170  signals:
174  void pluginLoaded( Plugin *plugin );
175 
195  void allPluginsLoaded();
196 
197  private slots:
201  void slotPluginDestroyed( TQObject *plugin );
202 
208  void slotShutdownTimeout();
209 
214  void slotShutdownDone();
215 
219  void slotPluginReadyForUnload();
220 
225  void slotLoadNextPlugin();
226 
227  private:
235  Plugin *loadPluginInternal( const TQString &pluginId );
236 
244  KPluginInfo *infoForPluginId( const TQString &pluginId ) const;
245  private:
246  class Private;
247  Private *d;
248  };
249 
250 }
251 
252 #endif // KOMPOSER_PLUGINMANAGER_H