author | mickeyl <mickeyl> | 2004-04-04 13:54:40 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-04-04 13:54:40 (UTC) |
commit | 16cf79e90b5217f8d4bfce2a0fa817ae4b73db36 (patch) (unidiff) | |
tree | 0701eae15aa606a0211a2fccfde0eafdac69357c /noncore/net/mail/libmailwrapper/genericwrapper.cpp | |
parent | 8d2d2664e5f544b8292806e617deb7a0e4170dc0 (diff) | |
download | opie-16cf79e90b5217f8d4bfce2a0fa817ae4b73db36.zip opie-16cf79e90b5217f8d4bfce2a0fa817ae4b73db36.tar.gz opie-16cf79e90b5217f8d4bfce2a0fa817ae4b73db36.tar.bz2 |
convert to Opie Debugging Framework
Diffstat (limited to 'noncore/net/mail/libmailwrapper/genericwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/mail/libmailwrapper/genericwrapper.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp index 0c68280..fae4c99 100644 --- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp | |||
@@ -42,435 +42,435 @@ void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime) | |||
42 | target->setSubtype("plain"); | 42 | target->setSubtype("plain"); |
43 | } else { | 43 | } else { |
44 | target->setSubtype(type->ct_subtype); | 44 | target->setSubtype(type->ct_subtype); |
45 | switch(type->ct_type->tp_data.tp_discrete_type->dt_type) { | 45 | switch(type->ct_type->tp_data.tp_discrete_type->dt_type) { |
46 | case MAILMIME_DISCRETE_TYPE_TEXT: | 46 | case MAILMIME_DISCRETE_TYPE_TEXT: |
47 | target->setType("text"); | 47 | target->setType("text"); |
48 | break; | 48 | break; |
49 | case MAILMIME_DISCRETE_TYPE_IMAGE: | 49 | case MAILMIME_DISCRETE_TYPE_IMAGE: |
50 | target->setType("image"); | 50 | target->setType("image"); |
51 | break; | 51 | break; |
52 | case MAILMIME_DISCRETE_TYPE_AUDIO: | 52 | case MAILMIME_DISCRETE_TYPE_AUDIO: |
53 | target->setType("audio"); | 53 | target->setType("audio"); |
54 | break; | 54 | break; |
55 | case MAILMIME_DISCRETE_TYPE_VIDEO: | 55 | case MAILMIME_DISCRETE_TYPE_VIDEO: |
56 | target->setType("video"); | 56 | target->setType("video"); |
57 | break; | 57 | break; |
58 | case MAILMIME_DISCRETE_TYPE_APPLICATION: | 58 | case MAILMIME_DISCRETE_TYPE_APPLICATION: |
59 | target->setType("application"); | 59 | target->setType("application"); |
60 | break; | 60 | break; |
61 | case MAILMIME_DISCRETE_TYPE_EXTENSION: | 61 | case MAILMIME_DISCRETE_TYPE_EXTENSION: |
62 | default: | 62 | default: |
63 | if (type->ct_type->tp_data.tp_discrete_type->dt_extension) { | 63 | if (type->ct_type->tp_data.tp_discrete_type->dt_extension) { |
64 | target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension); | 64 | target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension); |
65 | } | 65 | } |
66 | break; | 66 | break; |
67 | } | 67 | } |
68 | if (type->ct_parameters) { | 68 | if (type->ct_parameters) { |
69 | fillParameters(target,type->ct_parameters); | 69 | fillParameters(target,type->ct_parameters); |
70 | } | 70 | } |
71 | } | 71 | } |
72 | if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) { | 72 | if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) { |
73 | for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) { | 73 | for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) { |
74 | field = (mailmime_field*)current->data; | 74 | field = (mailmime_field*)current->data; |
75 | switch(field->fld_type) { | 75 | switch(field->fld_type) { |
76 | case MAILMIME_FIELD_TRANSFER_ENCODING: | 76 | case MAILMIME_FIELD_TRANSFER_ENCODING: |
77 | target->setEncoding(getencoding(field->fld_data.fld_encoding)); | 77 | target->setEncoding(getencoding(field->fld_data.fld_encoding)); |
78 | break; | 78 | break; |
79 | case MAILMIME_FIELD_ID: | 79 | case MAILMIME_FIELD_ID: |
80 | target->setIdentifier(field->fld_data.fld_id); | 80 | target->setIdentifier(field->fld_data.fld_id); |
81 | break; | 81 | break; |
82 | case MAILMIME_FIELD_DESCRIPTION: | 82 | case MAILMIME_FIELD_DESCRIPTION: |
83 | target->setDescription(field->fld_data.fld_description); | 83 | target->setDescription(field->fld_data.fld_description); |
84 | break; | 84 | break; |
85 | default: | 85 | default: |
86 | break; | 86 | break; |
87 | } | 87 | } |
88 | } | 88 | } |
89 | } | 89 | } |
90 | } | 90 | } |
91 | 91 | ||
92 | void Genericwrapper::fillParameters(RecPartP&target,clist*parameters) | 92 | void Genericwrapper::fillParameters(RecPartP&target,clist*parameters) |
93 | { | 93 | { |
94 | if (!parameters) {return;} | 94 | if (!parameters) {return;} |
95 | clistcell*current=0; | 95 | clistcell*current=0; |
96 | mailmime_parameter*param; | 96 | mailmime_parameter*param; |
97 | for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { | 97 | for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { |
98 | param = (mailmime_parameter*)current->data; | 98 | param = (mailmime_parameter*)current->data; |
99 | if (param) { | 99 | if (param) { |
100 | target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); | 100 | target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); |
101 | } | 101 | } |
102 | } | 102 | } |
103 | } | 103 | } |
104 | 104 | ||
105 | QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) | 105 | QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) |
106 | { | 106 | { |
107 | QString enc="7bit"; | 107 | QString enc="7bit"; |
108 | if (!aEnc) return enc; | 108 | if (!aEnc) return enc; |
109 | switch(aEnc->enc_type) { | 109 | switch(aEnc->enc_type) { |
110 | case MAILMIME_MECHANISM_7BIT: | 110 | case MAILMIME_MECHANISM_7BIT: |
111 | enc = "7bit"; | 111 | enc = "7bit"; |
112 | break; | 112 | break; |
113 | case MAILMIME_MECHANISM_8BIT: | 113 | case MAILMIME_MECHANISM_8BIT: |
114 | enc = "8bit"; | 114 | enc = "8bit"; |
115 | break; | 115 | break; |
116 | case MAILMIME_MECHANISM_BINARY: | 116 | case MAILMIME_MECHANISM_BINARY: |
117 | enc = "binary"; | 117 | enc = "binary"; |
118 | break; | 118 | break; |
119 | case MAILMIME_MECHANISM_QUOTED_PRINTABLE: | 119 | case MAILMIME_MECHANISM_QUOTED_PRINTABLE: |
120 | enc = "quoted-printable"; | 120 | enc = "quoted-printable"; |
121 | break; | 121 | break; |
122 | case MAILMIME_MECHANISM_BASE64: | 122 | case MAILMIME_MECHANISM_BASE64: |
123 | enc = "base64"; | 123 | enc = "base64"; |
124 | break; | 124 | break; |
125 | case MAILMIME_MECHANISM_TOKEN: | 125 | case MAILMIME_MECHANISM_TOKEN: |
126 | default: | 126 | default: |
127 | if (aEnc->enc_token) { | 127 | if (aEnc->enc_token) { |
128 | enc = QString(aEnc->enc_token); | 128 | enc = QString(aEnc->enc_token); |
129 | } | 129 | } |
130 | break; | 130 | break; |
131 | } | 131 | } |
132 | return enc; | 132 | return enc; |
133 | } | 133 | } |
134 | 134 | ||
135 | void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count) | 135 | void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count) |
136 | { | 136 | { |
137 | if (current_rec >= 10) { | 137 | if (current_rec >= 10) { |
138 | qDebug("too deep recursion!"); | 138 | odebug << "too deep recursion!" << oendl; |
139 | } | 139 | } |
140 | if (!message || !mime) { | 140 | if (!message || !mime) { |
141 | return; | 141 | return; |
142 | } | 142 | } |
143 | int r; | 143 | int r; |
144 | char*data = 0; | 144 | char*data = 0; |
145 | size_t len; | 145 | size_t len; |
146 | clistiter * cur = 0; | 146 | clistiter * cur = 0; |
147 | QString b; | 147 | QString b; |
148 | RecPartP part = new RecPart(); | 148 | RecPartP part = new RecPart(); |
149 | 149 | ||
150 | switch (mime->mm_type) { | 150 | switch (mime->mm_type) { |
151 | case MAILMIME_SINGLE: | 151 | case MAILMIME_SINGLE: |
152 | { | 152 | { |
153 | QValueList<int>countlist = recList; | 153 | QValueList<int>countlist = recList; |
154 | countlist.append(current_count); | 154 | countlist.append(current_count); |
155 | r = mailmessage_fetch_section(message,mime,&data,&len); | 155 | r = mailmessage_fetch_section(message,mime,&data,&len); |
156 | part->setSize(len); | 156 | part->setSize(len); |
157 | part->setPositionlist(countlist); | 157 | part->setPositionlist(countlist); |
158 | b = gen_attachment_id(); | 158 | b = gen_attachment_id(); |
159 | part->setIdentifier(b); | 159 | part->setIdentifier(b); |
160 | fillSingleBody(part,message,mime); | 160 | fillSingleBody(part,message,mime); |
161 | if (part->Type()=="text" && target->Bodytext().isNull()) { | 161 | if (part->Type()=="text" && target->Bodytext().isNull()) { |
162 | encodedString*rs = new encodedString(); | 162 | encodedString*rs = new encodedString(); |
163 | rs->setContent(data,len); | 163 | rs->setContent(data,len); |
164 | encodedString*res = decode_String(rs,part->Encoding()); | 164 | encodedString*res = decode_String(rs,part->Encoding()); |
165 | if (countlist.count()>2) { | 165 | if (countlist.count()>2) { |
166 | bodyCache[b]=rs; | 166 | bodyCache[b]=rs; |
167 | target->addPart(part); | 167 | target->addPart(part); |
168 | } else { | 168 | } else { |
169 | delete rs; | 169 | delete rs; |
170 | } | 170 | } |
171 | b = QString(res->Content()); | 171 | b = QString(res->Content()); |
172 | delete res; | 172 | delete res; |
173 | target->setBodytext(b); | 173 | target->setBodytext(b); |
174 | target->setDescription(part); | 174 | target->setDescription(part); |
175 | } else { | 175 | } else { |
176 | bodyCache[b]=new encodedString(data,len); | 176 | bodyCache[b]=new encodedString(data,len); |
177 | target->addPart(part); | 177 | target->addPart(part); |
178 | } | 178 | } |
179 | } | 179 | } |
180 | break; | 180 | break; |
181 | case MAILMIME_MULTIPLE: | 181 | case MAILMIME_MULTIPLE: |
182 | { | 182 | { |
183 | unsigned int ccount = 1; | 183 | unsigned int ccount = 1; |
184 | mailmime*cbody=0; | 184 | mailmime*cbody=0; |
185 | QValueList<int>countlist = recList; | 185 | QValueList<int>countlist = recList; |
186 | for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { | 186 | for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { |
187 | cbody = (mailmime*)clist_content(cur); | 187 | cbody = (mailmime*)clist_content(cur); |
188 | if (cbody->mm_type==MAILMIME_MULTIPLE) { | 188 | if (cbody->mm_type==MAILMIME_MULTIPLE) { |
189 | RecPartP targetPart = new RecPart(); | 189 | RecPartP targetPart = new RecPart(); |
190 | targetPart->setType("multipart"); | 190 | targetPart->setType("multipart"); |
191 | countlist.append(current_count); | 191 | countlist.append(current_count); |
192 | targetPart->setPositionlist(countlist); | 192 | targetPart->setPositionlist(countlist); |
193 | target->addPart(targetPart); | 193 | target->addPart(targetPart); |
194 | } | 194 | } |
195 | traverseBody(target,message, cbody,countlist,current_rec+1,ccount); | 195 | traverseBody(target,message, cbody,countlist,current_rec+1,ccount); |
196 | if (cbody->mm_type==MAILMIME_MULTIPLE) { | 196 | if (cbody->mm_type==MAILMIME_MULTIPLE) { |
197 | countlist = recList; | 197 | countlist = recList; |
198 | } | 198 | } |
199 | ++ccount; | 199 | ++ccount; |
200 | } | 200 | } |
201 | } | 201 | } |
202 | break; | 202 | break; |
203 | case MAILMIME_MESSAGE: | 203 | case MAILMIME_MESSAGE: |
204 | { | 204 | { |
205 | QValueList<int>countlist = recList; | 205 | QValueList<int>countlist = recList; |
206 | countlist.append(current_count); | 206 | countlist.append(current_count); |
207 | /* the own header is always at recursion 0 - we don't need that */ | 207 | /* the own header is always at recursion 0 - we don't need that */ |
208 | if (current_rec > 0) { | 208 | if (current_rec > 0) { |
209 | part->setPositionlist(countlist); | 209 | part->setPositionlist(countlist); |
210 | r = mailmessage_fetch_section(message,mime,&data,&len); | 210 | r = mailmessage_fetch_section(message,mime,&data,&len); |
211 | part->setSize(len); | 211 | part->setSize(len); |
212 | part->setPositionlist(countlist); | 212 | part->setPositionlist(countlist); |
213 | b = gen_attachment_id(); | 213 | b = gen_attachment_id(); |
214 | part->setIdentifier(b); | 214 | part->setIdentifier(b); |
215 | part->setType("message"); | 215 | part->setType("message"); |
216 | part->setSubtype("rfc822"); | 216 | part->setSubtype("rfc822"); |
217 | bodyCache[b]=new encodedString(data,len); | 217 | bodyCache[b]=new encodedString(data,len); |
218 | target->addPart(part); | 218 | target->addPart(part); |
219 | } | 219 | } |
220 | if (mime->mm_data.mm_message.mm_msg_mime != NULL) { | 220 | if (mime->mm_data.mm_message.mm_msg_mime != NULL) { |
221 | traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); | 221 | traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); |
222 | } | 222 | } |
223 | } | 223 | } |
224 | break; | 224 | break; |
225 | } | 225 | } |
226 | } | 226 | } |
227 | 227 | ||
228 | RecBodyP Genericwrapper::parseMail( mailmessage * msg ) | 228 | RecBodyP Genericwrapper::parseMail( mailmessage * msg ) |
229 | { | 229 | { |
230 | int err = MAILIMF_NO_ERROR; | 230 | int err = MAILIMF_NO_ERROR; |
231 | mailmime_single_fields fields; | 231 | mailmime_single_fields fields; |
232 | /* is bound to msg and will be freed there */ | 232 | /* is bound to msg and will be freed there */ |
233 | mailmime * mime=0; | 233 | mailmime * mime=0; |
234 | RecBodyP body = new RecBody(); | 234 | RecBodyP body = new RecBody(); |
235 | memset(&fields, 0, sizeof(struct mailmime_single_fields)); | 235 | memset(&fields, 0, sizeof(struct mailmime_single_fields)); |
236 | err = mailmessage_get_bodystructure(msg,&mime); | 236 | err = mailmessage_get_bodystructure(msg,&mime); |
237 | QValueList<int>recList; | 237 | QValueList<int>recList; |
238 | traverseBody(body,msg,mime,recList); | 238 | traverseBody(body,msg,mime,recList); |
239 | return body; | 239 | return body; |
240 | } | 240 | } |
241 | 241 | ||
242 | QString Genericwrapper::parseDateTime( mailimf_date_time *date ) | 242 | QString Genericwrapper::parseDateTime( mailimf_date_time *date ) |
243 | { | 243 | { |
244 | char tmp[23]; | 244 | char tmp[23]; |
245 | 245 | ||
246 | snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", | 246 | snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", |
247 | date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); | 247 | date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); |
248 | 248 | ||
249 | return QString( tmp ); | 249 | return QString( tmp ); |
250 | } | 250 | } |
251 | 251 | ||
252 | QString Genericwrapper::parseAddressList( mailimf_address_list *list ) | 252 | QString Genericwrapper::parseAddressList( mailimf_address_list *list ) |
253 | { | 253 | { |
254 | QString result( "" ); | 254 | QString result( "" ); |
255 | 255 | ||
256 | bool first = true; | 256 | bool first = true; |
257 | if (list == 0) return result; | 257 | if (list == 0) return result; |
258 | for ( clistiter *current = clist_begin( list->ad_list ); current != NULL; current = current->next ) { | 258 | for ( clistiter *current = clist_begin( list->ad_list ); current != NULL; current = current->next ) { |
259 | mailimf_address *addr = (mailimf_address *) current->data; | 259 | mailimf_address *addr = (mailimf_address *) current->data; |
260 | 260 | ||
261 | if ( !first ) { | 261 | if ( !first ) { |
262 | result.append( "," ); | 262 | result.append( "," ); |
263 | } else { | 263 | } else { |
264 | first = false; | 264 | first = false; |
265 | } | 265 | } |
266 | 266 | ||
267 | switch ( addr->ad_type ) { | 267 | switch ( addr->ad_type ) { |
268 | case MAILIMF_ADDRESS_MAILBOX: | 268 | case MAILIMF_ADDRESS_MAILBOX: |
269 | result.append( parseMailbox( addr->ad_data.ad_mailbox ) ); | 269 | result.append( parseMailbox( addr->ad_data.ad_mailbox ) ); |
270 | break; | 270 | break; |
271 | case MAILIMF_ADDRESS_GROUP: | 271 | case MAILIMF_ADDRESS_GROUP: |
272 | result.append( parseGroup( addr->ad_data.ad_group ) ); | 272 | result.append( parseGroup( addr->ad_data.ad_group ) ); |
273 | break; | 273 | break; |
274 | default: | 274 | default: |
275 | qDebug( "Generic: unkown mailimf address type" ); | 275 | odebug << "Generic: unkown mailimf address type" << oendl; |
276 | break; | 276 | break; |
277 | } | 277 | } |
278 | } | 278 | } |
279 | 279 | ||
280 | return result; | 280 | return result; |
281 | } | 281 | } |
282 | 282 | ||
283 | QString Genericwrapper::parseGroup( mailimf_group *group ) | 283 | QString Genericwrapper::parseGroup( mailimf_group *group ) |
284 | { | 284 | { |
285 | QString result( "" ); | 285 | QString result( "" ); |
286 | 286 | ||
287 | result.append( group->grp_display_name ); | 287 | result.append( group->grp_display_name ); |
288 | result.append( ": " ); | 288 | result.append( ": " ); |
289 | 289 | ||
290 | if ( group->grp_mb_list != NULL ) { | 290 | if ( group->grp_mb_list != NULL ) { |
291 | result.append( parseMailboxList( group->grp_mb_list ) ); | 291 | result.append( parseMailboxList( group->grp_mb_list ) ); |
292 | } | 292 | } |
293 | 293 | ||
294 | result.append( ";" ); | 294 | result.append( ";" ); |
295 | 295 | ||
296 | return result; | 296 | return result; |
297 | } | 297 | } |
298 | 298 | ||
299 | QString Genericwrapper::parseMailbox( mailimf_mailbox *box ) | 299 | QString Genericwrapper::parseMailbox( mailimf_mailbox *box ) |
300 | { | 300 | { |
301 | QString result( "" ); | 301 | QString result( "" ); |
302 | 302 | ||
303 | if ( box->mb_display_name == NULL ) { | 303 | if ( box->mb_display_name == NULL ) { |
304 | result.append( box->mb_addr_spec ); | 304 | result.append( box->mb_addr_spec ); |
305 | } else { | 305 | } else { |
306 | result.append( convert_String(box->mb_display_name).latin1() ); | 306 | result.append( convert_String(box->mb_display_name).latin1() ); |
307 | result.append( " <" ); | 307 | result.append( " <" ); |
308 | result.append( box->mb_addr_spec ); | 308 | result.append( box->mb_addr_spec ); |
309 | result.append( ">" ); | 309 | result.append( ">" ); |
310 | } | 310 | } |
311 | 311 | ||
312 | return result; | 312 | return result; |
313 | } | 313 | } |
314 | 314 | ||
315 | QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list ) | 315 | QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list ) |
316 | { | 316 | { |
317 | QString result( "" ); | 317 | QString result( "" ); |
318 | 318 | ||
319 | bool first = true; | 319 | bool first = true; |
320 | for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) { | 320 | for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) { |
321 | mailimf_mailbox *box = (mailimf_mailbox *) current->data; | 321 | mailimf_mailbox *box = (mailimf_mailbox *) current->data; |
322 | 322 | ||
323 | if ( !first ) { | 323 | if ( !first ) { |
324 | result.append( "," ); | 324 | result.append( "," ); |
325 | } else { | 325 | } else { |
326 | first = false; | 326 | first = false; |
327 | } | 327 | } |
328 | 328 | ||
329 | result.append( parseMailbox( box ) ); | 329 | result.append( parseMailbox( box ) ); |
330 | } | 330 | } |
331 | 331 | ||
332 | return result; | 332 | return result; |
333 | } | 333 | } |
334 | 334 | ||
335 | encodedString* Genericwrapper::fetchDecodedPart(const RecMailP&,const RecPartP&part) | 335 | encodedString* Genericwrapper::fetchDecodedPart(const RecMailP&,const RecPartP&part) |
336 | { | 336 | { |
337 | QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier()); | 337 | QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier()); |
338 | if (it==bodyCache.end()) return new encodedString(); | 338 | if (it==bodyCache.end()) return new encodedString(); |
339 | encodedString*t = decode_String(it.data(),part->Encoding()); | 339 | encodedString*t = decode_String(it.data(),part->Encoding()); |
340 | return t; | 340 | return t; |
341 | } | 341 | } |
342 | 342 | ||
343 | encodedString* Genericwrapper::fetchRawPart(const RecMailP&,const RecPartP&part) | 343 | encodedString* Genericwrapper::fetchRawPart(const RecMailP&,const RecPartP&part) |
344 | { | 344 | { |
345 | QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier()); | 345 | QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier()); |
346 | if (it==bodyCache.end()) return new encodedString(); | 346 | if (it==bodyCache.end()) return new encodedString(); |
347 | encodedString*t = it.data(); | 347 | encodedString*t = it.data(); |
348 | return t; | 348 | return t; |
349 | } | 349 | } |
350 | 350 | ||
351 | QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part) | 351 | QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part) |
352 | { | 352 | { |
353 | encodedString*t = fetchDecodedPart(mail,part); | 353 | encodedString*t = fetchDecodedPart(mail,part); |
354 | QString text=t->Content(); | 354 | QString text=t->Content(); |
355 | delete t; | 355 | delete t; |
356 | return text; | 356 | return text; |
357 | } | 357 | } |
358 | 358 | ||
359 | void Genericwrapper::cleanMimeCache() | 359 | void Genericwrapper::cleanMimeCache() |
360 | { | 360 | { |
361 | QMap<QString,encodedString*>::Iterator it = bodyCache.begin(); | 361 | QMap<QString,encodedString*>::Iterator it = bodyCache.begin(); |
362 | for (;it!=bodyCache.end();++it) { | 362 | for (;it!=bodyCache.end();++it) { |
363 | encodedString*t = it.data(); | 363 | encodedString*t = it.data(); |
364 | //it.setValue(0); | 364 | //it.setValue(0); |
365 | if (t) delete t; | 365 | if (t) delete t; |
366 | } | 366 | } |
367 | bodyCache.clear(); | 367 | bodyCache.clear(); |
368 | qDebug("Genericwrapper: cache cleaned"); | 368 | odebug << "Genericwrapper: cache cleaned" << oendl; |
369 | } | 369 | } |
370 | 370 | ||
371 | QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies) | 371 | QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies) |
372 | { | 372 | { |
373 | QStringList res; | 373 | QStringList res; |
374 | if (!in_replies || !in_replies->mid_list) return res; | 374 | if (!in_replies || !in_replies->mid_list) return res; |
375 | clistiter * current = 0; | 375 | clistiter * current = 0; |
376 | for ( current = clist_begin( in_replies->mid_list ); current != NULL; current = current->next ) { | 376 | for ( current = clist_begin( in_replies->mid_list ); current != NULL; current = current->next ) { |
377 | QString h((char*)current->data); | 377 | QString h((char*)current->data); |
378 | while (h.length()>0 && h[0]=='<') { | 378 | while (h.length()>0 && h[0]=='<') { |
379 | h.remove(0,1); | 379 | h.remove(0,1); |
380 | } | 380 | } |
381 | while (h.length()>0 && h[h.length()-1]=='>') { | 381 | while (h.length()>0 && h[h.length()-1]=='>') { |
382 | h.remove(h.length()-1,1); | 382 | h.remove(h.length()-1,1); |
383 | } | 383 | } |
384 | if (h.length()>0) { | 384 | if (h.length()>0) { |
385 | res.append(h); | 385 | res.append(h); |
386 | } | 386 | } |
387 | } | 387 | } |
388 | return res; | 388 | return res; |
389 | } | 389 | } |
390 | 390 | ||
391 | void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to) | 391 | void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to) |
392 | { | 392 | { |
393 | int r; | 393 | int r; |
394 | mailmessage_list * env_list = 0; | 394 | mailmessage_list * env_list = 0; |
395 | r = mailsession_get_messages_list(session,&env_list); | 395 | r = mailsession_get_messages_list(session,&env_list); |
396 | if (r != MAIL_NO_ERROR) { | 396 | if (r != MAIL_NO_ERROR) { |
397 | qDebug("Error message list"); | 397 | odebug << "Error message list" << oendl; |
398 | return; | 398 | return; |
399 | } | 399 | } |
400 | r = mailsession_get_envelopes_list(session, env_list); | 400 | r = mailsession_get_envelopes_list(session, env_list); |
401 | if (r != MAIL_NO_ERROR) { | 401 | if (r != MAIL_NO_ERROR) { |
402 | qDebug("Error filling message list"); | 402 | odebug << "Error filling message list" << oendl; |
403 | if (env_list) { | 403 | if (env_list) { |
404 | mailmessage_list_free(env_list); | 404 | mailmessage_list_free(env_list); |
405 | } | 405 | } |
406 | return; | 406 | return; |
407 | } | 407 | } |
408 | mailimf_references * refs = 0; | 408 | mailimf_references * refs = 0; |
409 | mailimf_in_reply_to * in_replies = 0; | 409 | mailimf_in_reply_to * in_replies = 0; |
410 | uint32_t i = 0; | 410 | uint32_t i = 0; |
411 | for(; i < carray_count(env_list->msg_tab) ; ++i) { | 411 | for(; i < carray_count(env_list->msg_tab) ; ++i) { |
412 | mailmessage * msg; | 412 | mailmessage * msg; |
413 | QBitArray mFlags(7); | 413 | QBitArray mFlags(7); |
414 | msg = (mailmessage*)carray_get(env_list->msg_tab, i); | 414 | msg = (mailmessage*)carray_get(env_list->msg_tab, i); |
415 | if (msg->msg_fields == NULL) { | 415 | if (msg->msg_fields == NULL) { |
416 | //qDebug("could not fetch envelope of message %i", i); | 416 | //odebug << "could not fetch envelope of message " << i << "" << oendl; |
417 | continue; | 417 | continue; |
418 | } | 418 | } |
419 | RecMailP mail = new RecMail(); | 419 | RecMailP mail = new RecMail(); |
420 | mail->setWrapper(this); | 420 | mail->setWrapper(this); |
421 | mail_flags * flag_result = 0; | 421 | mail_flags * flag_result = 0; |
422 | r = mailmessage_get_flags(msg,&flag_result); | 422 | r = mailmessage_get_flags(msg,&flag_result); |
423 | if (r == MAIL_ERROR_NOT_IMPLEMENTED) { | 423 | if (r == MAIL_ERROR_NOT_IMPLEMENTED) { |
424 | mFlags.setBit(FLAG_SEEN); | 424 | mFlags.setBit(FLAG_SEEN); |
425 | } | 425 | } |
426 | mailimf_single_fields single_fields; | 426 | mailimf_single_fields single_fields; |
427 | mailimf_single_fields_init(&single_fields, msg->msg_fields); | 427 | mailimf_single_fields_init(&single_fields, msg->msg_fields); |
428 | mail->setMsgsize(msg->msg_size); | 428 | mail->setMsgsize(msg->msg_size); |
429 | mail->setFlags(mFlags); | 429 | mail->setFlags(mFlags); |
430 | mail->setMbox(mailbox); | 430 | mail->setMbox(mailbox); |
431 | mail->setNumber(msg->msg_index); | 431 | mail->setNumber(msg->msg_index); |
432 | if (single_fields.fld_subject) | 432 | if (single_fields.fld_subject) |
433 | mail->setSubject( convert_String(single_fields.fld_subject->sbj_value)); | 433 | mail->setSubject( convert_String(single_fields.fld_subject->sbj_value)); |
434 | if (single_fields.fld_from) | 434 | if (single_fields.fld_from) |
435 | mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list)); | 435 | mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list)); |
436 | if (!mbox_as_to) { | 436 | if (!mbox_as_to) { |
437 | if (single_fields.fld_to) | 437 | if (single_fields.fld_to) |
438 | mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) ); | 438 | mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) ); |
439 | } else { | 439 | } else { |
440 | mail->setTo(mailbox); | 440 | mail->setTo(mailbox); |
441 | } | 441 | } |
442 | if (single_fields.fld_cc) | 442 | if (single_fields.fld_cc) |
443 | mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); | 443 | mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); |
444 | if (single_fields.fld_bcc) | 444 | if (single_fields.fld_bcc) |
445 | mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); | 445 | mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); |
446 | if (single_fields.fld_orig_date) | 446 | if (single_fields.fld_orig_date) |
447 | mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); | 447 | mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); |
448 | // crashes when accessing pop3 account? | 448 | // crashes when accessing pop3 account? |
449 | if (single_fields.fld_message_id->mid_value) { | 449 | if (single_fields.fld_message_id->mid_value) { |
450 | mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); | 450 | mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); |
451 | qDebug("Msgid == %s",mail->Msgid().latin1()); | 451 | odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl; |
452 | } | 452 | } |
453 | 453 | ||
454 | if (single_fields.fld_reply_to) { | 454 | if (single_fields.fld_reply_to) { |
455 | QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list); | 455 | QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list); |
456 | if (t.count()>0) { | 456 | if (t.count()>0) { |
457 | mail->setReplyto(t[0]); | 457 | mail->setReplyto(t[0]); |
458 | } | 458 | } |
459 | } | 459 | } |
460 | #if 0 | 460 | #if 0 |
461 | refs = single_fields.fld_references; | 461 | refs = single_fields.fld_references; |
462 | if (refs && refs->mid_list && clist_count(refs->mid_list)) { | 462 | if (refs && refs->mid_list && clist_count(refs->mid_list)) { |
463 | char * text = (char*)refs->mid_list->first->data; | 463 | char * text = (char*)refs->mid_list->first->data; |
464 | mail->setReplyto(QString(text)); | 464 | mail->setReplyto(QString(text)); |
465 | } | 465 | } |
466 | #endif | 466 | #endif |
467 | if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list && | 467 | if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list && |
468 | clist_count(single_fields.fld_in_reply_to->mid_list)) { | 468 | clist_count(single_fields.fld_in_reply_to->mid_list)) { |
469 | mail->setInreply(parseInreplies(single_fields.fld_in_reply_to)); | 469 | mail->setInreply(parseInreplies(single_fields.fld_in_reply_to)); |
470 | } | 470 | } |
471 | target.append(mail); | 471 | target.append(mail); |
472 | } | 472 | } |
473 | if (env_list) { | 473 | if (env_list) { |
474 | mailmessage_list_free(env_list); | 474 | mailmessage_list_free(env_list); |
475 | } | 475 | } |
476 | } | 476 | } |