File indexing completed on 2025-03-23 13:45:11
0001 // SPDX-FileCopyrightText: 2020 Bhushan Shah <bshah@kde.org> 0002 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru> 0003 // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0004 0005 #pragma once 0006 0007 #include <KNotification> 0008 #ifdef HAVE_QT5_FEEDBACK 0009 #include <QtFeedback/QFeedbackEffect> 0010 #endif // HAVE_QT5_FEEDBACK 0011 0012 #include "callhistorydatabaseinterface.h" 0013 #include "callutilsinterface.h" 0014 #include "contact-utils.h" 0015 0016 class NotificationManager : public QObject 0017 { 0018 Q_OBJECT 0019 public: 0020 NotificationManager(QObject *parent = nullptr); 0021 0022 void setCallUtils(org::kde::telephony::CallUtils *callUtils); 0023 void setContactUtils(ContactUtils *contactUtils); 0024 0025 private Q_SLOTS: 0026 void onCallAdded(const QString &deviceUni, 0027 const QString &callUni, 0028 const DialerTypes::CallDirection &callDirection, 0029 const DialerTypes::CallState &callState, 0030 const DialerTypes::CallStateReason &callStateReason, 0031 const QString communicationWith); 0032 void onCallDeleted(const QString &deviceUni, const QString &callUni); 0033 void onCallStateChanged(const DialerTypes::CallData &callData); 0034 0035 private: 0036 std::unique_ptr<KNotification> _ringingNotification; 0037 std::unique_ptr<KNotification> _missedCallNotification; 0038 0039 void openRingingNotification(const QString &deviceUni, const QString &callUni, const QString callerDisplay, const QString notificationEvent); 0040 void closeRingingNotification(); 0041 0042 void accept(const QString &deviceUni, const QString &callUni); 0043 void hangUp(const QString &deviceUni, const QString &callUni); 0044 0045 void handleIncomingCall(const QString &deviceUni, const QString &callUni, const QString &communicationWith); 0046 void handleCallInteraction(); 0047 0048 org::kde::telephony::CallHistoryDatabase *_databaseInterface; 0049 0050 org::kde::telephony::CallUtils *_callUtils; 0051 ContactUtils *_contactUtils; 0052 0053 bool _callStarted; 0054 0055 void startHapticsFeedback(); 0056 void stopHapticsFeedback(); 0057 #ifdef HAVE_QT5_FEEDBACK 0058 std::unique_ptr<QFeedbackHapticsEffect> _ringEffect; 0059 #endif // HAVE_QT5_FEEDBACK 0060 };