22#include "cc_tools_qt/ToolsApi.h"
23#include "cc_tools_qt/ToolsPlugin.h"
26#include <QtCore/QString>
27#include <QtCore/QVariantMap>
28#include <QtCore/QPluginLoader>
37class ToolsPluginMgrImpl;
38class CC_TOOLS_API ToolsPluginMgr
42 using PluginLoaderPtr = std::shared_ptr<QPluginLoader>;
44 class CC_TOOLS_API PluginInfo
46 friend class ToolsPluginMgr;
47 friend class ToolsPluginMgrImpl;
59 const QString& getIid()
const
64 const QString& getName()
const
69 const QString& getDescription()
const
79 const QString& getVersion()
const
84 QString getNameWithVersion()
const;
87 PluginInfo() =
default;
89 PluginLoaderPtr m_loader;
94 Type m_type = Type::Invalid;
95 bool m_applied =
false;
98 using PluginInfoPtr = std::shared_ptr<PluginInfo>;
99 using ListOfPluginInfos = std::list<PluginInfoPtr>;
102 ~ToolsPluginMgr() noexcept;
104 void setPluginsDir(const QString& pluginDir);
105 const ListOfPluginInfos& getAvailablePlugins();
106 const ListOfPluginInfos& getAppliedPlugins() const;
107 void setAppliedPlugins(const ListOfPluginInfos& plugins);
108 ListOfPluginInfos loadPluginsFromConfig(const QVariantMap& config);
109 ListOfPluginInfos loadPluginsFromConfigFile(const QString& filename);
110 bool savePluginsToConfigFile(const ListOfPluginInfos& infos, const QString& filename);
111 ToolsPlugin* loadPlugin(const PluginInfo& info);
112 bool hasAppliedPlugins() const;
113 bool needsReload(const ListOfPluginInfos& infos) const;
114 bool isProtocolChanging(const ListOfPluginInfos& infos) const;
115 void unloadApplied();
116 bool unloadAppliedPlugin(const PluginInfo& info);
117 static QVariantMap getConfigForPlugins(const ListOfPluginInfos& infos);
118 const QString& getLastFile() const;
119 static const QString& getFilesFilter();
122 std::unique_ptr<ToolsPluginMgrImpl> m_impl;
127Q_DECLARE_METATYPE(
cc_tools_qt::ToolsPluginMgr::PluginInfoPtr);