diff --git a/kmreaderwin.cpp b/kmreaderwin.cpp index 5db2ced52..3df911972 100644 --- a/kmreaderwin.cpp +++ b/kmreaderwin.cpp @@ -625,7 +625,11 @@ void KMReaderWin::parseMsg(KMMessage* aMsg) if (!qstricmp(msgPart.typeStr(), "text") && !qstricmp(msgPart.subtypeStr(), "x-vcard")) { int vcerr; - vc = VCard::parseVCard(msgPart.body(), &vcerr); + QTextCodec *atmCodec = (mAutoDetectEncoding) ? + KMMsgBase::codecForName(msgPart.charset()) : mCodec; + if (!atmCodec) atmCodec = mCodec; + vc = VCard::parseVCard(atmCodec->toUnicode(msgPart + .bodyDecoded()), &vcerr); if (vc) { delete vc; @@ -1447,7 +1451,8 @@ void KMReaderWin::atmView(KMReaderWin* aReaderWin, KMMessagePart* aMsgPart, if (qstricmp(aMsgPart->subtypeStr(), "x-vcard") == 0) { KMDisplayVCard *vcdlg; int vcerr; - VCard *vc = VCard::parseVCard(aMsgPart->body(), &vcerr); + VCard *vc = VCard::parseVCard(codec->toUnicode(aMsgPart + ->bodyDecoded()), &vcerr); if (!vc) { QString errstring = i18n("Error reading in vCard:\n"); @@ -1563,7 +1568,11 @@ void KMReaderWin::slotAtmOpen() if (qstricmp(msgPart.subtypeStr(), "x-vcard") == 0) { KMDisplayVCard *vcdlg; int vcerr; - VCard *vc = VCard::parseVCard(msgPart.body(), &vcerr); + QTextCodec *atmCodec = (mAutoDetectEncoding) ? + KMMsgBase::codecForName(msgPart.charset()) : mCodec; + if (!atmCodec) atmCodec = mCodec; + VCard *vc = VCard::parseVCard(atmCodec->toUnicode(msgPart + .bodyDecoded()), &vcerr); if (!vc) { QString errstring = i18n("Error reading in vCard:\n"); diff --git a/kmversion.h b/kmversion.h index 4ff8c182f..67c0bdecf 100644 --- a/kmversion.h +++ b/kmversion.h @@ -3,6 +3,6 @@ #ifndef kmversion_h #define kmversion_h -#define KMAIL_VERSION "1.2.9" +#define KMAIL_VERSION "1.3" #endif /*kmversion_h*/ diff --git a/vcard.cpp b/vcard.cpp index a104ebcac..ab646c64d 100644 --- a/vcard.cpp +++ b/vcard.cpp @@ -54,7 +54,6 @@ value := static QValueList tokenizeBy(const QString& str, const QRegExp& tok, bool keepEmpties = false) { QValueList tokens; unsigned int head, tail; -const char *chstr = str.ascii(); unsigned int length = str.length(); if (length < 1) return tokens; @@ -73,8 +72,7 @@ unsigned int length = str.length(); tail = length; if (tail-head > 0 || keepEmpties) { // it has to be at least 1 long! - thisline = &(chstr[head]); - thisline.truncate(tail-head); + thisline = str.mid(head, tail-head); tokens.append(thisline); } } @@ -192,7 +190,7 @@ QValueList lines; tmplinetoken = (*j); tmplinetoken.truncate(tail); linetokens.append(tmplinetoken); - tmplinetoken = &((*j).ascii()[tail+1]); + tmplinetoken = (*j).mid(tail+1); linetokens.append(tmplinetoken); // check for qualifiers and