File indexing completed on 2024-04-28 16:42:53

0001 // SPDX-FileCopyrightText: 2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
0002 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru>
0003 //
0004 // SPDX-License-Identifier: LGPL-2.1-or-later
0005 
0006 #pragma once
0007 
0008 #include <optional>
0009 
0010 #include <QDBusUnixFileDescriptor>
0011 #include <QObject>
0012 #include <kTelephonyMetaTypes/dialer-types.h>
0013 
0014 class ModemController;
0015 class CallUtils;
0016 
0017 class CallManager : public QObject
0018 {
0019     Q_OBJECT
0020 public:
0021     explicit CallManager(ModemController *modemController, CallUtils *callUtils, QObject *parent = nullptr);
0022 
0023 private Q_SLOTS:
0024     void onCallAdded(const QString &deviceUni,
0025                      const QString &callUni,
0026                      const DialerTypes::CallDirection &callDirection,
0027                      const DialerTypes::CallState &callState,
0028                      const DialerTypes::CallStateReason &callStateReason,
0029                      const QString communicationWith);
0030     void onCallDeleted(const QString &deviceUni, const QString &callUni);
0031     void onCallStateChanged(const DialerTypes::CallData &callData);
0032     void onUtilsCreatedCall(const QString &deviceUni, const QString &callUni);
0033     void onUtilsAccepted(const QString &deviceUni, const QString &callUni);
0034     void onUtilsHungUp(const QString &deviceUni, const QString &callUni);
0035     void onUtilsSentDtmf(const QString &deviceUni, const QString &callUni, const QString &tones);
0036     void onUtilsCallsRequested();
0037 
0038 private:
0039     ModemController *_modemController;
0040     CallUtils *_callUtils;
0041 
0042     std::optional<QDBusUnixFileDescriptor> _inhibitSleepFd;
0043 };