File indexing completed on 2024-04-28 16:42:52
0001 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru> 0002 // 0003 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL 0004 0005 #pragma once 0006 0007 #include "call-model.h" 0008 #include "callutilsinterface.h" 0009 #include <QTimer> 0010 0011 class ActiveCallModel : public CallModel 0012 { 0013 Q_OBJECT 0014 Q_PROPERTY(bool incoming READ incoming NOTIFY incomingChanged) 0015 Q_PROPERTY(bool active READ active NOTIFY activeChanged) 0016 Q_PROPERTY(QString communicationWith READ communicationWith NOTIFY communicationWithChanged) 0017 Q_PROPERTY(qulonglong duration READ duration NOTIFY durationChanged) 0018 0019 public: 0020 ActiveCallModel(QObject *parent = nullptr); 0021 0022 bool active() const; 0023 void setActive(bool newActive); 0024 0025 bool incoming() const; 0026 void setIncoming(bool newIncoming); 0027 0028 QString communicationWith() const; 0029 void setCommunicationWith(const QString communicationWith); 0030 0031 qulonglong duration() const; 0032 void setDuration(qulonglong duration); 0033 0034 void setCallUtils(org::kde::telephony::CallUtils *callUtils); 0035 0036 public Q_SLOTS: 0037 Q_INVOKABLE void sendDtmf(const QString &tones); 0038 Q_INVOKABLE void dial(const QString &deviceUni, const QString &number); 0039 Q_INVOKABLE QString activeCallUni(); 0040 0041 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0042 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0043 0044 Q_SIGNALS: 0045 void activeChanged(); 0046 void incomingChanged(); 0047 void communicationWithChanged(); 0048 void durationChanged(); 0049 0050 private Q_SLOTS: 0051 void onUtilsCallAdded(const QString &deviceUni, 0052 const QString &callUni, 0053 const DialerTypes::CallDirection &callDirection, 0054 const DialerTypes::CallState &callState, 0055 const DialerTypes::CallStateReason &callStateReason, 0056 const QString communicationWith); 0057 void onUtilsCallDeleted(const QString &deviceUni, const QString &callUni); 0058 void onUtilsCallStateChanged(const DialerTypes::CallData &callData); 0059 void onUtilsCallsChanged(const DialerTypes::CallDataVector &fetchedCalls); 0060 0061 private: 0062 org::kde::telephony::CallUtils *_callUtils; 0063 DialerTypes::CallDataVector _calls; 0064 QTimer _callsTimer; 0065 bool _active = false; 0066 bool _incoming = false; 0067 QString _communicationWith; 0068 qulonglong _duration; 0069 0070 void _updateTimers(); 0071 };