summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-24 12:16:16 (UTC)
committer zautrix <zautrix>2005-01-24 12:16:16 (UTC)
commitd4f5ce1bedd03191da5ecef2dc68381c10ef1fba (patch) (unidiff)
tree2d6860078083e588f8f365b308ee4ffb2c34f1c1
parent485a6b28e3be6437742852970fdd122ba071b726 (diff)
downloadkdepimpi-d4f5ce1bedd03191da5ecef2dc68381c10ef1fba.zip
kdepimpi-d4f5ce1bedd03191da5ecef2dc68381c10ef1fba.tar.gz
kdepimpi-d4f5ce1bedd03191da5ecef2dc68381c10ef1fba.tar.bz2
more imap fixes
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt7
-rw-r--r--kmicromail/libetpan/imap/mailimap_parser.c20
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp11
-rw-r--r--kmicromail/viewmailbase.cpp2
4 files changed, 35 insertions, 5 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 5bfe1c8..cbed872 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -12,12 +12,19 @@ Fixed two small problems in the todo view.
12Added missing German translation for filter edit and print dialog. 12Added missing German translation for filter edit and print dialog.
13Made search dialog closeable by cancel key. 13Made search dialog closeable by cancel key.
14 14
15Made it possible to select in the date picker the (ligt grey ) 15Made it possible to select in the date picker the (ligt grey )
16dates of the prev./next month with the mouse. 16dates of the prev./next month with the mouse.
17 17
18OM/Pi:
19"Delete mail" icon in main window now deletes all selected mails.
20Fixed the problem, that the state flag of imap mails was ignored.
21Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
22to idecate that they are already seen.
23Fixed the problem that the body of some mails was not displayed in the
24mail viewer when fetching them from the imap server directly to read them.
18 25
19 26
20 27
21********** VERSION 1.9.19 ************ 28********** VERSION 1.9.19 ************
22 29
23Added a lot of missing translations to KA/Pi, 30Added a lot of missing translations to KA/Pi,
diff --git a/kmicromail/libetpan/imap/mailimap_parser.c b/kmicromail/libetpan/imap/mailimap_parser.c
index 1c2ecde..560e58a 100644
--- a/kmicromail/libetpan/imap/mailimap_parser.c
+++ b/kmicromail/libetpan/imap/mailimap_parser.c
@@ -2396,15 +2396,33 @@ mailimap_body_fld_enc_parse(mailstream * fd, MMAPString * buffer,
2396 else if (r == MAILIMAP_ERROR_PARSE) { 2396 else if (r == MAILIMAP_ERROR_PARSE) {
2397 type = MAILIMAP_BODY_FLD_ENC_OTHER; 2397 type = MAILIMAP_BODY_FLD_ENC_OTHER;
2398 2398
2399 r = mailimap_string_parse(fd, buffer, &cur_token, &value, NULL, 2399 r = mailimap_string_parse(fd, buffer, &cur_token, &value, NULL,
2400 progr_rate, progr_fun); 2400 progr_rate, progr_fun);
2401 if (r != MAILIMAP_NO_ERROR) { 2401 if (r != MAILIMAP_NO_ERROR) {
2402 res = r; 2402 // LR start
2403 // accept NIL and set type to utf8
2404 int ret = r;
2405 r = mailimap_char_parse(fd, buffer, &cur_token, 'N');
2406 if (r == MAILIMAP_NO_ERROR) {
2407 r = mailimap_char_parse(fd, buffer, &cur_token, 'I');
2408 if (r == MAILIMAP_NO_ERROR) {
2409 r = mailimap_char_parse(fd, buffer, &cur_token, 'L');
2410 if (r == MAILIMAP_NO_ERROR) {
2411 type = 4;
2412 ret = MAILIMAP_NO_ERROR;
2413 value = NULL;
2414 }
2415 }
2416 }
2417 if ( ret != MAILIMAP_NO_ERROR ) {
2418 res = ret;
2403 goto err; 2419 goto err;
2404 } 2420 }
2421 // LR end
2422 }
2405 } 2423 }
2406 else { 2424 else {
2407 res = r; 2425 res = r;
2408 goto err; 2426 goto err;
2409 } 2427 }
2410 2428
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index d9496af..93fb7de 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -433,17 +433,18 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
433 if (item->att_type!=MAILIMAP_MSG_ATT_ITEM_STATIC) { 433 if (item->att_type!=MAILIMAP_MSG_ATT_ITEM_STATIC) {
434 flist = (mailimap_msg_att_dynamic*)item->att_data.att_dyn; 434 flist = (mailimap_msg_att_dynamic*)item->att_data.att_dyn;
435 if (!flist || !flist->att_list) { 435 if (!flist || !flist->att_list) {
436 continue; 436 continue;
437 } 437 }
438 cf = flist->att_list->first; 438 cf = flist->att_list->first;
439 if( ! cf ) 439 if( cf ) {
440 for (cf = clist_begin(flist->att_list); cf!=NULL; cf = clist_next(cf)) { 440 for (cf = clist_begin(flist->att_list); cf!=NULL; cf = clist_next(cf)) {
441 cflag = (mailimap_flag_fetch*)cf->data; 441 cflag = (mailimap_flag_fetch*)cf->data;
442 if( ! cflag ) 442 if( ! cflag )
443 qDebug("imap:not cflag "); 443 qDebug("imap:NO cflag ");
444 else {
444 if (cflag->fl_type==MAILIMAP_FLAG_FETCH_OTHER && cflag->fl_flag!=0) { 445 if (cflag->fl_type==MAILIMAP_FLAG_FETCH_OTHER && cflag->fl_flag!=0) {
445 switch (cflag->fl_flag->fl_type) { 446 switch (cflag->fl_flag->fl_type) {
446 case MAILIMAP_FLAG_ANSWERED: /* \Answered flag */ 447 case MAILIMAP_FLAG_ANSWERED: /* \Answered flag */
447 mFlags.setBit(FLAG_ANSWERED); 448 mFlags.setBit(FLAG_ANSWERED);
448 break; 449 break;
449 case MAILIMAP_FLAG_FLAGGED: /* \Flagged flag */ 450 case MAILIMAP_FLAG_FLAGGED: /* \Flagged flag */
@@ -466,12 +467,15 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
466 break; 467 break;
467 } 468 }
468 } else if (cflag->fl_type==MAILIMAP_FLAG_FETCH_RECENT) { 469 } else if (cflag->fl_type==MAILIMAP_FLAG_FETCH_RECENT) {
469 mFlags.setBit(FLAG_RECENT); 470 mFlags.setBit(FLAG_RECENT);
470 } 471 }
471 } 472 }
473 }
474 }
475 //qDebug(" continue");
472 continue; 476 continue;
473 } 477 }
474 if ( item->att_data.att_static == NULL ) 478 if ( item->att_data.att_static == NULL )
475 continue; 479 continue;
476 if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_ENVELOPE) { 480 if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_ENVELOPE) {
477 mailimap_envelope * head = item->att_data.att_static->att_data.att_env; 481 mailimap_envelope * head = item->att_data.att_static->att_data.att_env;
@@ -482,12 +486,13 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
482 //struct mailimf_date_time result; 486 //struct mailimf_date_time result;
483 struct mailimf_date_time* date;// = &result; 487 struct mailimf_date_time* date;// = &result;
484 struct mailimf_date_time **re = &date; 488 struct mailimf_date_time **re = &date;
485 size_t length = m->getDate().length(); 489 size_t length = m->getDate().length();
486 size_t index = 0; 490 size_t index = 0;
487 if ( mailimf_date_time_parse(head->env_date, length,&index, re ) == MAILIMF_NO_ERROR ) { 491 if ( mailimf_date_time_parse(head->env_date, length,&index, re ) == MAILIMF_NO_ERROR ) {
492 //qDebug("parseDateTime ");
488 QDateTime dt = Genericwrapper::parseDateTime( date ); 493 QDateTime dt = Genericwrapper::parseDateTime( date );
489 QString ret; 494 QString ret;
490 if ( dt.date() == QDate::currentDate () ) 495 if ( dt.date() == QDate::currentDate () )
491 ret = KGlobal::locale()->formatTime( dt.time(),true); 496 ret = KGlobal::locale()->formatTime( dt.time(),true);
492 else { 497 else {
493 ret = KGlobal::locale()->formatDateTime( dt,true,true); 498 ret = KGlobal::locale()->formatDateTime( dt,true,true);
@@ -604,13 +609,13 @@ RecBodyP IMAPwrapper::fetchBody(const RecMailP&mail)
604 msg_att = (mailimap_msg_att*)current->data; 609 msg_att = (mailimap_msg_att*)current->data;
605 mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->att_list->first->data; 610 mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->att_list->first->data;
606 QValueList<int> path; 611 QValueList<int> path;
607 body_desc = item->att_data.att_static->att_data.att_body; 612 body_desc = item->att_data.att_static->att_data.att_body;
608 traverseBody(mail,body_desc,body,0,path); 613 traverseBody(mail,body_desc,body,0,path);
609 } else { 614 } else {
610 //odebug << "error fetching body: " << m_imap->imap_response << "" << oendl; 615 qDebug("error fetching body %d (%d): %s", err, MAILIMAP_NO_ERROR, m_imap->imap_response );
611 } 616 }
612 if (result) mailimap_fetch_list_free(result); 617 if (result) mailimap_fetch_list_free(result);
613 return body; 618 return body;
614} 619}
615 620
616QStringList IMAPwrapper::address_list_to_stringlist(clist*list) 621QStringList IMAPwrapper::address_list_to_stringlist(clist*list)
diff --git a/kmicromail/viewmailbase.cpp b/kmicromail/viewmailbase.cpp
index c4731a7..d21696a 100644
--- a/kmicromail/viewmailbase.cpp
+++ b/kmicromail/viewmailbase.cpp
@@ -49,13 +49,13 @@ ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl)
49 deleteMail = new QAction(i18n("Delete Mail"),SmallIcon("trash"), 0, 0, this); 49 deleteMail = new QAction(i18n("Delete Mail"),SmallIcon("trash"), 0, 0, this);
50 deleteMail->addTo(toolbar); 50 deleteMail->addTo(toolbar);
51 deleteMail->addTo(mailmenu); 51 deleteMail->addTo(mailmenu);
52 52
53 53
54 54
55 nextMail = new QAction(i18n("Show next mail"),SmallIcon("add"), 0, 0, this); 55 nextMail = new QAction(i18n("Show next mail"),SmallIcon("enter"), 0, 0, this);
56 QLabel *spacer = new QLabel(toolbar); 56 QLabel *spacer = new QLabel(toolbar);
57 nextMail->addTo(toolbar); 57 nextMail->addTo(toolbar);
58 nextMail->addTo(mailmenu); 58 nextMail->addTo(mailmenu);
59 59
60 60
61 61