diff --git a/src/api/newcallmodel.h b/src/api/newcallmodel.h index e9c8bd42319df1ed60b7e93a89e49dc65fa91cf4..0a19b370dce87e7c12717c975913e39d9a9ccf3b 100644 --- a/src/api/newcallmodel.h +++ b/src/api/newcallmodel.h @@ -197,6 +197,13 @@ public: */ static void hangupCallsAndConferences(); + /** + * Extract Status Message From Status Map + * @param statusCode + * @return status message + */ + static std::string getSIPCallStatusString(const short& statusCode); + Q_SIGNALS: /** * Emitted when a call state changes diff --git a/src/newcallmodel.cpp b/src/newcallmodel.cpp index 126d07f1b86387ecc64cc22d52b876ca4acd5c96..92a8dd35ac428cf8b716d3225d143034d6e9f583 100644 --- a/src/newcallmodel.cpp +++ b/src/newcallmodel.cpp @@ -42,6 +42,64 @@ #include <QString> static std::uniform_int_distribution<int> dis{ 0, std::numeric_limits<int>::max() }; +static const std::map<short, std::string> sip_call_status_code_map { + {0, QObject::tr("Null").toStdString()}, + {100, QObject::tr("Trying").toStdString()}, + {180, QObject::tr("Ringing").toStdString()}, + {181, QObject::tr("Being Forwarded").toStdString()}, + {182, QObject::tr("Queued").toStdString()}, + {183, QObject::tr("Progress").toStdString()}, + {200, QObject::tr("OK").toStdString()}, + {202, QObject::tr("Accepted").toStdString()}, + {300, QObject::tr("Multiple Choices").toStdString()}, + {301, QObject::tr("Moved Permanently").toStdString()}, + {302, QObject::tr("Moved Temporarily").toStdString()}, + {305, QObject::tr("Use Proxy").toStdString()}, + {380, QObject::tr("Alternative Service").toStdString()}, + {400, QObject::tr("Bad Request").toStdString()}, + {401, QObject::tr("Unauthorized").toStdString()}, + {402, QObject::tr("Payment Required").toStdString()}, + {403, QObject::tr("Forbidden").toStdString()}, + {404, QObject::tr("Not Found").toStdString()}, + {405, QObject::tr("Method Not Allowed").toStdString()}, + {406, QObject::tr("Not Acceptable").toStdString()}, + {407, QObject::tr("Proxy Authentication Required").toStdString()}, + {408, QObject::tr("Request Timeout").toStdString()}, + {410, QObject::tr("Gone").toStdString()}, + {413, QObject::tr("Request Entity Too Large").toStdString()}, + {414, QObject::tr("Request URI Too Long").toStdString()}, + {415, QObject::tr("Unsupported Media Type").toStdString()}, + {416, QObject::tr("Unsupported URI Scheme").toStdString()}, + {420, QObject::tr("Bad Extension").toStdString()}, + {421, QObject::tr("Extension Required").toStdString()}, + {422, QObject::tr("Session Timer Too Small").toStdString()}, + {423, QObject::tr("Interval Too Brief").toStdString()}, + {480, QObject::tr("Temporarily Unavailable").toStdString()}, + {481, QObject::tr("Call TSX Does Not Exist").toStdString()}, + {482, QObject::tr("Loop Detected").toStdString()}, + {483, QObject::tr("Too Many Hops").toStdString()}, + {484, QObject::tr("Address Incomplete").toStdString()}, + {485, QObject::tr("Ambiguous").toStdString()}, + {486, QObject::tr("Busy").toStdString()}, + {487, QObject::tr("Request Terminated").toStdString()}, + {488, QObject::tr("Not Acceptable").toStdString()}, + {489, QObject::tr("Bad Event").toStdString()}, + {490, QObject::tr("Request Updated").toStdString()}, + {491, QObject::tr("Request Pending").toStdString()}, + {493, QObject::tr("Undecipherable").toStdString()}, + {500, QObject::tr("Internal Server Error").toStdString()}, + {501, QObject::tr("Not Implemented").toStdString()}, + {502, QObject::tr("Bad Gateway").toStdString()}, + {503, QObject::tr("Service Unavailable").toStdString()}, + {504, QObject::tr("Server Timeout").toStdString()}, + {505, QObject::tr("Version Not Supported").toStdString()}, + {513, QObject::tr("Message Too Large").toStdString()}, + {580, QObject::tr("Precondition Failure").toStdString()}, + {600, QObject::tr("Busy Everywhere").toStdString()} , + {603, QObject::tr("Call Refused").toStdString()}, + {604, QObject::tr("Does Not Exist Anywhere").toStdString()}, + {606, QObject::tr("Not Acceptable Anywhere").toStdString()} +}; namespace lrc { @@ -377,6 +435,16 @@ NewCallModel::isRecording(const std::string& callId) const return CallManager::instance().getIsRecording(callId.c_str()); } +std::string +NewCallModel::getSIPCallStatusString(const short& statusCode) +{ + auto element = sip_call_status_code_map.find(statusCode); + if(element != sip_call_status_code_map.end()){ + return element->second; + } + return ""; +} + NewCallModelPimpl::NewCallModelPimpl(const NewCallModel& linked, const CallbacksHandler& callbacksHandler) : linked(linked)