20#include "cc_tools_qt/ToolsApi.h"
21#include "cc_tools_qt/ToolsPlugin.h"
24#include <QtCore/QString>
25#include <QtCore/QVariantMap>
26#include <QtCore/QPluginLoader>
35class ToolsPluginMgrImpl;
36class CC_TOOLS_API ToolsPluginMgr
40 using PluginLoaderPtr = std::shared_ptr<QPluginLoader>;
42 class CC_TOOLS_API PluginInfo
44 friend class ToolsPluginMgr;
45 friend class ToolsPluginMgrImpl;
57 const QString& getIid()
const
62 const QString& getName()
const
67 const QString& getDescription()
const
77 const QString& getVersion()
const
82 QString getNameWithVersion()
const;
85 PluginInfo() =
default;
87 PluginLoaderPtr m_loader;
92 Type m_type = Type::Invalid;
93 bool m_applied =
false;
96 using PluginInfoPtr = std::shared_ptr<PluginInfo>;
97 using ListOfPluginInfos = std::list<PluginInfoPtr>;
100 ~ToolsPluginMgr() noexcept;
102 void setPluginsDir(const QString& pluginDir);
103 const ListOfPluginInfos& getAvailablePlugins();
104 const ListOfPluginInfos& getAppliedPlugins() const;
105 void setAppliedPlugins(const ListOfPluginInfos& plugins);
106 ListOfPluginInfos loadPluginsFromConfig(const QVariantMap& config);
107 ListOfPluginInfos loadPluginsFromConfigFile(const QString& filename);
108 bool savePluginsToConfigFile(const ListOfPluginInfos& infos, const QString& filename);
109 ToolsPlugin* loadPlugin(const PluginInfo& info);
110 bool hasAppliedPlugins() const;
111 bool needsReload(const ListOfPluginInfos& infos) const;
112 bool isProtocolChanging(const ListOfPluginInfos& infos) const;
113 void unloadApplied();
114 bool unloadAppliedPlugin(const PluginInfo& info);
115 static QVariantMap getConfigForPlugins(const ListOfPluginInfos& infos);
116 const QString& getLastFile() const;
117 static const QString& getFilesFilter();
120 std::unique_ptr<ToolsPluginMgrImpl> m_impl;
125Q_DECLARE_METATYPE(
cc_tools_qt::ToolsPluginMgr::PluginInfoPtr);