-rw-r--r-- | kabc/vcard/VCardv.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kabc/vcard/VCardv.cpp b/kabc/vcard/VCardv.cpp index 1166aac..bad2ef1 100644 --- a/kabc/vcard/VCardv.cpp +++ b/kabc/vcard/VCardv.cpp @@ -79,193 +79,193 @@ VCard::operator = (VCard & x) } VCard & VCard::operator = (const QCString & s) { Entity::operator = (s); return *this; } bool VCard::operator == (VCard & x) { x.parse(); return false; } VCard::~VCard() { } void VCard::_parse() { QStringList l; QStrList sl; RTokenise(strRep_, "\r\n", sl); if (sl.count() < 3) { // Invalid VCARD ! //qDebug("invalid vcard "); return; } l = QStringList::fromStrList( sl ); // Get the first line QString beginLine = l[0].stripWhiteSpace(); // Remove extra blank lines while (l.last().isEmpty()) l.remove(l.last()); // Now we know this is the last line QString endLine = l.last(); // Trash the first and last lines as we have seen them. l.remove(l.begin()); l.remove(l.last()); /////////////////////////////////////////////////////////////// // FIRST LINE int split = beginLine.find(':'); if (split == -1) { // invalid, no BEGIN vDebug("No split"); return; } QString firstPart(beginLine.left(split)); QString valuePart(beginLine.mid(split + 1)); split = firstPart.find('.'); if (split != -1) { group_ = firstPart.left(split); firstPart = firstPart.right(firstPart.length() - split - 1); } if (firstPart.left(5) != "BEGIN" ) { // No BEGIN ! qDebug("no BEGIN in vcard "); return; } if (valuePart.left(5) != "VCARD") { // Not a vcard ! qDebug("not a VCARD "); return; } /////////////////////////////////////////////////////////////// // CONTENT LINES // vDebug("Content lines"); // Handle folded lines. QStringList refolded; QStringList::Iterator it = l.begin(); QString cur; for (; it != l.end(); ++it) { cur = (*it); ++it; while ( it!= l.end() && (*it).at(0) == ' ' && (*it).length()!= 1) { - cur += (*it) ; + cur += (*it).mid(1) ; ++it; } --it; refolded.append(cur); } QStringList::Iterator it2 = refolded.begin(); for (; it2 != refolded.end(); ++it2) { ContentLine * cl = new ContentLine(QCString((*it2).latin1())); cl->parse(); if (cl->value() == 0) { qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1()); delete cl; } else contentLineList_.append(cl); } /////////////////////////////////////////////////////////////// // LAST LINE // LR: sorry, but the remaining code in this method makes no sense #if 0 split = endLine.find(':'); if (split == -1) // invalid, no END return; firstPart = endLine.left(split); valuePart = endLine.right(firstPart.length() - split - 1); split = firstPart.find('.'); if (split != -1) { group_ = firstPart.left(split); firstPart = firstPart.right(firstPart.length() - split - 1); } if (qstricmp(firstPart, "END") != 0) // No END ! return; if (qstricmp(valuePart, "VCARD") != 0) // Not a vcard ! return; #endif } void VCard::_assemble() { vDebug("Assembling vcard"); strRep_ = "BEGIN:VCARD\r\n"; strRep_ += "VERSION:3.0\r\n"; QPtrListIterator<ContentLine> it(contentLineList_); for (; it.current(); ++it) strRep_ += it.current()->asString() + "\r\n"; strRep_ += "END:VCARD\r\n"; } bool VCard::has(EntityType t) { parse(); return contentLine(t) == 0 ? false : true; } bool VCard::has(const QCString & s) { parse(); return contentLine(s) == 0 ? false : true; } void VCard::add(const ContentLine & cl) { parse(); ContentLine * c = new ContentLine(cl); contentLineList_.append(c); } void VCard::add(const QCString & s) { parse(); ContentLine * c = new ContentLine(s); contentLineList_.append(c); } ContentLine * VCard::contentLine(EntityType t) { |