summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/imapwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/imapwrapper.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index 6faa524..5441a9b 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -1,33 +1,34 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#include <stdlib.h> 2#include <stdlib.h>
3#include <libetpan/libetpan.h> 3#include <libetpan/libetpan.h>
4#include <qpe/global.h> 4#include <qpe/global.h>
5#include <qapplication.h> 5#include <qapplication.h>
6#include "imapwrapper.h" 6#include "imapwrapper.h"
7#include "mailtypes.h" 7#include "mailtypes.h"
8#include "logindialog.h" 8#include "logindialog.h"
9#include <qprogressbar.h> 9#include <qprogressbar.h>
10#include "genericwrapper.h"
10 11
11using namespace Opie::Core; 12using namespace Opie::Core;
12int IMAPwrapper::mMax = 0; 13int IMAPwrapper::mMax = 0;
13int IMAPwrapper::mCurrent = 0; 14int IMAPwrapper::mCurrent = 0;
14 15
15IMAPwrapper::IMAPwrapper( IMAPaccount *a ) 16IMAPwrapper::IMAPwrapper( IMAPaccount *a )
16 : AbstractMail() 17 : AbstractMail()
17{ 18{
18 account = a; 19 account = a;
19 m_imap = 0; 20 m_imap = 0;
20 m_Lastmbox = ""; 21 m_Lastmbox = "";
21 mCurrent = 0; 22 mCurrent = 0;
22 mMax = 0; 23 mMax = 0;
23} 24}
24 25
25IMAPwrapper::~IMAPwrapper() 26IMAPwrapper::~IMAPwrapper()
26{ 27{
27 logout(); 28 logout();
28} 29}
29 30
30/* to avoid to often select statements in loops etc. 31/* to avoid to often select statements in loops etc.
31 we trust that we are logged in and connection is established!*/ 32 we trust that we are logged in and connection is established!*/
32int IMAPwrapper::selectMbox(const QString&mbox) 33int IMAPwrapper::selectMbox(const QString&mbox)
33{ 34{
@@ -435,50 +436,65 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
435 mFlags.setBit(FLAG_SEEN); 436 mFlags.setBit(FLAG_SEEN);
436 break; 437 break;
437 case MAILIMAP_FLAG_DRAFT: /* \Draft flag */ 438 case MAILIMAP_FLAG_DRAFT: /* \Draft flag */
438 mFlags.setBit(FLAG_DRAFT); 439 mFlags.setBit(FLAG_DRAFT);
439 break; 440 break;
440 case MAILIMAP_FLAG_KEYWORD: /* keyword flag */ 441 case MAILIMAP_FLAG_KEYWORD: /* keyword flag */
441 break; 442 break;
442 case MAILIMAP_FLAG_EXTENSION: /* \extension flag */ 443 case MAILIMAP_FLAG_EXTENSION: /* \extension flag */
443 break; 444 break;
444 default: 445 default:
445 break; 446 break;
446 } 447 }
447 } else if (cflag->fl_type==MAILIMAP_FLAG_FETCH_RECENT) { 448 } else if (cflag->fl_type==MAILIMAP_FLAG_FETCH_RECENT) {
448 mFlags.setBit(FLAG_RECENT); 449 mFlags.setBit(FLAG_RECENT);
449 } 450 }
450 } 451 }
451 continue; 452 continue;
452 } 453 }
453 if ( item->att_data.att_static == NULL ) 454 if ( item->att_data.att_static == NULL )
454 continue; 455 continue;
455 if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_ENVELOPE) { 456 if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_ENVELOPE) {
456 mailimap_envelope * head = item->att_data.att_static->att_data.att_env; 457 mailimap_envelope * head = item->att_data.att_static->att_data.att_env;
457 if ( head == NULL ) 458 if ( head == NULL )
458 continue; 459 continue;
459 if ( head->env_date != NULL ) 460 if ( head->env_date != NULL ) {
460 m->setDate(head->env_date); 461 m->setDate(head->env_date);
462 struct mailimf_date_time result;
463 struct mailimf_date_time* date = &result;
464 struct mailimf_date_time **re = &date;
465 size_t length = m->getDate().length();
466 size_t index = 0;
467 if ( mailimf_date_time_parse(head->env_date, length,&index, re ) == MAILIMF_NO_ERROR ) {
468 m->setDate( Genericwrapper::parseDateTime( date ) );
469 char tmp[23];
470 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %05i",
471 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
472 m->setIsoDate( QString( tmp ) );
473 } else {
474 m->setIsoDate(head->env_date);
475 }
476 }
461 if ( head->env_subject != NULL ) 477 if ( head->env_subject != NULL )
462 m->setSubject(convert_String((const char*)head->env_subject)); 478 m->setSubject(convert_String((const char*)head->env_subject));
463 //m->setSubject(head->env_subject); 479 //m->setSubject(head->env_subject);
464 if (head->env_from!=NULL) { 480 if (head->env_from!=NULL) {
465 addresslist = address_list_to_stringlist(head->env_from->frm_list); 481 addresslist = address_list_to_stringlist(head->env_from->frm_list);
466 if (addresslist.count()) { 482 if (addresslist.count()) {
467 m->setFrom(addresslist.first()); 483 m->setFrom(addresslist.first());
468 } 484 }
469 } 485 }
470 if (head->env_to!=NULL) { 486 if (head->env_to!=NULL) {
471 addresslist = address_list_to_stringlist(head->env_to->to_list); 487 addresslist = address_list_to_stringlist(head->env_to->to_list);
472 m->setTo(addresslist); 488 m->setTo(addresslist);
473 } 489 }
474 if (head->env_cc!=NULL) { 490 if (head->env_cc!=NULL) {
475 addresslist = address_list_to_stringlist(head->env_cc->cc_list); 491 addresslist = address_list_to_stringlist(head->env_cc->cc_list);
476 m->setCC(addresslist); 492 m->setCC(addresslist);
477 } 493 }
478 if (head->env_bcc!=NULL) { 494 if (head->env_bcc!=NULL) {
479 addresslist = address_list_to_stringlist(head->env_bcc->bcc_list); 495 addresslist = address_list_to_stringlist(head->env_bcc->bcc_list);
480 m->setBcc(addresslist); 496 m->setBcc(addresslist);
481 } 497 }
482 /* reply to address, eg. email. */ 498 /* reply to address, eg. email. */
483 if (head->env_reply_to!=NULL) { 499 if (head->env_reply_to!=NULL) {
484 addresslist = address_list_to_stringlist(head->env_reply_to->rt_list); 500 addresslist = address_list_to_stringlist(head->env_reply_to->rt_list);