File indexing completed on 2024-05-12 09:36:15
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Daniel Vratil <dvratil@redhat.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 * 0006 */ 0007 0008 #pragma once 0009 0010 #include <QDBusContext> 0011 #include <QObject> 0012 0013 namespace KScreen 0014 { 0015 class AbstractBackend; 0016 } 0017 0018 class QPluginLoader; 0019 class BackendDBusWrapper; 0020 0021 class BackendLoader : public QObject, protected QDBusContext 0022 { 0023 Q_OBJECT 0024 Q_CLASSINFO("D-Bus Interface", "org.kde.KScreen") 0025 0026 public: 0027 explicit BackendLoader(); 0028 ~BackendLoader() override; 0029 0030 bool init(); 0031 0032 Q_INVOKABLE QString backend() const; 0033 Q_INVOKABLE bool requestBackend(const QString &name, const QVariantMap &arguments); 0034 Q_INVOKABLE void quit(); 0035 0036 private: 0037 KScreen::AbstractBackend *loadBackend(const QString &name, const QVariantMap &arguments); 0038 0039 private: 0040 QPluginLoader *mLoader = nullptr; 0041 BackendDBusWrapper *mBackend = nullptr; 0042 };