Revert UTF8 vcard fix and use VCard directly as UTF8

Add vcard fields encoder/decoder
This commit is contained in:
Julien Wadel 2020-10-09 20:05:43 +02:00
parent 84437b2c01
commit a859c17a67
3 changed files with 26 additions and 3 deletions

View file

@ -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;
}

View file

@ -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 ();

@ -1 +1 @@
Subproject commit 23d90e882e08696694385d9c379a03ca086fccd5
Subproject commit 263323b37cdb66a0cc0c173effd619748fa5ff27