1 /**
2  * SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com>
3  *
4  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5  */
6 
7 #ifndef PLUGINLOADER_H
8 #define PLUGINLOADER_H
9 
10 #include <QObject>
11 #include <QHash>
12 #include <QString>
13 
14 #include <KPluginMetaData>
15 
16 #include "kdeconnectcore_export.h"
17 
18 class Device;
19 class KdeConnectPlugin;
20 class KPluginFactory;
21 
22 class KDECONNECTCORE_EXPORT PluginLoader
23 {
24 
25 public:
26     static PluginLoader* instance();
27 
28     QStringList getPluginList() const;
29     KPluginMetaData getPluginInfo(const QString& name) const;
30     KdeConnectPlugin* instantiatePluginForDevice(const QString& name, Device* device) const;
31 
32     QStringList incomingCapabilities() const;
33     QStringList outgoingCapabilities() const;
34     QSet<QString> pluginsForCapabilities(const QSet<QString>& incoming, const QSet<QString>& outgoing);
35 
36 private:
37     PluginLoader();
38 
39     QHash<QString, KPluginMetaData> plugins;
40 #ifdef SAILFISHOS
41     QHash<QString, KPluginFactory*> pluginsFactories;
42 #endif
43 };
44 
45 #endif
46