From a859c17a6707a852a750b2b3eb4e4d00040f5c3f Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Fri, 9 Oct 2020 20:05:43 +0200 Subject: [PATCH] Revert UTF8 vcard fix and use VCard directly as UTF8 Add vcard fields encoder/decoder --- .../src/components/contact/VcardModel.cpp | 24 +++++++++++++++++-- .../src/components/contact/VcardModel.hpp | 3 +++ linphone-sdk | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/linphone-app/src/components/contact/VcardModel.cpp b/linphone-app/src/components/contact/VcardModel.cpp index 6c8edece3..c71122a25 100644 --- a/linphone-app/src/components/contact/VcardModel.cpp +++ b/linphone-app/src/components/contact/VcardModel.cpp @@ -187,7 +187,7 @@ bool VcardModel::setAvatar (const QString &path) { // ----------------------------------------------------------------------------- QString VcardModel::getUsername () const { - return QString::fromStdString(mVcard->getFullName());// Is in UTF8 + return decode(QString::fromStdString(mVcard->getFullName()));// Is in UTF8 } void VcardModel::setUsername (const QString &username) { @@ -196,7 +196,7 @@ void VcardModel::setUsername (const QString &username) { if (username.length() == 0 || username == getUsername()) return; - mVcard->setFullName(Utils::appStringToCoreString(username)); + mVcard->setFullName(encode(username).toStdString()); emit vcardUpdated(); } @@ -505,3 +505,23 @@ bool VcardModel::updateUrl (const QString &oldUrl, const QString &url) { removeUrl(oldUrl); return addUrl(url); } + +QString VcardModel::encode(const QString& data)const{// Convert '\n', ',', '\' to "\n", "\,", "\\" + QString encoded; + for(int i = 0 ; i < data.length() ; ++i){ + if(data[i] == ',') + encoded += "\\,"; + else if(data[i] == '\\') + encoded += "\\\\"; + else if(data[i] == '\n') + encoded += "\\n"; + else + encoded += data[i]; + } + return encoded; +} +QString VcardModel::decode(const QString& data)const{// Convert "\n", "\,", "\\" to '\n', ',', '\' + QString decoded = data; + decoded.replace("\\,", ",").replace("\\\\", "\\").replace("\\n", "\n"); + return decoded; +} diff --git a/linphone-app/src/components/contact/VcardModel.hpp b/linphone-app/src/components/contact/VcardModel.hpp index 8dabe0ad2..f1a39beaa 100644 --- a/linphone-app/src/components/contact/VcardModel.hpp +++ b/linphone-app/src/components/contact/VcardModel.hpp @@ -98,6 +98,9 @@ public: // --------------------------------------------------------------------------- + QString encode(const QString& data)const;// Convert '\n', ',', '\' to "\n", "\,", "\\" + QString decode(const QString& data)const;// Convert "\n", "\,", "\\" to '\n', ',', '\' + signals: void vcardUpdated (); diff --git a/linphone-sdk b/linphone-sdk index 23d90e882..263323b37 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit 23d90e882e08696694385d9c379a03ca086fccd5 +Subproject commit 263323b37cdb66a0cc0c173effd619748fa5ff27