25#include <QtCore/QString>
26#include <QtCore/QVariantMap>
27#include <QtCore/QPluginLoader>
40 typedef std::shared_ptr<QPluginLoader> PluginLoaderPtr;
44 friend class PluginMgr;
45 friend class PluginMgrImpl;
57 const QString& getIid()
const
62 const QString& getName()
const
67 const QString& getDescription()
const
78 PluginInfo() =
default;
80 PluginLoaderPtr m_loader;
84 Type m_type = Type::Invalid;
85 bool m_applied =
false;
88 typedef std::shared_ptr<PluginInfo> PluginInfoPtr;
89 typedef std::list<PluginInfoPtr> ListOfPluginInfos;
90 typedef Plugin::WidgetPtr WidgetPtr;
93 ~PluginMgr() noexcept;
95 void setPluginsDir(const QString& pluginDir);
96 const ListOfPluginInfos& getAvailablePlugins();
97 const ListOfPluginInfos& getAppliedPlugins() const;
98 void setAppliedPlugins(const ListOfPluginInfos& plugins);
99 ListOfPluginInfos loadPluginsFromConfig(const QVariantMap& config);
100 ListOfPluginInfos loadPluginsFromConfigFile(const QString& filename);
101 bool savePluginsToConfigFile(const ListOfPluginInfos& infos, const QString& filename);
102 Plugin* loadPlugin(const PluginInfo& info);
103 bool hasAppliedPlugins() const;
104 bool needsReload(const ListOfPluginInfos& infos) const;
105 bool isProtocolChanging(const ListOfPluginInfos& infos) const;
106 void unloadApplied();
107 bool unloadAppliedPlugin(const PluginInfo& info);
108 static QVariantMap getConfigForPlugins(const ListOfPluginInfos& infos);
109 const QString& getLastFile() const;
110 static const QString& getFilesFilter();
113 std::unique_ptr<PluginMgrImpl> m_impl;
118Q_DECLARE_METATYPE(
cc_tools_qt::PluginMgr::PluginInfoPtr);