File indexing completed on 2024-05-12 05:28:01
0001 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru> 0002 // 0003 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL 0004 0005 #include "call-object.h" 0006 #include <QDebug> 0007 0008 constexpr int CALL_DURATION_UPDATE_DELAY = 1000; 0009 0010 CallObject::CallObject(QObject *parent) 0011 : QObject(parent) 0012 { 0013 _callAttemptTimer.setInterval(CALL_DURATION_UPDATE_DELAY); 0014 _callTimer.setInterval(CALL_DURATION_UPDATE_DELAY); 0015 connect(&_callAttemptTimer, &QTimer::timeout, this, [this]() { 0016 _callData.callAttemptDuration++; 0017 }); 0018 connect(&_callTimer, &QTimer::timeout, this, [this]() { 0019 _callData.duration++; 0020 }); 0021 } 0022 0023 QString CallObject::id() 0024 { 0025 return _callData.id; 0026 } 0027 0028 QString CallObject::protocol() 0029 { 0030 return _callData.protocol; 0031 } 0032 0033 QString CallObject::provider() 0034 { 0035 return _callData.provider; 0036 } 0037 0038 QString CallObject::account() 0039 { 0040 return _callData.account; 0041 } 0042 0043 QString CallObject::communicationWith() 0044 { 0045 return _callData.communicationWith; 0046 } 0047 0048 DialerTypes::CallDirection CallObject::direction() 0049 { 0050 return _callData.direction; 0051 } 0052 0053 DialerTypes::CallState CallObject::state() 0054 { 0055 return _callData.state; 0056 } 0057 0058 DialerTypes::CallStateReason CallObject::stateReason() 0059 { 0060 return _callData.stateReason; 0061 } 0062 0063 int CallObject::callAttemptDuration() 0064 { 0065 return _callData.callAttemptDuration; 0066 } 0067 0068 QDateTime CallObject::startedAt() 0069 { 0070 return _callData.startedAt; 0071 } 0072 0073 int CallObject::duration() 0074 { 0075 return _callData.duration; 0076 } 0077 0078 DialerTypes::CallData CallObject::callData() 0079 { 0080 return _callData; 0081 } 0082 0083 void CallObject::setId(const QString &id) 0084 { 0085 _callData.id = id; 0086 } 0087 0088 void CallObject::setProtocol(const QString &protocol) 0089 { 0090 _callData.protocol = protocol; 0091 } 0092 0093 void CallObject::setProvider(const QString &provider) 0094 { 0095 _callData.provider = provider; 0096 } 0097 0098 void CallObject::setAccount(const QString &account) 0099 { 0100 _callData.account = account; 0101 } 0102 0103 void CallObject::setCommunicationWith(const QString &communicationWith) 0104 { 0105 _callData.communicationWith = communicationWith; 0106 } 0107 0108 void CallObject::setDirection(const DialerTypes::CallDirection &direction) 0109 { 0110 _callData.direction = direction; 0111 } 0112 0113 void CallObject::setState(const DialerTypes::CallState &state) 0114 { 0115 _callData.state = state; 0116 } 0117 0118 void CallObject::setStateReason(const DialerTypes::CallStateReason &stateReason) 0119 { 0120 _callData.stateReason = stateReason; 0121 } 0122 0123 void CallObject::setCallAttemptDuration(const int &callAttemptDuration) 0124 { 0125 _callData.callAttemptDuration = callAttemptDuration; 0126 } 0127 0128 void CallObject::setStartedAt(const QDateTime &startedAt) 0129 { 0130 _callData.startedAt = startedAt; 0131 } 0132 0133 void CallObject::setDuration(const int &duration) 0134 { 0135 _callData.duration = duration; 0136 } 0137 0138 void CallObject::onCallStateChanged(const QString &deviceUni, 0139 const QString &callUni, 0140 const DialerTypes::CallDirection &callDirection, 0141 const DialerTypes::CallState &callState, 0142 const DialerTypes::CallStateReason &callStateReason) 0143 { 0144 qDebug() << "new call state:" << deviceUni << callUni << callDirection << callState << callStateReason; 0145 _callData.state = callState; 0146 _callData.stateReason = callStateReason; 0147 if (callState == DialerTypes::CallState::RingingIn) { 0148 qDebug() << "incoming call"; 0149 _callAttemptTimer.start(); 0150 } 0151 if (callState == DialerTypes::CallState::Active) { 0152 qDebug() << "call started"; 0153 _callTimer.start(); 0154 } 0155 if (callState == DialerTypes::CallState::Terminated) { 0156 qDebug() << "call terminated"; 0157 if ((callDirection == DialerTypes::CallDirection::Incoming) && !_callTimer.isActive()) { 0158 qDebug() << "missed a call"; 0159 } 0160 _callAttemptTimer.stop(); 0161 _callTimer.stop(); 0162 } 0163 }