summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
index 714396b..2d1596d 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
@@ -363,141 +363,142 @@ QString Genericwrapper::parseGroup( mailimf_group *group )
363 363
364 return result; 364 return result;
365} 365}
366 366
367QString Genericwrapper::parseMailbox( mailimf_mailbox *box ) 367QString Genericwrapper::parseMailbox( mailimf_mailbox *box )
368{ 368{
369 QString result( "" ); 369 QString result( "" );
370 370
371 if ( box->mb_display_name == NULL ) { 371 if ( box->mb_display_name == NULL ) {
372 result.append( box->mb_addr_spec ); 372 result.append( box->mb_addr_spec );
373 } else { 373 } else {
374 result.append( convert_String(box->mb_display_name).latin1() ); 374 result.append( convert_String(box->mb_display_name).latin1() );
375 result.append( " <" ); 375 result.append( " <" );
376 result.append( box->mb_addr_spec ); 376 result.append( box->mb_addr_spec );
377 result.append( ">" ); 377 result.append( ">" );
378 } 378 }
379 379
380 return result; 380 return result;
381} 381}
382 382
383QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list ) 383QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list )
384{ 384{
385 QString result( "" ); 385 QString result( "" );
386 386
387 bool first = true; 387 bool first = true;
388 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) { 388 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) {
389 mailimf_mailbox *box = (mailimf_mailbox *) current->data; 389 mailimf_mailbox *box = (mailimf_mailbox *) current->data;
390 390
391 if ( !first ) { 391 if ( !first ) {
392 result.append( "," ); 392 result.append( "," );
393 } else { 393 } else {
394 first = false; 394 first = false;
395 } 395 }
396 396
397 result.append( parseMailbox( box ) ); 397 result.append( parseMailbox( box ) );
398 } 398 }
399 399
400 return result; 400 return result;
401} 401}
402 402
403encodedString* Genericwrapper::fetchDecodedPart(const RecMail&,const RecPart&part) 403encodedString* Genericwrapper::fetchDecodedPart(const RecMail&,const RecPart&part)
404{ 404{
405 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part.Identifier()); 405 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part.Identifier());
406 if (it==bodyCache.end()) return new encodedString(); 406 if (it==bodyCache.end()) return new encodedString();
407 encodedString*t = decode_String(it.data(),part.Encoding()); 407 encodedString*t = decode_String(it.data(),part.Encoding());
408 return t; 408 return t;
409} 409}
410 410
411encodedString* Genericwrapper::fetchRawPart(const RecMail&mail,const RecPart&part) 411encodedString* Genericwrapper::fetchRawPart(const RecMail&mail,const RecPart&part)
412{ 412{
413 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part.Identifier()); 413 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part.Identifier());
414 if (it==bodyCache.end()) return new encodedString(); 414 if (it==bodyCache.end()) return new encodedString();
415 encodedString*t = it.data(); 415 encodedString*t = it.data();
416 return t; 416 return t;
417} 417}
418 418
419QString Genericwrapper::fetchTextPart(const RecMail&mail,const RecPart&part) 419QString Genericwrapper::fetchTextPart(const RecMail&mail,const RecPart&part)
420{ 420{
421 encodedString*t = fetchDecodedPart(mail,part); 421 encodedString*t = fetchDecodedPart(mail,part);
422 QString text=t->Content(); 422 QString text=t->Content();
423 delete t; 423 delete t;
424 return text; 424 return text;
425} 425}
426 426
427void Genericwrapper::cleanMimeCache() 427void Genericwrapper::cleanMimeCache()
428{ 428{
429 QMap<QString,encodedString*>::Iterator it = bodyCache.begin(); 429 QMap<QString,encodedString*>::Iterator it = bodyCache.begin();
430 for (;it!=bodyCache.end();++it) { 430 for (;it!=bodyCache.end();++it) {
431 encodedString*t = it.data(); 431 encodedString*t = it.data();
432 //it.setValue(0); 432 //it.setValue(0);
433 if (t) delete t; 433 if (t) delete t;
434 } 434 }
435 bodyCache.clear(); 435 bodyCache.clear();
436 qDebug("Genericwrapper: cache cleaned"); 436 qDebug("Genericwrapper: cache cleaned");
437} 437}
438 438
439void Genericwrapper::parseList(QList<RecMail> &target,mailsession*session,const QString&mailbox) 439void Genericwrapper::parseList(QList<RecMail> &target,mailsession*session,const QString&mailbox)
440{ 440{
441 int r; 441 int r;
442 mailmessage_list * env_list = 0; 442 mailmessage_list * env_list = 0;
443 r = mailsession_get_messages_list(session,&env_list); 443 r = mailsession_get_messages_list(session,&env_list);
444 if (r != MAIL_NO_ERROR) { 444 if (r != MAIL_NO_ERROR) {
445 qDebug("Error message list"); 445 qDebug("Error message list");
446 return; 446 return;
447 } 447 }
448 r = mailsession_get_envelopes_list(session, env_list); 448 r = mailsession_get_envelopes_list(session, env_list);
449 if (r != MAIL_NO_ERROR) { 449 if (r != MAIL_NO_ERROR) {
450 qDebug("Error filling message list"); 450 qDebug("Error filling message list");
451 if (env_list) { 451 if (env_list) {
452 mailmessage_list_free(env_list); 452 mailmessage_list_free(env_list);
453 } 453 }
454 return; 454 return;
455 } 455 }
456 mailimf_references * refs; 456 mailimf_references * refs;
457 uint32_t i = 0; 457 uint32_t i = 0;
458 for(; i < carray_count(env_list->msg_tab) ; ++i) { 458 for(; i < carray_count(env_list->msg_tab) ; ++i) {
459 mailmessage * msg; 459 mailmessage * msg;
460 QBitArray mFlags(7); 460 QBitArray mFlags(7);
461 msg = (mailmessage*)carray_get(env_list->msg_tab, i); 461 msg = (mailmessage*)carray_get(env_list->msg_tab, i);
462 if (msg->msg_fields == NULL) { 462 if (msg->msg_fields == NULL) {
463 qDebug("could not fetch envelope of message %i", i); 463 qDebug("could not fetch envelope of message %i", i);
464 continue; 464 continue;
465 } 465 }
466 RecMail * mail = new RecMail(); 466 RecMail * mail = new RecMail();
467 mail->setWrapper(this); 467 mail->setWrapper(this);
468 mail_flags * flag_result = 0; 468 mail_flags * flag_result = 0;
469 r = mailmessage_get_flags(msg,&flag_result); 469 r = mailmessage_get_flags(msg,&flag_result);
470 if (r == MAIL_ERROR_NOT_IMPLEMENTED) { 470 if (r == MAIL_ERROR_NOT_IMPLEMENTED) {
471 mFlags.setBit(FLAG_SEEN); 471 mFlags.setBit(FLAG_SEEN);
472 } 472 }
473 mailimf_single_fields single_fields; 473 mailimf_single_fields single_fields;
474 mailimf_single_fields_init(&single_fields, msg->msg_fields); 474 mailimf_single_fields_init(&single_fields, msg->msg_fields);
475 mail->setMsgsize(msg->msg_size); 475 mail->setMsgsize(msg->msg_size);
476 mail->setFlags(mFlags); 476 mail->setFlags(mFlags);
477 mail->setMbox(mailbox); 477 mail->setMbox(mailbox);
478 mail->setNumber(msg->msg_index); 478 mail->setNumber(msg->msg_index);
479 if (single_fields.fld_subject) 479 if (single_fields.fld_subject)
480 mail->setSubject( convert_String(single_fields.fld_subject->sbj_value)); 480 mail->setSubject( convert_String(single_fields.fld_subject->sbj_value));
481 if (single_fields.fld_from) 481 if (single_fields.fld_from)
482 mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list)); 482 mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list));
483 if (single_fields.fld_to) 483 if (single_fields.fld_to)
484 mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) ); 484 mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) );
485 if (single_fields.fld_cc) 485 if (single_fields.fld_cc)
486 mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); 486 mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) );
487 if (single_fields.fld_bcc) 487 if (single_fields.fld_bcc)
488 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); 488 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) );
489 if (single_fields.fld_orig_date) 489 if (single_fields.fld_orig_date)
490 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); 490 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) );
491 if (single_fields.fld_message_id->mid_value) 491 // crashes when accessing pop3 account
492 mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); 492 // if (single_fields.fld_message_id->mid_value)
493 // mail->setMsgid(QString(single_fields.fld_message_id->mid_value));
493 refs = single_fields.fld_references; 494 refs = single_fields.fld_references;
494 if (refs && refs->mid_list && clist_count(refs->mid_list)) { 495 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
495 char * text = (char*)refs->mid_list->first->data; 496 char * text = (char*)refs->mid_list->first->data;
496 mail->setReplyto(QString(text)); 497 mail->setReplyto(QString(text));
497 } 498 }
498 target.append(mail); 499 target.append(mail);
499 } 500 }
500 if (env_list) { 501 if (env_list) {
501 mailmessage_list_free(env_list); 502 mailmessage_list_free(env_list);
502 } 503 }
503} 504}