// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2019 Luxoft Sweden AB // Copyright (C) 2018 Pelagicore AG // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef DBUSCONTEXTADAPTOR_H #define DBUSCONTEXTADAPTOR_H #include #include #include #include #include QT_FORWARD_DECLARE_CLASS(QDBusAbstractAdaptor) QT_BEGIN_NAMESPACE_AM class Q_APPMANSYSTEMUI_EXPORT DBusContextAdaptor : public QObject, public QDBusContext { Q_OBJECT public: bool registerOnDBus(QDBusConnection conn, const QString &path); bool isRegistered() const; static QDBusContext *dbusContextFor(const QDBusAbstractAdaptor *adaptor); static void sendErrorReply(const QDBusAbstractAdaptor *adaptor, const QString &errorString); template T *generatedAdaptor() { return qobject_cast(m_adaptor); } template static DBusContextAdaptor *create(QObject *realObject) { auto that = new DBusContextAdaptor(realObject); that->m_adaptor = new T(that); return that; } private: QDBusAbstractAdaptor *m_adaptor = nullptr; bool m_isRegistered = false; explicit DBusContextAdaptor(QObject *realObject); }; QT_END_NAMESPACE_AM #endif // DBUSCONTEXTADAPTOR_H