Recognize also quoted printable and base64 encoded vCards.

Fix a remaining charset bug. Non latin-1 vCards should also work now.

svn path=/trunk/kdenetwork/kmail/; revision=107520
wilder-work
Michael Haeckel 25 years ago
parent 338395a599
commit aefede6ff3
  1. 15
      kmreaderwin.cpp
  2. 2
      kmversion.h
  3. 6
      vcard.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");

@ -3,6 +3,6 @@
#ifndef kmversion_h
#define kmversion_h
#define KMAIL_VERSION "1.2.9"
#define KMAIL_VERSION "1.3"
#endif /*kmversion_h*/

@ -54,7 +54,6 @@ value :=
static QValueList<QString> tokenizeBy(const QString& str, const QRegExp& tok, bool keepEmpties = false) {
QValueList<QString> 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<QString> 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

Loading…
Cancel
Save