From c130e11a33e86ed4f13bd38e4d0e8873bc14bad5 Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> Date: Wed, 3 Jun 2015 16:40:52 -0400 Subject: [PATCH] call: Pre-format the URI for consistency Refs #74054 Change-Id: I9789611b4e470a74c4bcf0ff6fae5adac0c49604 --- src/call.cpp | 40 ++++++++++++++++++++++++++++++++++------ src/private/call_p.h | 1 + 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/call.cpp b/src/call.cpp index e836ad38..cf28648e 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -366,7 +366,7 @@ Call::~Call() Call* CallPrivate::buildExistingCall(const QString& callId) { CallManagerInterface& callManager = DBus::CallManager::instance(); - MapStringString details = callManager.getCallDetails(callId); + MapStringString details = getCallDetailsCommon(callId); //Too noisy //qDebug() << "Constructing existing call with details : " << details; @@ -424,11 +424,41 @@ Call* CallPrivate::buildDialingCall(const QString & peerName, Account* account) return call; } +MapStringString CallPrivate::getCallDetailsCommon(const QString& callId) +{ + + CallManagerInterface& callManager = DBus::CallManager::instance(); + + MapStringString details = callManager.getCallDetails(callId); + + const QString account = details[ CallPrivate::DetailsMapFields::ACCOUNT_ID ]; + + if (account.isEmpty()) + return details; + + Account* acc = AccountModel::instance()->getById(account.toLatin1()); + + //Only keep the useful part of the URI + if (acc && acc->protocol() == Account::Protocol::RING) + details[DetailsMapFields::PEER_NUMBER] = URI(details[DetailsMapFields::PEER_NUMBER]).format( + URI::Section::SCHEME | + URI::Section::USER_INFO + ); + else + details[DetailsMapFields::PEER_NUMBER] = URI(details[DetailsMapFields::PEER_NUMBER]).format( + URI::Section::SCHEME | + URI::Section::USER_INFO | + URI::Section::HOSTNAME + ); + + return details; +} + ///Build a call from a dbus event Call* CallPrivate::buildIncomingCall(const QString& callId) { CallManagerInterface& callManager = DBus::CallManager::instance(); - MapStringString details = callManager.getCallDetails(callId); + MapStringString details = getCallDetailsCommon(callId); const QString from = details[ CallPrivate::DetailsMapFields::PEER_NUMBER ]; const QString account = details[ CallPrivate::DetailsMapFields::ACCOUNT_ID ]; @@ -460,8 +490,7 @@ Call* CallPrivate::buildIncomingCall(const QString& callId) ///Build a ringing call (from dbus) Call* CallPrivate::buildRingingCall(const QString & callId) { - CallManagerInterface& callManager = DBus::CallManager::instance(); - MapStringString details = callManager.getCallDetails(callId); + MapStringString details = getCallDetailsCommon(callId); const QString from = details[ CallPrivate::DetailsMapFields::PEER_NUMBER ]; const QString account = details[ CallPrivate::DetailsMapFields::ACCOUNT_ID ]; @@ -1169,8 +1198,7 @@ Call::State CallPrivate::stateChanged(const QString& newStateName) return m_CurrentState; } - CallManagerInterface & callManager = DBus::CallManager::instance(); - MapStringString details = callManager.getCallDetails(m_DringId); + MapStringString details = getCallDetailsCommon(m_DringId); if (details[CallPrivate::DetailsMapFields::PEER_NAME] != m_PeerName) m_PeerName = details[CallPrivate::DetailsMapFields::PEER_NAME]; diff --git a/src/private/call_p.h b/src/private/call_p.h index 19d5b732..13c13d93 100644 --- a/src/private/call_p.h +++ b/src/private/call_p.h @@ -241,6 +241,7 @@ public: void registerRenderer(Video::Renderer* renderer); void removeRenderer(Video::Renderer* renderer); void setRecordingPath(const QString& path); + static MapStringString getCallDetailsCommon(const QString& callId); template<typename T> T* mediaFactory(Media::Media::Direction dir); -- GitLab