File indexing completed on 2024-05-26 03:51:01
0001 /* 0002 File : PluginLoader.h 0003 Project : LabPlot/SciDAVis 0004 Description : Loader for VersionedPlugins. 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2009 Tilman Benkert <thzs*gmx.net (use @ for *)> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef PLUGINLOADER_H 0011 #define PLUGINLOADER_H 0012 0013 #include <QPluginLoader> 0014 0015 class PluginLoader : public QObject { 0016 Q_OBJECT 0017 0018 enum class PluginStatus { 0019 NotYetLoaded, 0020 Active, 0021 ErrorFromQt, 0022 NoVersionedPlugin, 0023 IncompatibleApp, 0024 }; 0025 0026 public: 0027 explicit PluginLoader(QString fileName); 0028 ~PluginLoader() override; 0029 QString statusString() const; 0030 PluginStatus status() const; 0031 QString fileName() const; 0032 QObject* instance(); 0033 bool isActive() const; 0034 bool load(); 0035 bool unload(); 0036 0037 private: 0038 QPluginLoader* m_loader{nullptr}; 0039 QString m_fileName; 0040 QString m_statusString; 0041 PluginStatus m_status{PluginStatus::NotYetLoaded}; 0042 }; 0043 0044 #endif