-rw-r--r-- | kabc/vcard/ContentLine.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kabc/vcard/ContentLine.cpp b/kabc/vcard/ContentLine.cpp index 2f88cde..0a2f97d 100644 --- a/kabc/vcard/ContentLine.cpp +++ b/kabc/vcard/ContentLine.cpp @@ -132,66 +132,71 @@ ContentLine::operator = (ContentLine & x) ContentLine::operator = (const QCString & s) { Entity::operator = (s); delete value_; value_ = 0; return *this; } bool ContentLine::operator == (ContentLine & x) { x.parse(); QPtrListIterator<Param> it(x.paramList()); if (!paramList_.find(it.current())) return false; return true; } ContentLine::~ContentLine() { delete value_; value_ = 0; } void ContentLine::_parse() { vDebug("parse"); - // Unqote newlines + // Unfold folded lines + // NLR + strRep_ = strRep_.replace( QRegExp( "\\r" ), "" ); + // Unqote newlines strRep_ = strRep_.replace( QRegExp( "\\\\n" ), "\n" ); + //NLR + strRep_ = strRep_.replace( QRegExp( "\\\\r" ), "\r" ); int split = strRep_.find(':'); if (split == -1) { // invalid content line vDebug("No ':'"); return; } QCString firstPart(strRep_.left(split)); QCString valuePart(strRep_.mid(split + 1)); split = firstPart.find('.'); if (split != -1) { group_ = firstPart.left(split); firstPart = firstPart.mid(split + 1); } vDebug("Group == " + group_); vDebug("firstPart == " + firstPart); vDebug("valuePart == " + valuePart); // Now we have the group, the name and param list together and the value. QStrList l; RTokenise(firstPart, ";", l); if (l.count() == 0) {// invalid - no name ! vDebug("No name for this content line !"); return; } @@ -256,64 +261,65 @@ ContentLine::_parse() case ValueN: value_ = new NValue; break; case ValueUTC: value_ = new UTCValue; break; case ValueURI: value_ = new URIValue; break; case ValueClass: value_ = new ClassValue; break; case ValueFloat: value_ = new FloatValue; break; case ValueImage: value_ = new ImageValue; break; case ValueDate: value_ = new DateValue; break; case ValueTextList: value_ = new TextListValue; break; case ValueGeo: value_ = new GeoValue; break; case ValueText: case ValueUnknown: default: value_ = new TextValue; break; } *value_ = valuePart; } void ContentLine::_assemble() { //strRep_.truncate(0); QString line; if (!group_.isEmpty()) line = group_ + '.'; line += name_; ParamListIterator it(paramList_); for (; it.current(); ++it) line += ";" + it.current()->asString(); if (value_ != 0) line += ":" + value_->asString(); + line = line.replace( QRegExp( "\r" ), "\\r" ); line = line.replace( QRegExp( "\n" ), "\\n" ); // Fold lines longer than 72 chars const int maxLen = 72; uint cursor = 0; QString cut; while( line.length() > ( cursor + 1 ) * maxLen ) { cut += line.mid( cursor * maxLen, maxLen ); cut += "\r\n "; ++cursor; } cut += line.mid( cursor * maxLen ); strRep_ = cut.latin1(); //qDebug("ContentLine::_assemble()\n%s*****", strRep_.data()); #if 0 vDebug("Assemble (argl) - my name is \"" + name_ + "\""); strRep_.truncate(0); QCString line; if (!group_.isEmpty()) line += group_ + '.'; line += name_; vDebug("Adding parameters"); ParamListIterator it(paramList_); for (; it.current(); ++it) line += ";" + it.current()->asString(); vDebug("Adding value"); |