File indexing completed on 2024-04-21 04:56:53

0001 /**
0002  * SPDX-FileCopyrightText: 2018 Nicolas Fella <nicolas.fella@gmx.de>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 
0011 #include <core/kdeconnectplugin.h>
0012 
0013 #define PACKET_TYPE_SYSTEMVOLUME QStringLiteral("kdeconnect.systemvolume")
0014 #define PACKET_TYPE_SYSTEMVOLUME_REQUEST QStringLiteral("kdeconnect.systemvolume.request")
0015 
0016 class RemoteSystemVolumePlugin : public KdeConnectPlugin
0017 {
0018     Q_OBJECT
0019     Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.remotesystemvolume")
0020     Q_PROPERTY(QByteArray sinks READ sinks NOTIFY sinksChanged)
0021     Q_PROPERTY(QString deviceId READ deviceId CONSTANT)
0022 
0023 public:
0024     using KdeConnectPlugin::KdeConnectPlugin;
0025 
0026     void receivePacket(const NetworkPacket &np) override;
0027     void connected() override;
0028     QString dbusPath() const override;
0029 
0030     QString deviceId() const
0031     {
0032         return device()->id();
0033     }
0034     QByteArray sinks();
0035 
0036     Q_SCRIPTABLE void sendVolume(const QString &name, int volume);
0037     Q_SCRIPTABLE void sendMuted(const QString &name, bool muted);
0038 
0039 Q_SIGNALS:
0040     Q_SCRIPTABLE void sinksChanged();
0041     Q_SCRIPTABLE void volumeChanged(const QString &name, int volume);
0042     Q_SCRIPTABLE void mutedChanged(const QString &name, bool muted);
0043 
0044 private:
0045     QByteArray m_sinks;
0046 };