diff --git a/src/api/newcallmodel.h b/src/api/newcallmodel.h index 2f192d751ae8891b8b99c9792ef48ae2a5c5fed9..da82a839146e28b98fcdd8e88da6b07c34dbc37c 100644 --- a/src/api/newcallmodel.h +++ b/src/api/newcallmodel.h @@ -187,6 +187,11 @@ public: */ bool isRecording(const std::string& callId) const; + /** + * Close all active calls and conferences + */ + static void hangupCallsAndConferences(); + Q_SIGNALS: /** * Emitted when a call state changes diff --git a/src/newcallmodel.cpp b/src/newcallmodel.cpp index be49b0c40c085f3999eeb322a972663f694fed18..537ecac05270d8f8150d9caead4bf34d199fd26c 100644 --- a/src/newcallmodel.cpp +++ b/src/newcallmodel.cpp @@ -463,6 +463,19 @@ NewCallModel::sendSipMessage(const std::string& callId, const std::string& body) CallManager::instance().sendTextMessage(callId.c_str(), payloads, true /* not used */); } +void +NewCallModel::hangupCallsAndConferences() +{ + QStringList conferences = CallManager::instance().getConferenceList(); + for (const auto& conf : conferences) { + CallManager::instance().hangUpConference(conf); + } + QStringList calls = CallManager::instance().getCallList(); + for (const auto &call : calls) { + CallManager::instance().hangUp(call); + } +} + void NewCallModelPimpl::slotIncomingCall(const std::string& accountId, const std::string& callId, const std::string& fromId) {