summaryrefslogtreecommitdiff
path: root/noncore/net/mail/genericwrapper.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/genericwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/genericwrapper.cpp69
1 files changed, 67 insertions, 2 deletions
diff --git a/noncore/net/mail/genericwrapper.cpp b/noncore/net/mail/genericwrapper.cpp
index c1b6e48..bef6ae5 100644
--- a/noncore/net/mail/genericwrapper.cpp
+++ b/noncore/net/mail/genericwrapper.cpp
@@ -1,5 +1,4 @@
1#include "genericwrapper.h" 1#include "genericwrapper.h"
2#include <libetpan/mailmime.h> 2#include <libetpan/libetpan.h>
3#include <libetpan/data_message_driver.h>
4#include "mailtypes.h" 3#include "mailtypes.h"
5 4
@@ -392,2 +391,68 @@ void Genericwrapper::cleanMimeCache()
392 qDebug("Genericwrapper: cache cleaned"); 391 qDebug("Genericwrapper: cache cleaned");
393} 392}
393
394void Genericwrapper::parseList(QList<RecMail> &target,mailsession*session,const QString&mailbox)
395{
396 int r;
397 mailmessage_list * env_list = 0;
398 r = mailsession_get_messages_list(session,&env_list);
399 if (r != MAIL_NO_ERROR) {
400 qDebug("Error message list");
401 return;
402 }
403 r = mailsession_get_envelopes_list(session, env_list);
404 if (r != MAIL_NO_ERROR) {
405 qDebug("Error filling message list");
406 if (env_list) {
407 mailmessage_list_free(env_list);
408 }
409 return;
410 }
411 mailimf_references * refs;
412 uint32_t i = 0;
413 for(; i < carray_count(env_list->msg_tab) ; ++i) {
414 mailmessage * msg;
415 QBitArray mFlags(7);
416 msg = (mailmessage*)carray_get(env_list->msg_tab, i);
417 if (msg->msg_fields == NULL) {
418 qDebug("could not fetch envelope of message %i", i);
419 continue;
420 }
421 RecMail * mail = new RecMail();
422 mail->setWrapper(this);
423 mail_flags * flag_result = 0;
424 r = mailmessage_get_flags(msg,&flag_result);
425 if (r == MAIL_ERROR_NOT_IMPLEMENTED) {
426 mFlags.setBit(FLAG_SEEN);
427 }
428 mailimf_single_fields single_fields;
429 mailimf_single_fields_init(&single_fields, msg->msg_fields);
430 mail->setMsgsize(msg->msg_size);
431 mail->setFlags(mFlags);
432 mail->setMbox(mailbox);
433 mail->setNumber(i+1);
434 if (single_fields.fld_subject)
435 mail->setSubject( convert_String(single_fields.fld_subject->sbj_value));
436 if (single_fields.fld_from)
437 mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list));
438 if (single_fields.fld_to)
439 mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) );
440 if (single_fields.fld_cc)
441 mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) );
442 if (single_fields.fld_bcc)
443 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) );
444 if (single_fields.fld_orig_date)
445 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) );
446 if (single_fields.fld_message_id->mid_value)
447 mail->setMsgid(QString(single_fields.fld_message_id->mid_value));
448 refs = single_fields.fld_references;
449 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
450 char * text = (char*)refs->mid_list->first->data;
451 mail->setReplyto(QString(text));
452 }
453 target.append(mail);
454 }
455 if (env_list) {
456 mailmessage_list_free(env_list);
457 }
458}