#ifndef PLUGINCONTAINER_H #define PLUGINCONTAINER_H #include "organizercore.h" #include "previewgenerator.h" #include #include #include #include #include #include #include #include #include #ifndef Q_MOC_RUN #include #include #endif // Q_MOC_RUN #include class PluginContainer : public QObject, public MOBase::IPluginDiagnose { Q_OBJECT Q_INTERFACES(MOBase::IPluginDiagnose) private: typedef boost::fusion::map< boost::fusion::pair>, boost::fusion::pair>, boost::fusion::pair>, boost::fusion::pair>, boost::fusion::pair>, boost::fusion::pair>, boost::fusion::pair>, boost::fusion::pair> > PluginMap; static const unsigned int PROBLEM_PLUGINSNOTLOADED = 1; public: PluginContainer(OrganizerCore *organizer); void setUserInterface(IUserInterface *userInterface, QWidget *widget); void loadPlugins(); void unloadPlugins(); MOBase::IPluginGame *managedGame(const QString &name) const; template const std::vector &plugins() const { typename boost::fusion::result_of::at_key::type temp = boost::fusion::at_key(m_Plugins); return temp; } const PreviewGenerator &previewGenerator() const; QStringList pluginFileNames() const; public: // IPluginDiagnose interface virtual std::vector activeProblems() const; virtual QString shortDescription(unsigned int key) const; virtual QString fullDescription(unsigned int key) const; virtual bool hasGuidedFix(unsigned int key) const; virtual void startGuidedFix(unsigned int key) const; signals: void diagnosisUpdate(); private: bool verifyPlugin(MOBase::IPlugin *plugin); void registerGame(MOBase::IPluginGame *game); bool registerPlugin(QObject *pluginObj, const QString &fileName); bool unregisterPlugin(QObject *pluginObj, const QString &fileName); OrganizerCore *m_Organizer; IUserInterface *m_UserInterface; PluginMap m_Plugins; std::map m_SupportedGames; std::vector m_DiagnosisConnections; QStringList m_FailedPlugins; std::vector m_PluginLoaders; PreviewGenerator m_PreviewGenerator; QFile m_PluginsCheck; }; #endif // PLUGINCONTAINER_H