File indexing completed on 2024-04-21 04:56:45

0001 /**
0002  * SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #ifndef PLUGINLOADER_H
0008 #define PLUGINLOADER_H
0009 
0010 #include <QHash>
0011 #include <QObject>
0012 #include <QString>
0013 
0014 #include <KPluginMetaData>
0015 
0016 #include "kdeconnectcore_export.h"
0017 
0018 class Device;
0019 class KdeConnectPlugin;
0020 class KPluginFactory;
0021 
0022 class KDECONNECTCORE_EXPORT PluginLoader
0023 {
0024 public:
0025     static PluginLoader *instance();
0026 
0027     QStringList getPluginList() const;
0028     bool doesPluginExist(const QString &name) const;
0029     KPluginMetaData getPluginInfo(const QString &name) const;
0030     KdeConnectPlugin *instantiatePluginForDevice(const QString &name, Device *device) const;
0031 
0032     QStringList incomingCapabilities() const;
0033     QStringList outgoingCapabilities() const;
0034     QSet<QString> pluginsForCapabilities(const QSet<QString> &incoming, const QSet<QString> &outgoing) const;
0035 
0036 private:
0037     PluginLoader();
0038 
0039     QHash<QString, KPluginMetaData> plugins;
0040 };
0041 
0042 #endif