File indexing completed on 2024-04-28 03:52:07

0001 /*
0002  * SPDX-FileCopyrightText: 2018 Manuel Weichselbaumer <mincequi@web.de>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #ifndef MEDIAENDPOINTCONNECTOR_H
0008 #define MEDIAENDPOINTCONNECTOR_H
0009 
0010 #include <QObject>
0011 
0012 #include "agent.h"
0013 #include "manager.h"
0014 #include "types.h"
0015 
0016 #include <memory>
0017 
0018 class NoInputNoOutputAgent : public BluezQt::Agent
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023     /**
0024      * Creates a new NoInputNoOutputAgent object.
0025      *
0026      * @param parent
0027      */
0028     explicit NoInputNoOutputAgent(const QStringList &uuids, QObject *parent = nullptr);
0029 
0030     /**
0031      * Destroys a NoInputNoOutputAgent object.
0032      */
0033     ~NoInputNoOutputAgent() override;
0034 
0035 Q_SIGNALS:
0036     /**
0037      * Indicates that a service was authorized.
0038      */
0039     void serviceAuthorized(BluezQt::DevicePtr device, const QString &uuid, bool allowed);
0040 
0041 private:
0042     QDBusObjectPath objectPath() const override;
0043     Capability capability() const override;
0044     void authorizeService(BluezQt::DevicePtr device, const QString &uuid, const BluezQt::Request<> &request) override;
0045 
0046     std::unique_ptr<class NoInputNoOutputAgentPrivate> const d;
0047 };
0048 
0049 class MediaEndpointConnector : public QObject
0050 {
0051     Q_OBJECT
0052 
0053 public:
0054     explicit MediaEndpointConnector(BluezQt::Manager *manager, QObject *parent = nullptr);
0055 
0056 private:
0057     void onTransportChanged(BluezQt::MediaTransportPtr transport);
0058     void onServiceAuthorized(BluezQt::DevicePtr device, const QString &uuid, bool allowed);
0059     void onConfigurationSelected(const QByteArray &capabilities, const QByteArray &configuration);
0060     void onConfigurationSet(const QString &transportObjectPath, const QVariantMap &properties);
0061     void onConfigurationCleared(const QString &transportObjectPath);
0062 
0063     BluezQt::Manager *m_manager;
0064 };
0065 
0066 #endif // MEDIAENDPOINTCONNECTOR_H