File indexing completed on 2025-01-19 08:12:33
0001 /* 0002 SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "effect/globals.h" 0010 0011 #include <QHash> 0012 #include <QObject> 0013 0014 #include <KPluginMetaData> 0015 0016 namespace KWin 0017 { 0018 0019 class Plugin; 0020 0021 /** 0022 * The PluginManager class loads and unloads binary compositor extensions. 0023 */ 0024 class KWIN_EXPORT PluginManager : public QObject 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 PluginManager(); 0030 ~PluginManager() override; 0031 0032 QStringList loadedPlugins() const; 0033 QStringList availablePlugins() const; 0034 0035 public Q_SLOTS: 0036 bool loadPlugin(const QString &pluginId); 0037 void unloadPlugin(const QString &pluginId); 0038 0039 private: 0040 bool loadPlugin(const KPluginMetaData &metadata); 0041 0042 std::map<QString, std::unique_ptr<Plugin>> m_plugins; 0043 }; 0044 0045 } // namespace KWin