File indexing completed on 2024-05-05 16:04:27

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 class NoInputNoOutputAgent : public BluezQt::Agent
0017 {
0018     Q_OBJECT
0019 
0020 public:
0021     /**
0022      * Creates a new NoInputNoOutputAgent object.
0023      *
0024      * @param parent
0025      */
0026     explicit NoInputNoOutputAgent(const QStringList &uuids, QObject *parent = nullptr);
0027 
0028     /**
0029      * Destroys a NoInputNoOutputAgent object.
0030      */
0031     ~NoInputNoOutputAgent() override;
0032 
0033 Q_SIGNALS:
0034     /**
0035      * Indicates that a service was authorized.
0036      */
0037     void serviceAuthorized(BluezQt::DevicePtr device, const QString &uuid, bool allowed);
0038 
0039 private:
0040     QDBusObjectPath objectPath() const override;
0041     Capability capability() const override;
0042     void authorizeService(BluezQt::DevicePtr device, const QString &uuid, const BluezQt::Request<> &request) override;
0043 
0044     class NoInputNoOutputAgentPrivate *const d;
0045 };
0046 
0047 class MediaEndpointConnector : public QObject
0048 {
0049     Q_OBJECT
0050 
0051 public:
0052     explicit MediaEndpointConnector(BluezQt::Manager *manager, QObject *parent = nullptr);
0053 
0054 private:
0055     void onTransportChanged(BluezQt::MediaTransportPtr transport);
0056     void onServiceAuthorized(BluezQt::DevicePtr device, const QString &uuid, bool allowed);
0057     void onConfigurationSelected(const QByteArray &capabilities, const QByteArray &configuration);
0058     void onConfigurationSet(const QString &transportObjectPath, const QVariantMap &properties);
0059     void onConfigurationCleared(const QString &transportObjectPath);
0060 
0061     BluezQt::Manager *m_manager;
0062 };
0063 
0064 #endif // MEDIAENDPOINTCONNECTOR_H