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