pluginmanager.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef __PLUGINMANAGER_H__
  2. #define __PLUGINMANAGER_H__
  3. #include <QObject>
  4. #include <QMap>
  5. #include <QDesignerCustomWidgetInterface>
  6. #include "pluginloader.h"
  7. typedef struct
  8. {
  9. QString fileName;
  10. QString filePath;
  11. bool isEnabled;
  12. }plugin_info_st;
  13. class PluginManager : public QObject
  14. {
  15. Q_OBJECT
  16. public:
  17. explicit PluginManager(QObject *parent = nullptr);
  18. ~PluginManager();
  19. const QJsonObject pluginInfo();
  20. void initPluginInfo();
  21. void savePluginInfo();
  22. void loadPlugins();
  23. void loadPlugin(QString fileName);
  24. void unloadPlugin(QString fileName);
  25. bool updatePluginInfo(QString fileName, bool isEnabled);
  26. bool delPlugin(QString fileName, bool kepInfo = false);
  27. bool upgradePlugin(QString fileName, QString srcFile);
  28. bool addPlugin(QString srcFile);
  29. bool contains(QString fileName);
  30. void clear();
  31. QList<plugin_info_st> pluginInfoList() const;
  32. QList<QDesignerCustomWidgetInterface *> customWidgets() const;
  33. private:
  34. QMap<QString, plugin_info_st> m_pluginInfoMap;
  35. QMap<QString, PluginLoader *> m_pluginLoaderMap;
  36. QList<QDesignerCustomWidgetInterface*> m_customWidgets; // 插件控件列表
  37. };
  38. #endif // PLUGINMANAGER_H