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

0001 /**
0002  * SPDX-FileCopyrightText: 2019 Weixuan XIAO <veyx.shaw@gmail.com>
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 <QMap>
0010 #include <QObject>
0011 
0012 #include <core/kdeconnectplugin.h>
0013 
0014 #import <CoreAudio/CoreAudio.h>
0015 
0016 #define PACKET_TYPE_SYSTEMVOLUME QStringLiteral("kdeconnect.systemvolume")
0017 #define PACKET_TYPE_SYSTEMVOLUME_REQUEST QStringLiteral("kdeconnect.systemvolume.request")
0018 
0019 class MacOSCoreAudioDevice;
0020 
0021 class SystemvolumePlugin : public KdeConnectPlugin
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit SystemvolumePlugin(QObject *parent, const QVariantList &args);
0027     ~SystemvolumePlugin();
0028 
0029     void receivePacket(const NetworkPacket &np) override;
0030     void connected() override;
0031     void sendSinkList();
0032 
0033     void updateDeviceVolume(AudioDeviceID deviceId);
0034     void updateDeviceMuted(AudioDeviceID deviceId);
0035 
0036 private:
0037     QMap<QString, MacOSCoreAudioDevice *> m_sinksMap;
0038 };