25#include <QtCore/QString>
26#include <QtCore/QVariantMap>
27#include <QtCore/QPluginLoader>
29#include "cc_tools_qt/ToolsApi.h"
30#include "cc_tools_qt/ToolsPlugin.h"
35class ToolsPluginMgrImpl;
36class CC_TOOLS_API ToolsPluginMgr
40 using PluginLoaderPtr = std::shared_ptr<QPluginLoader>;
44 friend class ToolsPluginMgr;
45 friend class ToolsPluginMgrImpl;
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 using PluginInfoPtr = std::shared_ptr<PluginInfo>;
89 using ListOfPluginInfos = std::list<PluginInfoPtr>;
92 ~ToolsPluginMgr() noexcept;
94 void setPluginsDir(const QString& pluginDir);
95 const ListOfPluginInfos& getAvailablePlugins();
96 const ListOfPluginInfos& getAppliedPlugins() const;
97 void setAppliedPlugins(const ListOfPluginInfos& plugins);
98 ListOfPluginInfos loadPluginsFromConfig(const QVariantMap& config);
99 ListOfPluginInfos loadPluginsFromConfigFile(const QString& filename);
100 bool savePluginsToConfigFile(const ListOfPluginInfos& infos, const QString& filename);
101 ToolsPlugin* loadPlugin(const PluginInfo& info);
102 bool hasAppliedPlugins() const;
103 bool needsReload(const ListOfPluginInfos& infos) const;
104 bool isProtocolChanging(const ListOfPluginInfos& infos) const;
105 void unloadApplied();
106 bool unloadAppliedPlugin(const PluginInfo& info);
107 static QVariantMap getConfigForPlugins(const ListOfPluginInfos& infos);
108 const QString& getLastFile() const;
109 static const QString& getFilesFilter();
112 std::unique_ptr<ToolsPluginMgrImpl> m_impl;
117Q_DECLARE_METATYPE(
cc_tools_qt::ToolsPluginMgr::PluginInfoPtr);