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 };