-rw-r--r-- | kabc/vcard/ContentLine.cpp | 103 |
1 files changed, 64 insertions, 39 deletions
diff --git a/kabc/vcard/ContentLine.cpp b/kabc/vcard/ContentLine.cpp index 6fa1a8f..0fb5b5d 100644 --- a/kabc/vcard/ContentLine.cpp +++ b/kabc/vcard/ContentLine.cpp | |||
@@ -4,3 +4,3 @@ | |||
4 | Copyright (C) 1999 Rik Hemsley rik@kde.org | 4 | Copyright (C) 1999 Rik Hemsley rik@kde.org |
5 | 5 | ||
6 | Permission is hereby granted, free of charge, to any person obtaining a copy | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy |
@@ -70,2 +70,3 @@ ContentLine::ContentLine() | |||
70 | { | 70 | { |
71 | paramList_.setAutoDelete( TRUE ); | ||
71 | } | 72 | } |
@@ -76,5 +77,20 @@ ContentLine::ContentLine(const ContentLine & x) | |||
76 | name_ (x.name_), | 77 | name_ (x.name_), |
77 | paramList_(x.paramList_), | 78 | /*US paramList_(x.paramList_),*/ |
78 | value_(x.value_->clone()) | 79 | value_(x.value_->clone()), |
80 | paramType_(x.paramType_), | ||
81 | valueType_(x.valueType_), | ||
82 | entityType_(x.entityType_) | ||
79 | { | 83 | { |
84 | paramList_.setAutoDelete( TRUE ); | ||
85 | |||
86 | |||
87 | ParamListIterator it(x.paramList_); | ||
88 | for (; it.current(); ++it) | ||
89 | { | ||
90 | Param *p = new Param; | ||
91 | p->setName( it.current()->name() ); | ||
92 | p->setValue( it.current()->value() ); | ||
93 | paramList_.append(p); | ||
94 | } | ||
95 | |||
80 | } | 96 | } |
@@ -85,2 +101,3 @@ ContentLine::ContentLine(const QCString & s) | |||
85 | { | 101 | { |
102 | paramList_.setAutoDelete( TRUE ); | ||
86 | } | 103 | } |
@@ -91,4 +108,12 @@ ContentLine::operator = (ContentLine & x) | |||
91 | if (*this == x) return *this; | 108 | if (*this == x) return *this; |
92 | 109 | ||
93 | paramList_ = x.paramList(); | 110 | ParamListIterator it(x.paramList_); |
111 | for (; it.current(); ++it) | ||
112 | { | ||
113 | Param *p = new Param; | ||
114 | p->setName( it.current()->name() ); | ||
115 | p->setValue( it.current()->value() ); | ||
116 | paramList_.append(p); | ||
117 | } | ||
118 | |||
94 | value_ = x.value_->clone(); | 119 | value_ = x.value_->clone(); |
@@ -112,5 +137,5 @@ ContentLine::operator == (ContentLine & x) | |||
112 | x.parse(); | 137 | x.parse(); |
113 | 138 | ||
114 | QPtrListIterator<Param> it(x.paramList()); | 139 | QPtrListIterator<Param> it(x.paramList()); |
115 | 140 | ||
116 | if (!paramList_.find(it.current())) | 141 | if (!paramList_.find(it.current())) |
@@ -131,8 +156,8 @@ ContentLine::_parse() | |||
131 | vDebug("parse"); | 156 | vDebug("parse"); |
132 | 157 | ||
133 | // Unqote newlines | 158 | // Unqote newlines |
134 | strRep_ = strRep_.replace( QRegExp( "\\\\n" ), "\n" ); | 159 | strRep_ = strRep_.replace( QRegExp( "\\\\n" ), "\n" ); |
135 | 160 | ||
136 | int split = strRep_.find(':'); | 161 | int split = strRep_.find(':'); |
137 | 162 | ||
138 | if (split == -1) { // invalid content line | 163 | if (split == -1) { // invalid content line |
@@ -141,8 +166,8 @@ ContentLine::_parse() | |||
141 | } | 166 | } |
142 | 167 | ||
143 | QCString firstPart(strRep_.left(split)); | 168 | QCString firstPart(strRep_.left(split)); |
144 | QCString valuePart(strRep_.mid(split + 1)); | 169 | QCString valuePart(strRep_.mid(split + 1)); |
145 | 170 | ||
146 | split = firstPart.find('.'); | 171 | split = firstPart.find('.'); |
147 | 172 | ||
148 | if (split != -1) { | 173 | if (split != -1) { |
@@ -151,3 +176,3 @@ ContentLine::_parse() | |||
151 | } | 176 | } |
152 | 177 | ||
153 | vDebug("Group == " + group_); | 178 | vDebug("Group == " + group_); |
@@ -155,9 +180,9 @@ ContentLine::_parse() | |||
155 | vDebug("valuePart == " + valuePart); | 180 | vDebug("valuePart == " + valuePart); |
156 | 181 | ||
157 | // Now we have the group, the name and param list together and the value. | 182 | // Now we have the group, the name and param list together and the value. |
158 | 183 | ||
159 | QStrList l; | 184 | QStrList l; |
160 | 185 | ||
161 | RTokenise(firstPart, ";", l); | 186 | RTokenise(firstPart, ";", l); |
162 | 187 | ||
163 | if (l.count() == 0) {// invalid - no name ! | 188 | if (l.count() == 0) {// invalid - no name ! |
@@ -166,3 +191,3 @@ ContentLine::_parse() | |||
166 | } | 191 | } |
167 | 192 | ||
168 | name_ = l.at(0); | 193 | name_ = l.at(0); |
@@ -172,8 +197,8 @@ ContentLine::_parse() | |||
172 | l.remove(0u); | 197 | l.remove(0u); |
173 | 198 | ||
174 | entityType_= EntityNameToEntityType(name_); | 199 | entityType_= EntityNameToEntityType(name_); |
175 | paramType_= EntityTypeToParamType(entityType_); | 200 | paramType_= EntityTypeToParamType(entityType_); |
176 | 201 | ||
177 | unsigned int i = 0; | 202 | unsigned int i = 0; |
178 | 203 | ||
179 | // For each parameter, create a new parameter of the correct type. | 204 | // For each parameter, create a new parameter of the correct type. |
@@ -181,3 +206,3 @@ ContentLine::_parse() | |||
181 | QStrListIterator it(l); | 206 | QStrListIterator it(l); |
182 | 207 | ||
183 | for (; it.current(); ++it, i++) { | 208 | for (; it.current(); ++it, i++) { |
@@ -191,13 +216,13 @@ ContentLine::_parse() | |||
191 | } | 216 | } |
192 | 217 | ||
193 | QCString paraName = str.left(split); | 218 | QCString paraName = str.left(split); |
194 | QCString paraValue = str.mid(split + 1); | 219 | QCString paraValue = str.mid(split + 1); |
195 | 220 | ||
196 | QStrList paraValues; | 221 | QStrList paraValues; |
197 | RTokenise(paraValue, ",", paraValues); | 222 | RTokenise(paraValue, ",", paraValues); |
198 | 223 | ||
199 | QStrListIterator it2( paraValues ); | 224 | QStrListIterator it2( paraValues ); |
200 | 225 | ||
201 | for(; it2.current(); ++it2) { | 226 | for(; it2.current(); ++it2) { |
202 | 227 | ||
203 | Param *p = new Param; | 228 | Param *p = new Param; |
@@ -205,3 +230,3 @@ ContentLine::_parse() | |||
205 | p->setValue( *it2 ); | 230 | p->setValue( *it2 ); |
206 | 231 | ||
207 | paramList_.append(p); | 232 | paramList_.append(p); |
@@ -213,7 +238,7 @@ ContentLine::_parse() | |||
213 | valueType_ = EntityTypeToValueType(entityType_); | 238 | valueType_ = EntityTypeToValueType(entityType_); |
214 | 239 | ||
215 | //kdDebug(5710) << "valueType: " << valueType_ << endl; | 240 | //kdDebug(5710) << "valueType: " << valueType_ << endl; |
216 | 241 | ||
217 | switch (valueType_) { | 242 | switch (valueType_) { |
218 | 243 | ||
219 | case ValueSound: value_ = new SoundValue;break; | 244 | case ValueSound: value_ = new SoundValue;break; |
@@ -237,3 +262,3 @@ ContentLine::_parse() | |||
237 | } | 262 | } |
238 | 263 | ||
239 | *value_ = valuePart; | 264 | *value_ = valuePart; |
@@ -248,6 +273,6 @@ ContentLine::_assemble() | |||
248 | QCString line; | 273 | QCString line; |
249 | 274 | ||
250 | if (!group_.isEmpty()) | 275 | if (!group_.isEmpty()) |
251 | line += group_ + '.'; | 276 | line += group_ + '.'; |
252 | 277 | ||
253 | line += name_; | 278 | line += name_; |
@@ -256,6 +281,6 @@ ContentLine::_assemble() | |||
256 | ParamListIterator it(paramList_); | 281 | ParamListIterator it(paramList_); |
257 | 282 | ||
258 | for (; it.current(); ++it) | 283 | for (; it.current(); ++it) |
259 | line += ";" + it.current()->asString(); | 284 | line += ";" + it.current()->asString(); |
260 | 285 | ||
261 | vDebug("Adding value"); | 286 | vDebug("Adding value"); |
@@ -268,3 +293,3 @@ ContentLine::_assemble() | |||
268 | line = line.replace( QRegExp( "\n" ), "\\n" ); | 293 | line = line.replace( QRegExp( "\n" ), "\\n" ); |
269 | 294 | ||
270 | // Fold lines longer than 72 chars | 295 | // Fold lines longer than 72 chars |