summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/genericwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/genericwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/genericwrapper.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/kmicromail/libmailwrapper/genericwrapper.cpp b/kmicromail/libmailwrapper/genericwrapper.cpp
index f804e44..1fd4bb1 100644
--- a/kmicromail/libmailwrapper/genericwrapper.cpp
+++ b/kmicromail/libmailwrapper/genericwrapper.cpp
@@ -1,24 +1,25 @@
1// CHANGED 2004-09-31 Lutz Rogowski
1#include "genericwrapper.h" 2#include "genericwrapper.h"
2#include <libetpan/libetpan.h> 3#include <libetpan/libetpan.h>
3#include "mailtypes.h" 4#include "mailtypes.h"
4 5
5 6
6 7
7using namespace Opie::Core; 8using namespace Opie::Core;
8Genericwrapper::Genericwrapper() 9Genericwrapper::Genericwrapper()
9 : AbstractMail() 10 : AbstractMail()
10{ 11{
11 bodyCache.clear(); 12 bodyCache.clear();
12 m_storage = 0; 13 m_storage = 0;
13 m_folder = 0; 14 m_folder = 0;
14} 15}
15 16
16Genericwrapper::~Genericwrapper() 17Genericwrapper::~Genericwrapper()
17{ 18{
18 if (m_folder) { 19 if (m_folder) {
19 mailfolder_free(m_folder); 20 mailfolder_free(m_folder);
20 } 21 }
21 if (m_storage) { 22 if (m_storage) {
22 mailstorage_free(m_storage); 23 mailstorage_free(m_storage);
23 } 24 }
24 cleanMimeCache(); 25 cleanMimeCache();
@@ -371,49 +372,49 @@ void Genericwrapper::cleanMimeCache()
371 bodyCache.clear(); 372 bodyCache.clear();
372 ; // odebug << "Genericwrapper: cache cleaned" << oendl; 373 ; // odebug << "Genericwrapper: cache cleaned" << oendl;
373} 374}
374 375
375QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies) 376QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies)
376{ 377{
377 QStringList res; 378 QStringList res;
378 if (!in_replies || !in_replies->mid_list) return res; 379 if (!in_replies || !in_replies->mid_list) return res;
379 clistiter * current = 0; 380 clistiter * current = 0;
380 for ( current = clist_begin( in_replies->mid_list ); current != NULL; current = current->next ) { 381 for ( current = clist_begin( in_replies->mid_list ); current != NULL; current = current->next ) {
381 QString h((char*)current->data); 382 QString h((char*)current->data);
382 while (h.length()>0 && h[0]=='<') { 383 while (h.length()>0 && h[0]=='<') {
383 h.remove(0,1); 384 h.remove(0,1);
384 } 385 }
385 while (h.length()>0 && h[h.length()-1]=='>') { 386 while (h.length()>0 && h[h.length()-1]=='>') {
386 h.remove(h.length()-1,1); 387 h.remove(h.length()-1,1);
387 } 388 }
388 if (h.length()>0) { 389 if (h.length()>0) {
389 res.append(h); 390 res.append(h);
390 } 391 }
391 } 392 }
392 return res; 393 return res;
393} 394}
394 395
395void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to) 396void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to, int maxSizeInKb)
396{ 397{
397 int r; 398 int r;
398 mailmessage_list * env_list = 0; 399 mailmessage_list * env_list = 0;
399 r = mailsession_get_messages_list(session,&env_list); 400 r = mailsession_get_messages_list(session,&env_list);
400 if (r != MAIL_NO_ERROR) { 401 if (r != MAIL_NO_ERROR) {
401 ; // odebug << "Error message list" << oendl; 402 ; // odebug << "Error message list" << oendl;
402 return; 403 return;
403 } 404 }
404 r = mailsession_get_envelopes_list(session, env_list); 405 r = mailsession_get_envelopes_list(session, env_list);
405 if (r != MAIL_NO_ERROR) { 406 if (r != MAIL_NO_ERROR) {
406 ; // odebug << "Error filling message list" << oendl; 407 ; // odebug << "Error filling message list" << oendl;
407 if (env_list) { 408 if (env_list) {
408 mailmessage_list_free(env_list); 409 mailmessage_list_free(env_list);
409 } 410 }
410 return; 411 return;
411 } 412 }
412 mailimf_references * refs = 0; 413 mailimf_references * refs = 0;
413 mailimf_in_reply_to * in_replies = 0; 414 mailimf_in_reply_to * in_replies = 0;
414 uint32_t i = 0; 415 uint32_t i = 0;
415 for(; i < carray_count(env_list->msg_tab) ; ++i) { 416 for(; i < carray_count(env_list->msg_tab) ; ++i) {
416 mailmessage * msg; 417 mailmessage * msg;
417 QBitArray mFlags(7); 418 QBitArray mFlags(7);
418 msg = (mailmessage*)carray_get(env_list->msg_tab, i); 419 msg = (mailmessage*)carray_get(env_list->msg_tab, i);
419 if (msg->msg_fields == NULL) { 420 if (msg->msg_fields == NULL) {
@@ -451,30 +452,31 @@ void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &
451 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); 452 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) );
452 // crashes when accessing pop3 account? 453 // crashes when accessing pop3 account?
453 if (single_fields.fld_message_id->mid_value) { 454 if (single_fields.fld_message_id->mid_value) {
454 mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); 455 mail->setMsgid(QString(single_fields.fld_message_id->mid_value));
455 ; // odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl; 456 ; // odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl;
456 } 457 }
457 458
458 if (single_fields.fld_reply_to) { 459 if (single_fields.fld_reply_to) {
459 QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list); 460 QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list);
460 if (t.count()>0) { 461 if (t.count()>0) {
461 mail->setReplyto(t[0]); 462 mail->setReplyto(t[0]);
462 } 463 }
463 } 464 }
464#if 0 465#if 0
465 refs = single_fields.fld_references; 466 refs = single_fields.fld_references;
466 if (refs && refs->mid_list && clist_count(refs->mid_list)) { 467 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
467 char * text = (char*)refs->mid_list->first->data; 468 char * text = (char*)refs->mid_list->first->data;
468 mail->setReplyto(QString(text)); 469 mail->setReplyto(QString(text));
469 } 470 }
470#endif 471#endif
471 if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list && 472 if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list &&
472 clist_count(single_fields.fld_in_reply_to->mid_list)) { 473 clist_count(single_fields.fld_in_reply_to->mid_list)) {
473 mail->setInreply(parseInreplies(single_fields.fld_in_reply_to)); 474 mail->setInreply(parseInreplies(single_fields.fld_in_reply_to));
474 } 475 }
475 target.append(mail); 476 if ( maxSizeInKb == 0 || mail->Msgsize()<=maxSizeInKb*1024 )
477 target.append(mail);
476 } 478 }
477 if (env_list) { 479 if (env_list) {
478 mailmessage_list_free(env_list); 480 mailmessage_list_free(env_list);
479 } 481 }
480} 482}