summaryrefslogtreecommitdiffabout
path: root/kmicromail
authorzautrix <zautrix>2005-01-24 12:16:16 (UTC)
committer zautrix <zautrix>2005-01-24 12:16:16 (UTC)
commitd4f5ce1bedd03191da5ecef2dc68381c10ef1fba (patch) (unidiff)
tree2d6860078083e588f8f365b308ee4ffb2c34f1c1 /kmicromail
parent485a6b28e3be6437742852970fdd122ba071b726 (diff)
downloadkdepimpi-d4f5ce1bedd03191da5ecef2dc68381c10ef1fba.zip
kdepimpi-d4f5ce1bedd03191da5ecef2dc68381c10ef1fba.tar.gz
kdepimpi-d4f5ce1bedd03191da5ecef2dc68381c10ef1fba.tar.bz2
more imap fixes
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/imap/mailimap_parser.c22
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp67
-rw-r--r--kmicromail/viewmailbase.cpp2
3 files changed, 57 insertions, 34 deletions
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
@@ -2354,98 +2354,116 @@ mailimap_body_fld_known_enc_parse(mailstream * fd, MMAPString * buffer,
2354 2354
2355 if (type == -1) { 2355 if (type == -1) {
2356 res = MAILIMAP_ERROR_PARSE; 2356 res = MAILIMAP_ERROR_PARSE;
2357 goto err; 2357 goto err;
2358 } 2358 }
2359 2359
2360 r = mailimap_dquote_parse(fd, buffer, &cur_token); 2360 r = mailimap_dquote_parse(fd, buffer, &cur_token);
2361 if (r != MAILIMAP_NO_ERROR) { 2361 if (r != MAILIMAP_NO_ERROR) {
2362 res = r; 2362 res = r;
2363 goto err; 2363 goto err;
2364 } 2364 }
2365 2365
2366 * result = type; 2366 * result = type;
2367 * index = cur_token; 2367 * index = cur_token;
2368 2368
2369 return MAILIMAP_NO_ERROR; 2369 return MAILIMAP_NO_ERROR;
2370 2370
2371 err: 2371 err:
2372 return res; 2372 return res;
2373} 2373}
2374 2374
2375static int 2375static int
2376mailimap_body_fld_enc_parse(mailstream * fd, MMAPString * buffer, 2376mailimap_body_fld_enc_parse(mailstream * fd, MMAPString * buffer,
2377 size_t * index, 2377 size_t * index,
2378 struct mailimap_body_fld_enc ** result, 2378 struct mailimap_body_fld_enc ** result,
2379 size_t progr_rate, 2379 size_t progr_rate,
2380 progress_function * progr_fun) 2380 progress_function * progr_fun)
2381{ 2381{
2382 size_t cur_token; 2382 size_t cur_token;
2383 int type; 2383 int type;
2384 char * value; 2384 char * value;
2385 struct mailimap_body_fld_enc * body_fld_enc; 2385 struct mailimap_body_fld_enc * body_fld_enc;
2386 int r; 2386 int r;
2387 int res; 2387 int res;
2388 2388
2389 cur_token = * index; 2389 cur_token = * index;
2390 2390
2391 r = mailimap_body_fld_known_enc_parse(fd, buffer, &cur_token, 2391 r = mailimap_body_fld_known_enc_parse(fd, buffer, &cur_token,
2392 &type, progr_rate, progr_fun); 2392 &type, progr_rate, progr_fun);
2393 if (r == MAILIMAP_NO_ERROR) { 2393 if (r == MAILIMAP_NO_ERROR) {
2394 value = NULL; 2394 value = NULL;
2395 } 2395 }
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 goto err; 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;
2419 goto err;
2420 }
2421 // LR end
2404 } 2422 }
2405 } 2423 }
2406 else { 2424 else {
2407 res = r; 2425 res = r;
2408 goto err; 2426 goto err;
2409 } 2427 }
2410 2428
2411 body_fld_enc = mailimap_body_fld_enc_new(type, value); 2429 body_fld_enc = mailimap_body_fld_enc_new(type, value);
2412 if (body_fld_enc == NULL) { 2430 if (body_fld_enc == NULL) {
2413 res = MAILIMAP_ERROR_MEMORY; 2431 res = MAILIMAP_ERROR_MEMORY;
2414 goto value_free; 2432 goto value_free;
2415 } 2433 }
2416 2434
2417 * result = body_fld_enc; 2435 * result = body_fld_enc;
2418 * index = cur_token; 2436 * index = cur_token;
2419 2437
2420 return MAILIMAP_NO_ERROR; 2438 return MAILIMAP_NO_ERROR;
2421 2439
2422 value_free: 2440 value_free:
2423 if (value) 2441 if (value)
2424 mailimap_string_free(value); 2442 mailimap_string_free(value);
2425 err: 2443 err:
2426 return res; 2444 return res;
2427} 2445}
2428 2446
2429/* 2447/*
2430 body-fld-id = nstring 2448 body-fld-id = nstring
2431*/ 2449*/
2432 2450
2433static int mailimap_body_fld_id_parse(mailstream * fd, MMAPString * buffer, 2451static int mailimap_body_fld_id_parse(mailstream * fd, MMAPString * buffer,
2434 size_t * index, char ** result, 2452 size_t * index, char ** result,
2435 size_t progr_rate, 2453 size_t progr_rate,
2436 progress_function * progr_fun) 2454 progress_function * progr_fun)
2437{ 2455{
2438 return mailimap_nstring_parse(fd, buffer, index, result, NULL, 2456 return mailimap_nstring_parse(fd, buffer, index, result, NULL,
2439 progr_rate, progr_fun); 2457 progr_rate, progr_fun);
2440} 2458}
2441 2459
2442 2460
2443/* 2461/*
2444 body-fld-lang = nstring / "(" string *(SP string) ")" 2462 body-fld-lang = nstring / "(" string *(SP string) ")"
2445*/ 2463*/
2446 2464
2447/* 2465/*
2448"(" string *(SP string) ")" 2466"(" string *(SP string) ")"
2449*/ 2467*/
2450 2468
2451static int 2469static int
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
@@ -391,145 +391,150 @@ QValueList<Opie::Core::OSmartPointer<Folder> >* IMAPwrapper::listFolders()
391 continue; 391 continue;
392 if ( (bflags = list->mb_flag) ) { 392 if ( (bflags = list->mb_flag) ) {
393 selectable = !(bflags->mbf_type==MAILIMAP_MBX_LIST_FLAGS_SFLAG&& 393 selectable = !(bflags->mbf_type==MAILIMAP_MBX_LIST_FLAGS_SFLAG&&
394 bflags->mbf_sflag==MAILIMAP_MBX_LIST_SFLAG_NOSELECT); 394 bflags->mbf_sflag==MAILIMAP_MBX_LIST_SFLAG_NOSELECT);
395 for(cur_flag=clist_begin(bflags->mbf_oflags);cur_flag;cur_flag=clist_next(cur_flag)) { 395 for(cur_flag=clist_begin(bflags->mbf_oflags);cur_flag;cur_flag=clist_next(cur_flag)) {
396 if ( ((mailimap_mbx_list_oflag*)cur_flag->data)->of_type==MAILIMAP_MBX_LIST_OFLAG_NOINFERIORS) { 396 if ( ((mailimap_mbx_list_oflag*)cur_flag->data)->of_type==MAILIMAP_MBX_LIST_OFLAG_NOINFERIORS) {
397 no_inferiors = true; 397 no_inferiors = true;
398 } 398 }
399 } 399 }
400 } 400 }
401 del = list->mb_delimiter; 401 del = list->mb_delimiter;
402 folders->append(new IMAPFolder(temp,del,selectable,no_inferiors,account->getPrefix())); 402 folders->append(new IMAPFolder(temp,del,selectable,no_inferiors,account->getPrefix()));
403 } 403 }
404 } else { 404 } else {
405 qDebug("error fetching folders "); 405 qDebug("error fetching folders ");
406 406
407 } 407 }
408 if (result) mailimap_list_result_free( result ); 408 if (result) mailimap_list_result_free( result );
409 return folders; 409 return folders;
410} 410}
411 411
412RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) 412RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
413{ 413{
414 RecMail * m = 0; 414 RecMail * m = 0;
415 mailimap_msg_att_item *item=0; 415 mailimap_msg_att_item *item=0;
416 clistcell *current,*c,*cf; 416 clistcell *current,*c,*cf;
417 mailimap_msg_att_dynamic*flist; 417 mailimap_msg_att_dynamic*flist;
418 mailimap_flag_fetch*cflag; 418 mailimap_flag_fetch*cflag;
419 int size = 0; 419 int size = 0;
420 QBitArray mFlags(7); 420 QBitArray mFlags(7);
421 QStringList addresslist; 421 QStringList addresslist;
422 422
423 if (!m_att) { 423 if (!m_att) {
424 return m; 424 return m;
425 } 425 }
426 m = new RecMail(); 426 m = new RecMail();
427 for (c = clist_begin(m_att->att_list); c!=NULL;c=clist_next(c) ) { 427 for (c = clist_begin(m_att->att_list); c!=NULL;c=clist_next(c) ) {
428 current = c; 428 current = c;
429 size = 0; 429 size = 0;
430 item = (mailimap_msg_att_item*)current->data; 430 item = (mailimap_msg_att_item*)current->data;
431 if ( !item ) 431 if ( !item )
432 continue; 432 continue;
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 if (cflag->fl_type==MAILIMAP_FLAG_FETCH_OTHER && cflag->fl_flag!=0) { 444 else {
445 switch (cflag->fl_flag->fl_type) { 445 if (cflag->fl_type==MAILIMAP_FLAG_FETCH_OTHER && cflag->fl_flag!=0) {
446 case MAILIMAP_FLAG_ANSWERED: /* \Answered flag */ 446 switch (cflag->fl_flag->fl_type) {
447 mFlags.setBit(FLAG_ANSWERED); 447 case MAILIMAP_FLAG_ANSWERED: /* \Answered flag */
448 break; 448 mFlags.setBit(FLAG_ANSWERED);
449 case MAILIMAP_FLAG_FLAGGED: /* \Flagged flag */ 449 break;
450 mFlags.setBit(FLAG_FLAGGED); 450 case MAILIMAP_FLAG_FLAGGED: /* \Flagged flag */
451 break; 451 mFlags.setBit(FLAG_FLAGGED);
452 case MAILIMAP_FLAG_DELETED: /* \Deleted flag */ 452 break;
453 mFlags.setBit(FLAG_DELETED); 453 case MAILIMAP_FLAG_DELETED: /* \Deleted flag */
454 break; 454 mFlags.setBit(FLAG_DELETED);
455 case MAILIMAP_FLAG_SEEN: /* \Seen flag */ 455 break;
456 mFlags.setBit(FLAG_SEEN); 456 case MAILIMAP_FLAG_SEEN: /* \Seen flag */
457 break; 457 mFlags.setBit(FLAG_SEEN);
458 case MAILIMAP_FLAG_DRAFT: /* \Draft flag */ 458 break;
459 mFlags.setBit(FLAG_DRAFT); 459 case MAILIMAP_FLAG_DRAFT: /* \Draft flag */
460 break; 460 mFlags.setBit(FLAG_DRAFT);
461 case MAILIMAP_FLAG_KEYWORD: /* keyword flag */ 461 break;
462 break; 462 case MAILIMAP_FLAG_KEYWORD: /* keyword flag */
463 case MAILIMAP_FLAG_EXTENSION: /* \extension flag */ 463 break;
464 break; 464 case MAILIMAP_FLAG_EXTENSION: /* \extension flag */
465 default: 465 break;
466 break; 466 default:
467 break;
468 }
469 } else if (cflag->fl_type==MAILIMAP_FLAG_FETCH_RECENT) {
470 mFlags.setBit(FLAG_RECENT);
471 }
467 } 472 }
468 } else if (cflag->fl_type==MAILIMAP_FLAG_FETCH_RECENT) {
469 mFlags.setBit(FLAG_RECENT);
470 } 473 }
471 } 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;
478 if ( head == NULL ) 482 if ( head == NULL )
479 continue; 483 continue;
480 if ( head->env_date != NULL ) { 484 if ( head->env_date != NULL ) {
481 m->setDate(head->env_date); 485 m->setDate(head->env_date);
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);
494 } 499 }
495 m->setDate( ret ); 500 m->setDate( ret );
496 char tmp[20]; 501 char tmp[20];
497 snprintf( tmp, 20, "%04i-%02i-%02i %02i:%02i:%02i", 502 snprintf( tmp, 20, "%04i-%02i-%02i %02i:%02i:%02i",
498 dt.date().year(),dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() ); 503 dt.date().year(),dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() );
499 //qDebug("%d iso %s %s ", date->dt_zone, tmp, head->env_date); 504 //qDebug("%d iso %s %s ", date->dt_zone, tmp, head->env_date);
500 m->setIsoDate( QString( tmp ) ); 505 m->setIsoDate( QString( tmp ) );
501 mailimf_date_time_free ( date ); 506 mailimf_date_time_free ( date );
502 } else { 507 } else {
503 m->setIsoDate(head->env_date); 508 m->setIsoDate(head->env_date);
504 } 509 }
505 } 510 }
506 if ( head->env_subject != NULL ) 511 if ( head->env_subject != NULL )
507 m->setSubject(convert_String((const char*)head->env_subject)); 512 m->setSubject(convert_String((const char*)head->env_subject));
508 //m->setSubject(head->env_subject); 513 //m->setSubject(head->env_subject);
509 if (head->env_from!=NULL) { 514 if (head->env_from!=NULL) {
510 addresslist = address_list_to_stringlist(head->env_from->frm_list); 515 addresslist = address_list_to_stringlist(head->env_from->frm_list);
511 if (addresslist.count()) { 516 if (addresslist.count()) {
512 m->setFrom(addresslist.first()); 517 m->setFrom(addresslist.first());
513 } 518 }
514 } 519 }
515 if (head->env_to!=NULL) { 520 if (head->env_to!=NULL) {
516 addresslist = address_list_to_stringlist(head->env_to->to_list); 521 addresslist = address_list_to_stringlist(head->env_to->to_list);
517 m->setTo(addresslist); 522 m->setTo(addresslist);
518 } 523 }
519 if (head->env_cc!=NULL) { 524 if (head->env_cc!=NULL) {
520 addresslist = address_list_to_stringlist(head->env_cc->cc_list); 525 addresslist = address_list_to_stringlist(head->env_cc->cc_list);
521 m->setCC(addresslist); 526 m->setCC(addresslist);
522 } 527 }
523 if (head->env_bcc!=NULL) { 528 if (head->env_bcc!=NULL) {
524 addresslist = address_list_to_stringlist(head->env_bcc->bcc_list); 529 addresslist = address_list_to_stringlist(head->env_bcc->bcc_list);
525 m->setBcc(addresslist); 530 m->setBcc(addresslist);
526 } 531 }
527 /* reply to address, eg. email. */ 532 /* reply to address, eg. email. */
528 if (head->env_reply_to!=NULL) { 533 if (head->env_reply_to!=NULL) {
529 addresslist = address_list_to_stringlist(head->env_reply_to->rt_list); 534 addresslist = address_list_to_stringlist(head->env_reply_to->rt_list);
530 if (addresslist.count()) { 535 if (addresslist.count()) {
531 m->setReplyto(addresslist.first()); 536 m->setReplyto(addresslist.first());
532 } 537 }
533 } 538 }
534 if (head->env_in_reply_to!=NULL) { 539 if (head->env_in_reply_to!=NULL) {
535 QString h(head->env_in_reply_to); 540 QString h(head->env_in_reply_to);
@@ -562,97 +567,97 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
562 m = 0; 567 m = 0;
563 } 568 }
564 if (m) { 569 if (m) {
565 m->setFlags(mFlags); 570 m->setFlags(mFlags);
566 m->setMsgsize(size); 571 m->setMsgsize(size);
567 } 572 }
568 return m; 573 return m;
569} 574}
570 575
571RecBodyP IMAPwrapper::fetchBody(const RecMailP&mail) 576RecBodyP IMAPwrapper::fetchBody(const RecMailP&mail)
572{ 577{
573 RecBodyP body = new RecBody(); 578 RecBodyP body = new RecBody();
574 const char *mb; 579 const char *mb;
575 int err = MAILIMAP_NO_ERROR; 580 int err = MAILIMAP_NO_ERROR;
576 clist *result = 0; 581 clist *result = 0;
577 clistcell *current; 582 clistcell *current;
578 mailimap_fetch_att *fetchAtt = 0; 583 mailimap_fetch_att *fetchAtt = 0;
579 mailimap_fetch_type *fetchType = 0; 584 mailimap_fetch_type *fetchType = 0;
580 mailimap_set *set = 0; 585 mailimap_set *set = 0;
581 mailimap_body*body_desc = 0; 586 mailimap_body*body_desc = 0;
582 587
583 mb = mail->getMbox().latin1(); 588 mb = mail->getMbox().latin1();
584 589
585 login(); 590 login();
586 if (!m_imap) { 591 if (!m_imap) {
587 return body; 592 return body;
588 } 593 }
589 err = selectMbox(mail->getMbox()); 594 err = selectMbox(mail->getMbox());
590 if ( err != MAILIMAP_NO_ERROR ) { 595 if ( err != MAILIMAP_NO_ERROR ) {
591 return body; 596 return body;
592 } 597 }
593 598
594 /* the range has to start at 1!!! not with 0!!!! */ 599 /* the range has to start at 1!!! not with 0!!!! */
595 set = mailimap_set_new_interval( mail->getNumber(),mail->getNumber() ); 600 set = mailimap_set_new_interval( mail->getNumber(),mail->getNumber() );
596 fetchAtt = mailimap_fetch_att_new_bodystructure(); 601 fetchAtt = mailimap_fetch_att_new_bodystructure();
597 fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); 602 fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt);
598 err = mailimap_fetch( m_imap, set, fetchType, &result ); 603 err = mailimap_fetch( m_imap, set, fetchType, &result );
599 mailimap_set_free( set ); 604 mailimap_set_free( set );
600 mailimap_fetch_type_free( fetchType ); 605 mailimap_fetch_type_free( fetchType );
601 606
602 if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) { 607 if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) {
603 mailimap_msg_att * msg_att; 608 mailimap_msg_att * msg_att;
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)
617{ 622{
618 QStringList l; 623 QStringList l;
619 QString from; 624 QString from;
620 bool named_from; 625 bool named_from;
621 clistcell *current = NULL; 626 clistcell *current = NULL;
622 mailimap_address * current_address=NULL; 627 mailimap_address * current_address=NULL;
623 if (!list) { 628 if (!list) {
624 return l; 629 return l;
625 } 630 }
626 unsigned int count = 0; 631 unsigned int count = 0;
627 for (current=clist_begin(list);current!= NULL;current=clist_next(current)) { 632 for (current=clist_begin(list);current!= NULL;current=clist_next(current)) {
628 from = ""; 633 from = "";
629 named_from = false; 634 named_from = false;
630 current_address=(mailimap_address*)current->data; 635 current_address=(mailimap_address*)current->data;
631 if (current_address->ad_personal_name){ 636 if (current_address->ad_personal_name){
632 from+=convert_String((const char*)current_address->ad_personal_name); 637 from+=convert_String((const char*)current_address->ad_personal_name);
633 from+=" "; 638 from+=" ";
634 named_from = true; 639 named_from = true;
635 } 640 }
636 if (named_from && (current_address->ad_mailbox_name || current_address->ad_host_name)) { 641 if (named_from && (current_address->ad_mailbox_name || current_address->ad_host_name)) {
637 from+="<"; 642 from+="<";
638 } 643 }
639 if (current_address->ad_mailbox_name) { 644 if (current_address->ad_mailbox_name) {
640 from+=QString(current_address->ad_mailbox_name); 645 from+=QString(current_address->ad_mailbox_name);
641 from+="@"; 646 from+="@";
642 } 647 }
643 if (current_address->ad_host_name) { 648 if (current_address->ad_host_name) {
644 from+=QString(current_address->ad_host_name); 649 from+=QString(current_address->ad_host_name);
645 } 650 }
646 if (named_from && (current_address->ad_mailbox_name || current_address->ad_host_name)) { 651 if (named_from && (current_address->ad_mailbox_name || current_address->ad_host_name)) {
647 from+=">"; 652 from+=">";
648 } 653 }
649 l.append(QString(from)); 654 l.append(QString(from));
650 if (++count > 99) { 655 if (++count > 99) {
651 break; 656 break;
652 } 657 }
653 } 658 }
654 return l; 659 return l;
655} 660}
656 661
657encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int>&path,bool internal_call) 662encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int>&path,bool internal_call)
658{ 663{
diff --git a/kmicromail/viewmailbase.cpp b/kmicromail/viewmailbase.cpp
index c4731a7..d21696a 100644
--- a/kmicromail/viewmailbase.cpp
+++ b/kmicromail/viewmailbase.cpp
@@ -7,97 +7,97 @@
7 7
8#include <qtoolbar.h> 8#include <qtoolbar.h>
9#include <qmenubar.h> 9#include <qmenubar.h>
10#include <kiconloader.h> 10#include <kiconloader.h>
11//#include <qpe/resource.h> 11//#include <qpe/resource.h>
12#include <klocale.h> 12#include <klocale.h>
13 13
14#include "viewmailbase.h" 14#include "viewmailbase.h"
15//#include "opendiag.h" 15//#include "opendiag.h"
16 16
17ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) 17ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl)
18 : QMainWindow(parent, name, fl) 18 : QMainWindow(parent, name, fl)
19{ 19{
20 20
21 setToolBarsMovable(false); 21 setToolBarsMovable(false);
22 22
23 toolbar = new QToolBar(this); 23 toolbar = new QToolBar(this);
24 menubar = new QMenuBar( toolbar ); 24 menubar = new QMenuBar( toolbar );
25 mailmenu = new QPopupMenu( menubar ); 25 mailmenu = new QPopupMenu( menubar );
26 menubar->insertItem( i18n( "Mail" ), mailmenu ); 26 menubar->insertItem( i18n( "Mail" ), mailmenu );
27 27
28 toolbar->setHorizontalStretchable(true); 28 toolbar->setHorizontalStretchable(true);
29 addToolBar(toolbar); 29 addToolBar(toolbar);
30 30
31 reply = new QAction(i18n("Reply"),SmallIcon("reply"), 0, 0, this); 31 reply = new QAction(i18n("Reply"),SmallIcon("reply"), 0, 0, this);
32 reply->addTo(toolbar); 32 reply->addTo(toolbar);
33 reply->addTo(mailmenu); 33 reply->addTo(mailmenu);
34 34
35 forward = new QAction(i18n("Forward"),SmallIcon("forward"), 0, 0, this); 35 forward = new QAction(i18n("Forward"),SmallIcon("forward"), 0, 0, this);
36 forward->addTo(toolbar); 36 forward->addTo(toolbar);
37 forward->addTo(mailmenu); 37 forward->addTo(mailmenu);
38 38
39 attachbutton = new QAction(i18n("Attachments"),SmallIcon("attach"), 0, 0, this, 0, true); 39 attachbutton = new QAction(i18n("Attachments"),SmallIcon("attach"), 0, 0, this, 0, true);
40 attachbutton->addTo(toolbar); 40 attachbutton->addTo(toolbar);
41 attachbutton->addTo(mailmenu); 41 attachbutton->addTo(mailmenu);
42 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool))); 42 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool)));
43 43
44 44
45 showHtml = new QAction( i18n( "Show Html" ), SmallIcon( "html" ), 0, 0, this, 0, true ); 45 showHtml = new QAction( i18n( "Show Html" ), SmallIcon( "html" ), 0, 0, this, 0, true );
46 showHtml->addTo( toolbar ); 46 showHtml->addTo( toolbar );
47 showHtml->addTo( mailmenu ); 47 showHtml->addTo( mailmenu );
48 48
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
62 62
63 closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this); 63 closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this);
64 //QLabel *spacer = new QLabel(toolbar); 64 //QLabel *spacer = new QLabel(toolbar);
65 spacer->setBackgroundMode(QWidget::PaletteButton); 65 spacer->setBackgroundMode(QWidget::PaletteButton);
66 toolbar->setStretchableWidget(spacer); 66 toolbar->setStretchableWidget(spacer);
67 closeMail->addTo(toolbar); 67 closeMail->addTo(toolbar);
68 closeMail->addTo(mailmenu); 68 closeMail->addTo(mailmenu);
69 QVBox *view = new QVBox(this); 69 QVBox *view = new QVBox(this);
70 setCentralWidget(view); 70 setCentralWidget(view);
71 71
72 attachments = new QListView(view); 72 attachments = new QListView(view);
73 attachments->setMinimumHeight(90); 73 attachments->setMinimumHeight(90);
74 attachments->setMaximumHeight(90); 74 attachments->setMaximumHeight(90);
75 attachments->setAllColumnsShowFocus(true); 75 attachments->setAllColumnsShowFocus(true);
76 attachments->addColumn("Mime Type", 60); 76 attachments->addColumn("Mime Type", 60);
77 attachments->addColumn(i18n("Description"), 100); 77 attachments->addColumn(i18n("Description"), 100);
78 attachments->addColumn(i18n("Filename"), 80); 78 attachments->addColumn(i18n("Filename"), 80);
79 attachments->addColumn(i18n("Size"), 80); 79 attachments->addColumn(i18n("Size"), 80);
80 attachments->setSorting(-1); 80 attachments->setSorting(-1);
81 attachments->hide(); 81 attachments->hide();
82 82
83 browser = new QTextBrowser(view); 83 browser = new QTextBrowser(view);
84 84
85 //openDiag = new OpenDiag(view); 85 //openDiag = new OpenDiag(view);
86 //openDiag->hide(); 86 //openDiag->hide();
87 87
88} 88}
89 89
90void ViewMailBase::slotChangeAttachview(bool state) 90void ViewMailBase::slotChangeAttachview(bool state)
91{ 91{
92 if (state) attachments->show(); 92 if (state) attachments->show();
93 else attachments->hide(); 93 else attachments->hide();
94} 94}
95 95
96void ViewMailBase::keyPressEvent ( QKeyEvent * e ) 96void ViewMailBase::keyPressEvent ( QKeyEvent * e )
97{ 97{
98 if( e->key()==Qt::Key_Escape ) { 98 if( e->key()==Qt::Key_Escape ) {
99 close(); 99 close();
100 e->accept(); 100 e->accept();
101 return; 101 return;
102 } 102 }
103 QWidget::keyPressEvent(e); 103 QWidget::keyPressEvent(e);