diff --git a/linphone-app/src/components/assistant/AssistantModel.cpp b/linphone-app/src/components/assistant/AssistantModel.cpp index fb7051403..57762ee7e 100644 --- a/linphone-app/src/components/assistant/AssistantModel.cpp +++ b/linphone-app/src/components/assistant/AssistantModel.cpp @@ -365,7 +365,7 @@ void AssistantModel::setPhoneNumber (const QString &phoneNumber) { // ----------------------------------------------------------------------------- QString AssistantModel::getUsername () const { - return Utils::coreStringToAppString(mAccountCreator->getUsername()); + return QString::fromStdString(mAccountCreator->getUsername()); } void AssistantModel::setUsername (const QString &username) { diff --git a/linphone-app/src/components/authentication/AuthenticationNotifier.cpp b/linphone-app/src/components/authentication/AuthenticationNotifier.cpp index 858bb9ae9..fe3f496c0 100644 --- a/linphone-app/src/components/authentication/AuthenticationNotifier.cpp +++ b/linphone-app/src/components/authentication/AuthenticationNotifier.cpp @@ -40,7 +40,7 @@ void AuthenticationNotifier::handleAuthenticationRequested (const shared_ptrgetRealm()), QStringLiteral("%1@%2").arg( - Utils::coreStringToAppString(authInfo->getUsername()) + QString::fromStdString(authInfo->getUsername()) ).arg( Utils::coreStringToAppString(authInfo->getDomain()) ), diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp index 5c058c7fc..1908c392e 100644 --- a/linphone-app/src/components/call/CallModel.cpp +++ b/linphone-app/src/components/call/CallModel.cpp @@ -112,7 +112,7 @@ void CallModel::setRecordFile (const shared_ptr &callParam void CallModel::setRecordFile (const shared_ptr &callParams, const QString &to) { const QString from( - Utils::coreStringToAppString( + QString::fromStdString( CoreManager::getInstance()->getAccountSettingsModel()->getUsedSipAddress()->getUsername() ) ); @@ -779,8 +779,8 @@ QString CallModel::iceStateToString (linphone::IceState state) const { QString CallModel::generateSavedFilename () const { const shared_ptr callLog(mCall->getCallLog()); return generateSavedFilename( - Utils::coreStringToAppString(callLog->getFromAddress()->getUsername()), - Utils::coreStringToAppString(callLog->getToAddress()->getUsername()) + QString::fromStdString(callLog->getFromAddress()->getUsername()), + QString::fromStdString(callLog->getToAddress()->getUsername()) ); } diff --git a/linphone-app/src/components/calls/CallsListModel.cpp b/linphone-app/src/components/calls/CallsListModel.cpp index d4f9e2bdc..21600aa46 100644 --- a/linphone-app/src/components/calls/CallsListModel.cpp +++ b/linphone-app/src/components/calls/CallsListModel.cpp @@ -112,8 +112,24 @@ void CallsListModel::launchAudioCall (const QString &sipAddress, const QHashaddCustomHeader(Utils::appStringToCoreString(iterator.key()), Utils::appStringToCoreString(iterator.value())); } params->setProxyConfig(core->getDefaultProxyConfig()); - CallModel::setRecordFile(params, Utils::coreStringToAppString(address->getUsername())); - core->inviteAddressWithParams(address, params); + CallModel::setRecordFile(params, QString::fromStdString(address->getUsername())); + shared_ptr currentProxyConfig = core->getDefaultProxyConfig(); + if(currentProxyConfig){ + if(currentProxyConfig->getState() == linphone::RegistrationState::Ok) + core->inviteAddressWithParams(address, params); + else{ + QObject * context = new QObject(); + QObject::connect(CoreManager::getInstance()->getHandlers().get(), &CoreHandlers::registrationStateChanged,context, + [address,core,params,currentProxyConfig, context](const std::shared_ptr &proxyConfig, linphone::RegistrationState state) mutable { + if(context && proxyConfig==currentProxyConfig && state==linphone::RegistrationState::Ok){ + delete context; + context = nullptr; + core->inviteAddressWithParams(address, params); + } + }); + } + }else + core->inviteAddressWithParams(address, params); } void CallsListModel::launchVideoCall (const QString &sipAddress) const { @@ -131,7 +147,7 @@ void CallsListModel::launchVideoCall (const QString &sipAddress) const { shared_ptr params = core->createCallParams(nullptr); params->enableVideo(true); params->setProxyConfig(core->getDefaultProxyConfig()); - CallModel::setRecordFile(params, Utils::coreStringToAppString(address->getUsername())); + CallModel::setRecordFile(params, QString::fromStdString(address->getUsername())); core->inviteAddressWithParams(address, params); } diff --git a/linphone-app/src/components/settings/AccountSettingsModel.cpp b/linphone-app/src/components/settings/AccountSettingsModel.cpp index c807ab87a..55da05b47 100644 --- a/linphone-app/src/components/settings/AccountSettingsModel.cpp +++ b/linphone-app/src/components/settings/AccountSettingsModel.cpp @@ -356,7 +356,7 @@ AccountSettingsModel::RegistrationState AccountSettingsModel::getRegistrationSta // ----------------------------------------------------------------------------- QString AccountSettingsModel::getPrimaryUsername () const { - return Utils::coreStringToAppString( + return QString::fromStdString( CoreManager::getInstance()->getCore()->createPrimaryContactParsed()->getUsername() ); } diff --git a/linphone-app/ui/scripts/LinphoneUtils/linphone-utils.js b/linphone-app/ui/scripts/LinphoneUtils/linphone-utils.js index 3c16a6ac3..1281a6364 100644 --- a/linphone-app/ui/scripts/LinphoneUtils/linphone-utils.js +++ b/linphone-app/ui/scripts/LinphoneUtils/linphone-utils.js @@ -74,10 +74,10 @@ function _getUsername (str) { var end = str.indexOf('@', start + 1) if (end === -1) { - return str.substring(start) + return Utils.decode(str.substring(start)) } - return str.substring(start, end) + return Utils.decode(str.substring(start, end)) } // ----------------------------------------------------------------------------- diff --git a/linphone-app/ui/scripts/Utils/utils.js b/linphone-app/ui/scripts/Utils/utils.js index 95644d052..f82a23da4 100644 --- a/linphone-app/ui/scripts/Utils/utils.js +++ b/linphone-app/ui/scripts/Utils/utils.js @@ -449,6 +449,11 @@ function escapeQuotes (str) { : '' } +function decode(str){ + return decodeURIComponent(escape(str.replace(/%([0-9A-Fa-f]{2})/g, function() { + return String.fromCharCode(parseInt(arguments[1], 16)); + }))); +} // ----------------------------------------------------------------------------- // Get the first matching value in a array or object.