plugincontroller.h
Go to the documentation of this file.00001 #ifndef __PLUGINCONTROLLER_H__ 00002 #define __PLUGINCONTROLLER_H__ 00003 00004 #include <qobject.h> 00005 #include <qdict.h> 00006 #include <qvaluelist.h> 00007 00008 #include <kservice.h> 00009 00010 class KXMLGUIClient; 00011 class KService; 00012 class KDevPlugin; 00013 class KDialogBase; 00014 class ProjectInfo; 00015 00016 class PluginController : public QObject 00017 { 00018 Q_OBJECT 00019 00020 public: 00021 00022 ~PluginController(); 00023 00024 static PluginController *getInstance(); 00025 static KService::List pluginServices( const QString &scope = QString::null ); 00026 static QStringList argumentsFromService( const KService::Ptr &service ); 00027 00028 QString currentProfile() const { return m_profile; } 00029 QString currentProfilePath() const { return m_profilePath; } 00030 00031 void loadInitialPlugins(); 00032 00033 void loadLocalParts( ProjectInfo*, QStringList const & loadPlugins, QStringList const & ignorePlugins ); // @todo figure out a way to remove the ProjectInfo parameter 00034 // void unloadAllLocalParts(); 00035 // void unloadLocalParts( QStringList const & ); 00036 00037 // KDevPlugin * getPlugin( const KService::Ptr &service ); 00038 00039 void unloadPlugins( QStringList const & ); 00040 00041 void integratePart(KXMLGUIClient *part); 00042 void removePart(KXMLGUIClient* part); 00043 00044 const QValueList<KDevPlugin*> loadedPlugins(); 00045 00046 signals: 00047 void loadingPlugin(const QString &plugin); 00048 00049 protected: 00050 PluginController(); 00051 00052 private slots: 00053 void slotConfigWidget( KDialogBase* ); 00054 void loadGlobalPlugins(); 00055 void loadCorePlugins(); 00056 // void unloadGlobalPlugins(); 00057 void unloadPlugins(); 00058 00059 private: 00060 // static void createInstance(); 00061 static KDevPlugin *loadPlugin( const KService::Ptr &service ); 00062 00063 void loadDefaultParts(); 00064 bool checkNewService( ProjectInfo *, const KService::Ptr &service ); 00065 00066 QDict<KDevPlugin> m_parts; 00067 // QDict<KDevPlugin> m_globalParts; 00068 // QDict<KDevPlugin> m_localParts; 00069 QString m_profile; 00070 QString m_profilePath; 00071 QString m_defaultProfile; 00072 QString m_defaultProfilePath; 00073 00074 static PluginController *s_instance; 00075 00076 }; 00077 00078 #endif