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

0001 /**
0002  * SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com>
0003  * SPDX-FileCopyrightText: 2018 Simon Redman <simon@ergotech.com>
0004  * SPDX-FileCopyrightText: 2019 Richard Liebscher <richard.liebscher@gmail.com>
0005  * SPDX-FileCopyrightText: 2022 Yoram Bar Haim <bhyoram@protonmail.com>
0006  *
0007  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0008  */
0009 
0010 #pragma once
0011 
0012 #include <KPluginFactory>
0013 #include <ModemManagerQt/Call>
0014 #include <ModemManagerQt/Manager>
0015 #include <ModemManagerQt/Modem>
0016 #include <ModemManagerQt/ModemVoice>
0017 #include <QList>
0018 #include <QMap>
0019 #include <QObject>
0020 #include <QSet>
0021 #include <QVariant>
0022 
0023 #include <core/kdeconnectplugin.h>
0024 
0025 class QDBusPendingCallWatcher;
0026 class QDBusInterface;
0027 class QDBusError;
0028 class QDBusObjectPath;
0029 class QDBusVariant;
0030 
0031 class MMTelephonyPlugin : public KdeConnectPlugin
0032 {
0033     Q_OBJECT
0034     Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.telephony")
0035 
0036 public:
0037     explicit MMTelephonyPlugin(QObject *parent, const QVariantList &args);
0038 
0039     void receivePacket(const NetworkPacket &np) override;
0040 
0041 private:
0042     void onCallAdded(ModemManager::Call::Ptr call);
0043     void onCallRemoved(ModemManager::Call::Ptr call);
0044     void onModemAdded(const QString &path);
0045     void onCallStateChanged(ModemManager::Call *call, MMCallState newState, MMCallState oldState);
0046     void sendMMTelephonyPacket(ModemManager::Call *call, const QString &state);
0047     void sendCancelMMTelephonyPacket(ModemManager::Call *call, const QString &lastState);
0048     static QString stateName(MMCallState state);
0049 };