summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/imapwrapper.cpp1
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp1
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.cpp12
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h5
-rw-r--r--noncore/net/mail/mailtypes.cpp12
-rw-r--r--noncore/net/mail/mailtypes.h5
-rw-r--r--noncore/net/mail/viewmail.cpp94
-rw-r--r--noncore/net/mail/viewmail.h26
-rw-r--r--noncore/net/mail/viewmailbase.cpp7
9 files changed, 120 insertions, 43 deletions
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp
index 3941cec..11bf3b8 100644
--- a/noncore/net/mail/imapwrapper.cpp
+++ b/noncore/net/mail/imapwrapper.cpp
@@ -561,134 +561,135 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
561 } 561 }
562 switch (Description->bd_type) { 562 switch (Description->bd_type) {
563 case MAILIMAP_BODY_TYPE_1PART_TEXT: 563 case MAILIMAP_BODY_TYPE_1PART_TEXT:
564 target_part.setType("text"); 564 target_part.setType("text");
565 fillSingleTextPart(target_part,Description->bd_data.bd_type_text); 565 fillSingleTextPart(target_part,Description->bd_data.bd_type_text);
566 break; 566 break;
567 case MAILIMAP_BODY_TYPE_1PART_BASIC: 567 case MAILIMAP_BODY_TYPE_1PART_BASIC:
568 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic); 568 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic);
569 break; 569 break;
570 case MAILIMAP_BODY_TYPE_1PART_MSG: 570 case MAILIMAP_BODY_TYPE_1PART_MSG:
571 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg); 571 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg);
572 break; 572 break;
573 default: 573 default:
574 break; 574 break;
575 } 575 }
576} 576}
577 577
578void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which) 578void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which)
579{ 579{
580 if (!which) { 580 if (!which) {
581 return; 581 return;
582 } 582 }
583 QString sub; 583 QString sub;
584 sub = which->bd_media_text; 584 sub = which->bd_media_text;
585 target_part.setSubtype(sub.lower()); 585 target_part.setSubtype(sub.lower());
586 target_part.setLines(which->bd_lines); 586 target_part.setLines(which->bd_lines);
587 fillBodyFields(target_part,which->bd_fields); 587 fillBodyFields(target_part,which->bd_fields);
588} 588}
589 589
590void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which) 590void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which)
591{ 591{
592 if (!which) { 592 if (!which) {
593 return; 593 return;
594 } 594 }
595// QString sub; 595// QString sub;
596// sub = which->bd_media_text; 596// sub = which->bd_media_text;
597// target_part.setSubtype(sub.lower()); 597// target_part.setSubtype(sub.lower());
598 qDebug("Message part"); 598 qDebug("Message part");
599 /* we set this type to text/plain */ 599 /* we set this type to text/plain */
600 target_part.setType("text"); 600 target_part.setType("text");
601 target_part.setSubtype("plain"); 601 target_part.setSubtype("plain");
602 target_part.setLines(which->bd_lines); 602 target_part.setLines(which->bd_lines);
603 fillBodyFields(target_part,which->bd_fields); 603 fillBodyFields(target_part,which->bd_fields);
604} 604}
605 605
606void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which) 606void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which)
607{ 607{
608 if (!which) { 608 if (!which) {
609 return; 609 return;
610 } 610 }
611 QString type,sub; 611 QString type,sub;
612 switch (which->bd_media_basic->med_type) { 612 switch (which->bd_media_basic->med_type) {
613 case MAILIMAP_MEDIA_BASIC_APPLICATION: 613 case MAILIMAP_MEDIA_BASIC_APPLICATION:
614 type = "application"; 614 type = "application";
615 break; 615 break;
616 case MAILIMAP_MEDIA_BASIC_AUDIO: 616 case MAILIMAP_MEDIA_BASIC_AUDIO:
617 type = "audio"; 617 type = "audio";
618 break; 618 break;
619 case MAILIMAP_MEDIA_BASIC_IMAGE: 619 case MAILIMAP_MEDIA_BASIC_IMAGE:
620 type = "image"; 620 type = "image";
621 break; 621 break;
622 case MAILIMAP_MEDIA_BASIC_MESSAGE: 622 case MAILIMAP_MEDIA_BASIC_MESSAGE:
623 type = "message"; 623 type = "message";
624 break; 624 break;
625 case MAILIMAP_MEDIA_BASIC_VIDEO: 625 case MAILIMAP_MEDIA_BASIC_VIDEO:
626 type = "video"; 626 type = "video";
627 break; 627 break;
628 case MAILIMAP_MEDIA_BASIC_OTHER: 628 case MAILIMAP_MEDIA_BASIC_OTHER:
629 default: 629 default:
630 if (which->bd_media_basic->med_basic_type) { 630 if (which->bd_media_basic->med_basic_type) {
631 type = which->bd_media_basic->med_basic_type; 631 type = which->bd_media_basic->med_basic_type;
632 } else { 632 } else {
633 type = ""; 633 type = "";
634 } 634 }
635 break; 635 break;
636 } 636 }
637 if (which->bd_media_basic->med_subtype) { 637 if (which->bd_media_basic->med_subtype) {
638 sub = which->bd_media_basic->med_subtype; 638 sub = which->bd_media_basic->med_subtype;
639 } else { 639 } else {
640 sub = ""; 640 sub = "";
641 } 641 }
642 qDebug("Type = %s/%s",type.latin1(),sub.latin1()); 642 qDebug("Type = %s/%s",type.latin1(),sub.latin1());
643 target_part.setType(type.lower()); 643 target_part.setType(type.lower());
644 target_part.setSubtype(sub.lower()); 644 target_part.setSubtype(sub.lower());
645 fillBodyFields(target_part,which->bd_fields); 645 fillBodyFields(target_part,which->bd_fields);
646} 646}
647 647
648void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which) 648void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
649{ 649{
650 if (!which) return; 650 if (!which) return;
651 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) { 651 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) {
652 clistcell*cur; 652 clistcell*cur;
653 mailimap_single_body_fld_param*param=0; 653 mailimap_single_body_fld_param*param=0;
654 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) { 654 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) {
655 param = (mailimap_single_body_fld_param*)cur->data; 655 param = (mailimap_single_body_fld_param*)cur->data;
656 if (param) { 656 if (param) {
657 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 657 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
658 } 658 }
659 } 659 }
660 } 660 }
661 mailimap_body_fld_enc*enc = which->bd_encoding; 661 mailimap_body_fld_enc*enc = which->bd_encoding;
662 QString encoding(""); 662 QString encoding("");
663 switch (enc->enc_type) { 663 switch (enc->enc_type) {
664 case MAILIMAP_BODY_FLD_ENC_7BIT: 664 case MAILIMAP_BODY_FLD_ENC_7BIT:
665 encoding = "7bit"; 665 encoding = "7bit";
666 break; 666 break;
667 case MAILIMAP_BODY_FLD_ENC_8BIT: 667 case MAILIMAP_BODY_FLD_ENC_8BIT:
668 encoding = "8bit"; 668 encoding = "8bit";
669 break; 669 break;
670 case MAILIMAP_BODY_FLD_ENC_BINARY: 670 case MAILIMAP_BODY_FLD_ENC_BINARY:
671 encoding="binary"; 671 encoding="binary";
672 break; 672 break;
673 case MAILIMAP_BODY_FLD_ENC_BASE64: 673 case MAILIMAP_BODY_FLD_ENC_BASE64:
674 encoding="base64"; 674 encoding="base64";
675 break; 675 break;
676 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE: 676 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE:
677 encoding="quoted-printable"; 677 encoding="quoted-printable";
678 break; 678 break;
679 case MAILIMAP_BODY_FLD_ENC_OTHER: 679 case MAILIMAP_BODY_FLD_ENC_OTHER:
680 default: 680 default:
681 if (enc->enc_value) { 681 if (enc->enc_value) {
682 char*t=enc->enc_value; 682 char*t=enc->enc_value;
683 encoding=QString(enc->enc_value); 683 encoding=QString(enc->enc_value);
684 enc->enc_value=0L; 684 enc->enc_value=0L;
685 free(t); 685 free(t);
686 } 686 }
687 } 687 }
688 target_part.setEncoding(encoding); 688 target_part.setEncoding(encoding);
689 target_part.setSize(which->bd_size);
689} 690}
690 691
691QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) 692QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part)
692{ 693{
693 return fetchPart(mail,part.Positionlist(),false); 694 return fetchPart(mail,part.Positionlist(),false);
694} 695}
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index 3941cec..11bf3b8 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -561,134 +561,135 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
561 } 561 }
562 switch (Description->bd_type) { 562 switch (Description->bd_type) {
563 case MAILIMAP_BODY_TYPE_1PART_TEXT: 563 case MAILIMAP_BODY_TYPE_1PART_TEXT:
564 target_part.setType("text"); 564 target_part.setType("text");
565 fillSingleTextPart(target_part,Description->bd_data.bd_type_text); 565 fillSingleTextPart(target_part,Description->bd_data.bd_type_text);
566 break; 566 break;
567 case MAILIMAP_BODY_TYPE_1PART_BASIC: 567 case MAILIMAP_BODY_TYPE_1PART_BASIC:
568 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic); 568 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic);
569 break; 569 break;
570 case MAILIMAP_BODY_TYPE_1PART_MSG: 570 case MAILIMAP_BODY_TYPE_1PART_MSG:
571 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg); 571 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg);
572 break; 572 break;
573 default: 573 default:
574 break; 574 break;
575 } 575 }
576} 576}
577 577
578void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which) 578void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which)
579{ 579{
580 if (!which) { 580 if (!which) {
581 return; 581 return;
582 } 582 }
583 QString sub; 583 QString sub;
584 sub = which->bd_media_text; 584 sub = which->bd_media_text;
585 target_part.setSubtype(sub.lower()); 585 target_part.setSubtype(sub.lower());
586 target_part.setLines(which->bd_lines); 586 target_part.setLines(which->bd_lines);
587 fillBodyFields(target_part,which->bd_fields); 587 fillBodyFields(target_part,which->bd_fields);
588} 588}
589 589
590void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which) 590void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which)
591{ 591{
592 if (!which) { 592 if (!which) {
593 return; 593 return;
594 } 594 }
595// QString sub; 595// QString sub;
596// sub = which->bd_media_text; 596// sub = which->bd_media_text;
597// target_part.setSubtype(sub.lower()); 597// target_part.setSubtype(sub.lower());
598 qDebug("Message part"); 598 qDebug("Message part");
599 /* we set this type to text/plain */ 599 /* we set this type to text/plain */
600 target_part.setType("text"); 600 target_part.setType("text");
601 target_part.setSubtype("plain"); 601 target_part.setSubtype("plain");
602 target_part.setLines(which->bd_lines); 602 target_part.setLines(which->bd_lines);
603 fillBodyFields(target_part,which->bd_fields); 603 fillBodyFields(target_part,which->bd_fields);
604} 604}
605 605
606void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which) 606void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which)
607{ 607{
608 if (!which) { 608 if (!which) {
609 return; 609 return;
610 } 610 }
611 QString type,sub; 611 QString type,sub;
612 switch (which->bd_media_basic->med_type) { 612 switch (which->bd_media_basic->med_type) {
613 case MAILIMAP_MEDIA_BASIC_APPLICATION: 613 case MAILIMAP_MEDIA_BASIC_APPLICATION:
614 type = "application"; 614 type = "application";
615 break; 615 break;
616 case MAILIMAP_MEDIA_BASIC_AUDIO: 616 case MAILIMAP_MEDIA_BASIC_AUDIO:
617 type = "audio"; 617 type = "audio";
618 break; 618 break;
619 case MAILIMAP_MEDIA_BASIC_IMAGE: 619 case MAILIMAP_MEDIA_BASIC_IMAGE:
620 type = "image"; 620 type = "image";
621 break; 621 break;
622 case MAILIMAP_MEDIA_BASIC_MESSAGE: 622 case MAILIMAP_MEDIA_BASIC_MESSAGE:
623 type = "message"; 623 type = "message";
624 break; 624 break;
625 case MAILIMAP_MEDIA_BASIC_VIDEO: 625 case MAILIMAP_MEDIA_BASIC_VIDEO:
626 type = "video"; 626 type = "video";
627 break; 627 break;
628 case MAILIMAP_MEDIA_BASIC_OTHER: 628 case MAILIMAP_MEDIA_BASIC_OTHER:
629 default: 629 default:
630 if (which->bd_media_basic->med_basic_type) { 630 if (which->bd_media_basic->med_basic_type) {
631 type = which->bd_media_basic->med_basic_type; 631 type = which->bd_media_basic->med_basic_type;
632 } else { 632 } else {
633 type = ""; 633 type = "";
634 } 634 }
635 break; 635 break;
636 } 636 }
637 if (which->bd_media_basic->med_subtype) { 637 if (which->bd_media_basic->med_subtype) {
638 sub = which->bd_media_basic->med_subtype; 638 sub = which->bd_media_basic->med_subtype;
639 } else { 639 } else {
640 sub = ""; 640 sub = "";
641 } 641 }
642 qDebug("Type = %s/%s",type.latin1(),sub.latin1()); 642 qDebug("Type = %s/%s",type.latin1(),sub.latin1());
643 target_part.setType(type.lower()); 643 target_part.setType(type.lower());
644 target_part.setSubtype(sub.lower()); 644 target_part.setSubtype(sub.lower());
645 fillBodyFields(target_part,which->bd_fields); 645 fillBodyFields(target_part,which->bd_fields);
646} 646}
647 647
648void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which) 648void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
649{ 649{
650 if (!which) return; 650 if (!which) return;
651 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) { 651 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) {
652 clistcell*cur; 652 clistcell*cur;
653 mailimap_single_body_fld_param*param=0; 653 mailimap_single_body_fld_param*param=0;
654 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) { 654 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) {
655 param = (mailimap_single_body_fld_param*)cur->data; 655 param = (mailimap_single_body_fld_param*)cur->data;
656 if (param) { 656 if (param) {
657 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 657 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
658 } 658 }
659 } 659 }
660 } 660 }
661 mailimap_body_fld_enc*enc = which->bd_encoding; 661 mailimap_body_fld_enc*enc = which->bd_encoding;
662 QString encoding(""); 662 QString encoding("");
663 switch (enc->enc_type) { 663 switch (enc->enc_type) {
664 case MAILIMAP_BODY_FLD_ENC_7BIT: 664 case MAILIMAP_BODY_FLD_ENC_7BIT:
665 encoding = "7bit"; 665 encoding = "7bit";
666 break; 666 break;
667 case MAILIMAP_BODY_FLD_ENC_8BIT: 667 case MAILIMAP_BODY_FLD_ENC_8BIT:
668 encoding = "8bit"; 668 encoding = "8bit";
669 break; 669 break;
670 case MAILIMAP_BODY_FLD_ENC_BINARY: 670 case MAILIMAP_BODY_FLD_ENC_BINARY:
671 encoding="binary"; 671 encoding="binary";
672 break; 672 break;
673 case MAILIMAP_BODY_FLD_ENC_BASE64: 673 case MAILIMAP_BODY_FLD_ENC_BASE64:
674 encoding="base64"; 674 encoding="base64";
675 break; 675 break;
676 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE: 676 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE:
677 encoding="quoted-printable"; 677 encoding="quoted-printable";
678 break; 678 break;
679 case MAILIMAP_BODY_FLD_ENC_OTHER: 679 case MAILIMAP_BODY_FLD_ENC_OTHER:
680 default: 680 default:
681 if (enc->enc_value) { 681 if (enc->enc_value) {
682 char*t=enc->enc_value; 682 char*t=enc->enc_value;
683 encoding=QString(enc->enc_value); 683 encoding=QString(enc->enc_value);
684 enc->enc_value=0L; 684 enc->enc_value=0L;
685 free(t); 685 free(t);
686 } 686 }
687 } 687 }
688 target_part.setEncoding(encoding); 688 target_part.setEncoding(encoding);
689 target_part.setSize(which->bd_size);
689} 690}
690 691
691QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) 692QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part)
692{ 693{
693 return fetchPart(mail,part.Positionlist(),false); 694 return fetchPart(mail,part.Positionlist(),false);
694} 695}
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.cpp b/noncore/net/mail/libmailwrapper/mailtypes.cpp
index 9c312e9..5cd45ed 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.cpp
+++ b/noncore/net/mail/libmailwrapper/mailtypes.cpp
@@ -1,208 +1,218 @@
1#include "mailtypes.h" 1#include "mailtypes.h"
2 2
3 3
4RecMail::RecMail() 4RecMail::RecMail()
5 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7) 5 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7)
6{ 6{
7 init(); 7 init();
8} 8}
9 9
10RecMail::RecMail(const RecMail&old) 10RecMail::RecMail(const RecMail&old)
11 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7) 11 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7)
12{ 12{
13 init(); 13 init();
14 copy_old(old); 14 copy_old(old);
15 qDebug("Copy constructor RecMail"); 15 qDebug("Copy constructor RecMail");
16} 16}
17 17
18void RecMail::copy_old(const RecMail&old) 18void RecMail::copy_old(const RecMail&old)
19{ 19{
20 subject = old.subject; 20 subject = old.subject;
21 date = old.date; 21 date = old.date;
22 mbox = old.mbox; 22 mbox = old.mbox;
23 msg_id = old.msg_id; 23 msg_id = old.msg_id;
24 msg_size = old.msg_size; 24 msg_size = old.msg_size;
25 msg_number = old.msg_number; 25 msg_number = old.msg_number;
26 from = old.from; 26 from = old.from;
27 msg_flags = old.msg_flags; 27 msg_flags = old.msg_flags;
28 to = old.to; 28 to = old.to;
29 cc = old.cc; 29 cc = old.cc;
30 bcc = old.bcc; 30 bcc = old.bcc;
31} 31}
32 32
33void RecMail::init() 33void RecMail::init()
34{ 34{
35 to.clear(); 35 to.clear();
36 cc.clear(); 36 cc.clear();
37 bcc.clear(); 37 bcc.clear();
38} 38}
39 39
40void RecMail::setTo(const QStringList&list) 40void RecMail::setTo(const QStringList&list)
41{ 41{
42 to = list; 42 to = list;
43} 43}
44 44
45const QStringList&RecMail::To()const 45const QStringList&RecMail::To()const
46{ 46{
47 return to; 47 return to;
48} 48}
49 49
50void RecMail::setCC(const QStringList&list) 50void RecMail::setCC(const QStringList&list)
51{ 51{
52 cc = list; 52 cc = list;
53} 53}
54 54
55const QStringList&RecMail::CC()const 55const QStringList&RecMail::CC()const
56{ 56{
57 return cc; 57 return cc;
58} 58}
59 59
60void RecMail::setBcc(const QStringList&list) 60void RecMail::setBcc(const QStringList&list)
61{ 61{
62 bcc = list; 62 bcc = list;
63} 63}
64 64
65const QStringList& RecMail::Bcc()const 65const QStringList& RecMail::Bcc()const
66{ 66{
67 return bcc; 67 return bcc;
68} 68}
69 69
70RecPart::RecPart() 70RecPart::RecPart()
71 : m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_lines(0) 71 : m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_lines(0),m_size(0)
72{ 72{
73 m_Parameters.clear(); 73 m_Parameters.clear();
74 m_poslist.clear(); 74 m_poslist.clear();
75} 75}
76 76
77RecPart::~RecPart() 77RecPart::~RecPart()
78{ 78{
79} 79}
80 80
81void RecPart::setSize(unsigned int size)
82{
83 m_size = size;
84}
85
86const unsigned int RecPart::Size()const
87{
88 return m_size;
89}
90
81void RecPart::setLines(unsigned int lines) 91void RecPart::setLines(unsigned int lines)
82{ 92{
83 m_lines = lines; 93 m_lines = lines;
84} 94}
85 95
86const unsigned int RecPart::Lines()const 96const unsigned int RecPart::Lines()const
87{ 97{
88 return m_lines; 98 return m_lines;
89} 99}
90 100
91const QString& RecPart::Type()const 101const QString& RecPart::Type()const
92{ 102{
93 return m_type; 103 return m_type;
94} 104}
95 105
96void RecPart::setType(const QString&type) 106void RecPart::setType(const QString&type)
97{ 107{
98 m_type = type; 108 m_type = type;
99} 109}
100 110
101const QString& RecPart::Subtype()const 111const QString& RecPart::Subtype()const
102{ 112{
103 return m_subtype; 113 return m_subtype;
104} 114}
105 115
106void RecPart::setSubtype(const QString&subtype) 116void RecPart::setSubtype(const QString&subtype)
107{ 117{
108 m_subtype = subtype; 118 m_subtype = subtype;
109} 119}
110 120
111const QString& RecPart::Identifier()const 121const QString& RecPart::Identifier()const
112{ 122{
113 return m_identifier; 123 return m_identifier;
114} 124}
115 125
116void RecPart::setIdentifier(const QString&identifier) 126void RecPart::setIdentifier(const QString&identifier)
117{ 127{
118 m_identifier = identifier; 128 m_identifier = identifier;
119} 129}
120 130
121const QString& RecPart::Encoding()const 131const QString& RecPart::Encoding()const
122{ 132{
123 return m_encoding; 133 return m_encoding;
124} 134}
125 135
126void RecPart::setEncoding(const QString&encoding) 136void RecPart::setEncoding(const QString&encoding)
127{ 137{
128 m_encoding = encoding; 138 m_encoding = encoding;
129} 139}
130 140
131void RecPart::setParameters(const part_plist_t&list) 141void RecPart::setParameters(const part_plist_t&list)
132{ 142{
133 m_Parameters = list; 143 m_Parameters = list;
134} 144}
135 145
136const part_plist_t& RecPart::Parameters()const 146const part_plist_t& RecPart::Parameters()const
137{ 147{
138 return m_Parameters; 148 return m_Parameters;
139} 149}
140 150
141void RecPart::addParameter(const QString&key,const QString&value) 151void RecPart::addParameter(const QString&key,const QString&value)
142{ 152{
143 m_Parameters[key]=value; 153 m_Parameters[key]=value;
144} 154}
145 155
146const QString RecPart::searchParamter(const QString&key)const 156const QString RecPart::searchParamter(const QString&key)const
147{ 157{
148 QString value(""); 158 QString value("");
149 part_plist_t::ConstIterator it = m_Parameters.find(key); 159 part_plist_t::ConstIterator it = m_Parameters.find(key);
150 if (it != m_Parameters.end()) { 160 if (it != m_Parameters.end()) {
151 value = it.data(); 161 value = it.data();
152 } 162 }
153 return value; 163 return value;
154} 164}
155 165
156void RecPart::setPositionlist(const QValueList<int>&poslist) 166void RecPart::setPositionlist(const QValueList<int>&poslist)
157{ 167{
158 m_poslist = poslist; 168 m_poslist = poslist;
159} 169}
160 170
161const QValueList<int>& RecPart::Positionlist()const 171const QValueList<int>& RecPart::Positionlist()const
162{ 172{
163 return m_poslist; 173 return m_poslist;
164} 174}
165 175
166RecBody::RecBody() 176RecBody::RecBody()
167 : m_BodyText(),m_PartsList(),m_description() 177 : m_BodyText(),m_PartsList(),m_description()
168{ 178{
169 m_PartsList.clear(); 179 m_PartsList.clear();
170} 180}
171 181
172RecBody::~RecBody() 182RecBody::~RecBody()
173{ 183{
174} 184}
175 185
176void RecBody::setBodytext(const QString&bodyText) 186void RecBody::setBodytext(const QString&bodyText)
177{ 187{
178 m_BodyText = bodyText; 188 m_BodyText = bodyText;
179} 189}
180 190
181const QString& RecBody::Bodytext()const 191const QString& RecBody::Bodytext()const
182{ 192{
183 return m_BodyText; 193 return m_BodyText;
184} 194}
185 195
186void RecBody::setParts(const QValueList<RecPart>&parts) 196void RecBody::setParts(const QValueList<RecPart>&parts)
187{ 197{
188 m_PartsList.clear(); 198 m_PartsList.clear();
189 m_PartsList = parts; 199 m_PartsList = parts;
190} 200}
191 201
192const QValueList<RecPart>& RecBody::Parts()const 202const QValueList<RecPart>& RecBody::Parts()const
193{ 203{
194 return m_PartsList; 204 return m_PartsList;
195} 205}
196 206
197void RecBody::addPart(const RecPart& part) 207void RecBody::addPart(const RecPart& part)
198{ 208{
199 m_PartsList.append(part); 209 m_PartsList.append(part);
200} 210}
201 211
202void RecBody::setDescription(const RecPart&des) 212void RecBody::setDescription(const RecPart&des)
203{ 213{
204 m_description = des; 214 m_description = des;
205} 215}
206 216
207const RecPart& RecBody::Description()const 217const RecPart& RecBody::Description()const
208{ 218{
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
index f308bc7..24518cf 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.h
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -1,128 +1,131 @@
1#ifndef __MAIL_TYPES_H 1#ifndef __MAIL_TYPES_H
2#define __MAIL_TYPES_H 2#define __MAIL_TYPES_H
3 3
4#define FLAG_ANSWERED 0 4#define FLAG_ANSWERED 0
5#define FLAG_FLAGGED 1 5#define FLAG_FLAGGED 1
6#define FLAG_DELETED 2 6#define FLAG_DELETED 2
7#define FLAG_SEEN 3 7#define FLAG_SEEN 3
8#define FLAG_DRAFT 4 8#define FLAG_DRAFT 4
9#define FLAG_RECENT 5 9#define FLAG_RECENT 5
10 10
11#include <qlist.h> 11#include <qlist.h>
12#include <qbitarray.h> 12#include <qbitarray.h>
13#include <qstring.h> 13#include <qstring.h>
14#include <qstringlist.h> 14#include <qstringlist.h>
15#include <qmap.h> 15#include <qmap.h>
16#include <qvaluelist.h> 16#include <qvaluelist.h>
17 17
18/* a class to describe mails in a mailbox */ 18/* a class to describe mails in a mailbox */
19/* Attention! 19/* Attention!
20 From programmers point of view it would make sense to 20 From programmers point of view it would make sense to
21 store the mail body into this class, too. 21 store the mail body into this class, too.
22 But: not from the point of view of the device. 22 But: not from the point of view of the device.
23 Mailbodies can be real large. So we request them when 23 Mailbodies can be real large. So we request them when
24 needed from the mail-wrapper class direct from the server itself 24 needed from the mail-wrapper class direct from the server itself
25 (imap) or from a file-based cache (pop3?) 25 (imap) or from a file-based cache (pop3?)
26 So there is no interface "const QString&body()" but you should 26 So there is no interface "const QString&body()" but you should
27 make a request to the mailwrapper with this class as parameter to 27 make a request to the mailwrapper with this class as parameter to
28 get the body. Same words for the attachments. 28 get the body. Same words for the attachments.
29*/ 29*/
30class RecMail 30class RecMail
31{ 31{
32public: 32public:
33 RecMail(); 33 RecMail();
34 RecMail(const RecMail&old); 34 RecMail(const RecMail&old);
35 virtual ~RecMail(){} 35 virtual ~RecMail(){}
36 36
37 const int getNumber()const{return msg_number;} 37 const int getNumber()const{return msg_number;}
38 void setNumber(int number){msg_number=number;} 38 void setNumber(int number){msg_number=number;}
39 const QString&getDate()const{ return date; } 39 const QString&getDate()const{ return date; }
40 void setDate( const QString&a ) { date = a; } 40 void setDate( const QString&a ) { date = a; }
41 const QString&getFrom()const{ return from; } 41 const QString&getFrom()const{ return from; }
42 void setFrom( const QString&a ) { from = a; } 42 void setFrom( const QString&a ) { from = a; }
43 const QString&getSubject()const { return subject; } 43 const QString&getSubject()const { return subject; }
44 void setSubject( const QString&s ) { subject = s; } 44 void setSubject( const QString&s ) { subject = s; }
45 const QString&getMbox()const{return mbox;} 45 const QString&getMbox()const{return mbox;}
46 void setMbox(const QString&box){mbox = box;} 46 void setMbox(const QString&box){mbox = box;}
47 void setMsgid(const QString&id){msg_id=id;} 47 void setMsgid(const QString&id){msg_id=id;}
48 const QString&Msgid()const{return msg_id;} 48 const QString&Msgid()const{return msg_id;}
49 void setReplyto(const QString&reply){replyto=reply;} 49 void setReplyto(const QString&reply){replyto=reply;}
50 const QString&Replyto()const{return replyto;} 50 const QString&Replyto()const{return replyto;}
51 void setMsgsize(int size){msg_size = size;} 51 void setMsgsize(int size){msg_size = size;}
52 const int Msgsize()const{return msg_size;} 52 const int Msgsize()const{return msg_size;}
53 53
54 54
55 void setTo(const QStringList&list); 55 void setTo(const QStringList&list);
56 const QStringList&To()const; 56 const QStringList&To()const;
57 void setCC(const QStringList&list); 57 void setCC(const QStringList&list);
58 const QStringList&CC()const; 58 const QStringList&CC()const;
59 void setBcc(const QStringList&list); 59 void setBcc(const QStringList&list);
60 const QStringList&Bcc()const; 60 const QStringList&Bcc()const;
61 const QBitArray&getFlags()const{return msg_flags;} 61 const QBitArray&getFlags()const{return msg_flags;}
62 void setFlags(const QBitArray&flags){msg_flags = flags;} 62 void setFlags(const QBitArray&flags){msg_flags = flags;}
63 63
64protected: 64protected:
65 QString subject,date,from,mbox,msg_id,replyto; 65 QString subject,date,from,mbox,msg_id,replyto;
66 int msg_number,msg_size; 66 int msg_number,msg_size;
67 QBitArray msg_flags; 67 QBitArray msg_flags;
68 QStringList to,cc,bcc; 68 QStringList to,cc,bcc;
69 void init(); 69 void init();
70 void copy_old(const RecMail&old); 70 void copy_old(const RecMail&old);
71}; 71};
72 72
73typedef QMap<QString,QString> part_plist_t; 73typedef QMap<QString,QString> part_plist_t;
74 74
75class RecPart 75class RecPart
76{ 76{
77protected: 77protected:
78 QString m_type,m_subtype,m_identifier,m_encoding; 78 QString m_type,m_subtype,m_identifier,m_encoding;
79 unsigned int m_lines; 79 unsigned int m_lines,m_size;
80 part_plist_t m_Parameters; 80 part_plist_t m_Parameters;
81 /* describes the position in the mail */ 81 /* describes the position in the mail */
82 QValueList<int> m_poslist; 82 QValueList<int> m_poslist;
83 83
84public: 84public:
85 RecPart(); 85 RecPart();
86 virtual ~RecPart(); 86 virtual ~RecPart();
87 87
88 const QString&Type()const; 88 const QString&Type()const;
89 void setType(const QString&type); 89 void setType(const QString&type);
90 const QString&Subtype()const; 90 const QString&Subtype()const;
91 void setSubtype(const QString&subtype); 91 void setSubtype(const QString&subtype);
92 const QString&Identifier()const; 92 const QString&Identifier()const;
93 void setIdentifier(const QString&identifier); 93 void setIdentifier(const QString&identifier);
94 const QString&Encoding()const; 94 const QString&Encoding()const;
95 void setEncoding(const QString&encoding); 95 void setEncoding(const QString&encoding);
96 void setLines(unsigned int lines); 96 void setLines(unsigned int lines);
97 const unsigned int Lines()const; 97 const unsigned int Lines()const;
98 void setSize(unsigned int size);
99 const unsigned int Size()const;
100
98 101
99 void setParameters(const part_plist_t&list); 102 void setParameters(const part_plist_t&list);
100 const part_plist_t&Parameters()const; 103 const part_plist_t&Parameters()const;
101 void addParameter(const QString&key,const QString&value); 104 void addParameter(const QString&key,const QString&value);
102 const QString searchParamter(const QString&key)const; 105 const QString searchParamter(const QString&key)const;
103 void setPositionlist(const QValueList<int>&poslist); 106 void setPositionlist(const QValueList<int>&poslist);
104 const QValueList<int>& Positionlist()const; 107 const QValueList<int>& Positionlist()const;
105}; 108};
106 109
107class RecBody 110class RecBody
108{ 111{
109protected: 112protected:
110 QString m_BodyText; 113 QString m_BodyText;
111 QValueList<RecPart> m_PartsList; 114 QValueList<RecPart> m_PartsList;
112 RecPart m_description; 115 RecPart m_description;
113 116
114public: 117public:
115 RecBody(); 118 RecBody();
116 virtual ~RecBody(); 119 virtual ~RecBody();
117 void setBodytext(const QString&); 120 void setBodytext(const QString&);
118 const QString& Bodytext()const; 121 const QString& Bodytext()const;
119 122
120 void setDescription(const RecPart&des); 123 void setDescription(const RecPart&des);
121 const RecPart& Description()const; 124 const RecPart& Description()const;
122 125
123 void setParts(const QValueList<RecPart>&parts); 126 void setParts(const QValueList<RecPart>&parts);
124 const QValueList<RecPart>& Parts()const; 127 const QValueList<RecPart>& Parts()const;
125 void addPart(const RecPart&part); 128 void addPart(const RecPart&part);
126}; 129};
127 130
128#endif 131#endif
diff --git a/noncore/net/mail/mailtypes.cpp b/noncore/net/mail/mailtypes.cpp
index 9c312e9..5cd45ed 100644
--- a/noncore/net/mail/mailtypes.cpp
+++ b/noncore/net/mail/mailtypes.cpp
@@ -1,208 +1,218 @@
1#include "mailtypes.h" 1#include "mailtypes.h"
2 2
3 3
4RecMail::RecMail() 4RecMail::RecMail()
5 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7) 5 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7)
6{ 6{
7 init(); 7 init();
8} 8}
9 9
10RecMail::RecMail(const RecMail&old) 10RecMail::RecMail(const RecMail&old)
11 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7) 11 :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7)
12{ 12{
13 init(); 13 init();
14 copy_old(old); 14 copy_old(old);
15 qDebug("Copy constructor RecMail"); 15 qDebug("Copy constructor RecMail");
16} 16}
17 17
18void RecMail::copy_old(const RecMail&old) 18void RecMail::copy_old(const RecMail&old)
19{ 19{
20 subject = old.subject; 20 subject = old.subject;
21 date = old.date; 21 date = old.date;
22 mbox = old.mbox; 22 mbox = old.mbox;
23 msg_id = old.msg_id; 23 msg_id = old.msg_id;
24 msg_size = old.msg_size; 24 msg_size = old.msg_size;
25 msg_number = old.msg_number; 25 msg_number = old.msg_number;
26 from = old.from; 26 from = old.from;
27 msg_flags = old.msg_flags; 27 msg_flags = old.msg_flags;
28 to = old.to; 28 to = old.to;
29 cc = old.cc; 29 cc = old.cc;
30 bcc = old.bcc; 30 bcc = old.bcc;
31} 31}
32 32
33void RecMail::init() 33void RecMail::init()
34{ 34{
35 to.clear(); 35 to.clear();
36 cc.clear(); 36 cc.clear();
37 bcc.clear(); 37 bcc.clear();
38} 38}
39 39
40void RecMail::setTo(const QStringList&list) 40void RecMail::setTo(const QStringList&list)
41{ 41{
42 to = list; 42 to = list;
43} 43}
44 44
45const QStringList&RecMail::To()const 45const QStringList&RecMail::To()const
46{ 46{
47 return to; 47 return to;
48} 48}
49 49
50void RecMail::setCC(const QStringList&list) 50void RecMail::setCC(const QStringList&list)
51{ 51{
52 cc = list; 52 cc = list;
53} 53}
54 54
55const QStringList&RecMail::CC()const 55const QStringList&RecMail::CC()const
56{ 56{
57 return cc; 57 return cc;
58} 58}
59 59
60void RecMail::setBcc(const QStringList&list) 60void RecMail::setBcc(const QStringList&list)
61{ 61{
62 bcc = list; 62 bcc = list;
63} 63}
64 64
65const QStringList& RecMail::Bcc()const 65const QStringList& RecMail::Bcc()const
66{ 66{
67 return bcc; 67 return bcc;
68} 68}
69 69
70RecPart::RecPart() 70RecPart::RecPart()
71 : m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_lines(0) 71 : m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_lines(0),m_size(0)
72{ 72{
73 m_Parameters.clear(); 73 m_Parameters.clear();
74 m_poslist.clear(); 74 m_poslist.clear();
75} 75}
76 76
77RecPart::~RecPart() 77RecPart::~RecPart()
78{ 78{
79} 79}
80 80
81void RecPart::setSize(unsigned int size)
82{
83 m_size = size;
84}
85
86const unsigned int RecPart::Size()const
87{
88 return m_size;
89}
90
81void RecPart::setLines(unsigned int lines) 91void RecPart::setLines(unsigned int lines)
82{ 92{
83 m_lines = lines; 93 m_lines = lines;
84} 94}
85 95
86const unsigned int RecPart::Lines()const 96const unsigned int RecPart::Lines()const
87{ 97{
88 return m_lines; 98 return m_lines;
89} 99}
90 100
91const QString& RecPart::Type()const 101const QString& RecPart::Type()const
92{ 102{
93 return m_type; 103 return m_type;
94} 104}
95 105
96void RecPart::setType(const QString&type) 106void RecPart::setType(const QString&type)
97{ 107{
98 m_type = type; 108 m_type = type;
99} 109}
100 110
101const QString& RecPart::Subtype()const 111const QString& RecPart::Subtype()const
102{ 112{
103 return m_subtype; 113 return m_subtype;
104} 114}
105 115
106void RecPart::setSubtype(const QString&subtype) 116void RecPart::setSubtype(const QString&subtype)
107{ 117{
108 m_subtype = subtype; 118 m_subtype = subtype;
109} 119}
110 120
111const QString& RecPart::Identifier()const 121const QString& RecPart::Identifier()const
112{ 122{
113 return m_identifier; 123 return m_identifier;
114} 124}
115 125
116void RecPart::setIdentifier(const QString&identifier) 126void RecPart::setIdentifier(const QString&identifier)
117{ 127{
118 m_identifier = identifier; 128 m_identifier = identifier;
119} 129}
120 130
121const QString& RecPart::Encoding()const 131const QString& RecPart::Encoding()const
122{ 132{
123 return m_encoding; 133 return m_encoding;
124} 134}
125 135
126void RecPart::setEncoding(const QString&encoding) 136void RecPart::setEncoding(const QString&encoding)
127{ 137{
128 m_encoding = encoding; 138 m_encoding = encoding;
129} 139}
130 140
131void RecPart::setParameters(const part_plist_t&list) 141void RecPart::setParameters(const part_plist_t&list)
132{ 142{
133 m_Parameters = list; 143 m_Parameters = list;
134} 144}
135 145
136const part_plist_t& RecPart::Parameters()const 146const part_plist_t& RecPart::Parameters()const
137{ 147{
138 return m_Parameters; 148 return m_Parameters;
139} 149}
140 150
141void RecPart::addParameter(const QString&key,const QString&value) 151void RecPart::addParameter(const QString&key,const QString&value)
142{ 152{
143 m_Parameters[key]=value; 153 m_Parameters[key]=value;
144} 154}
145 155
146const QString RecPart::searchParamter(const QString&key)const 156const QString RecPart::searchParamter(const QString&key)const
147{ 157{
148 QString value(""); 158 QString value("");
149 part_plist_t::ConstIterator it = m_Parameters.find(key); 159 part_plist_t::ConstIterator it = m_Parameters.find(key);
150 if (it != m_Parameters.end()) { 160 if (it != m_Parameters.end()) {
151 value = it.data(); 161 value = it.data();
152 } 162 }
153 return value; 163 return value;
154} 164}
155 165
156void RecPart::setPositionlist(const QValueList<int>&poslist) 166void RecPart::setPositionlist(const QValueList<int>&poslist)
157{ 167{
158 m_poslist = poslist; 168 m_poslist = poslist;
159} 169}
160 170
161const QValueList<int>& RecPart::Positionlist()const 171const QValueList<int>& RecPart::Positionlist()const
162{ 172{
163 return m_poslist; 173 return m_poslist;
164} 174}
165 175
166RecBody::RecBody() 176RecBody::RecBody()
167 : m_BodyText(),m_PartsList(),m_description() 177 : m_BodyText(),m_PartsList(),m_description()
168{ 178{
169 m_PartsList.clear(); 179 m_PartsList.clear();
170} 180}
171 181
172RecBody::~RecBody() 182RecBody::~RecBody()
173{ 183{
174} 184}
175 185
176void RecBody::setBodytext(const QString&bodyText) 186void RecBody::setBodytext(const QString&bodyText)
177{ 187{
178 m_BodyText = bodyText; 188 m_BodyText = bodyText;
179} 189}
180 190
181const QString& RecBody::Bodytext()const 191const QString& RecBody::Bodytext()const
182{ 192{
183 return m_BodyText; 193 return m_BodyText;
184} 194}
185 195
186void RecBody::setParts(const QValueList<RecPart>&parts) 196void RecBody::setParts(const QValueList<RecPart>&parts)
187{ 197{
188 m_PartsList.clear(); 198 m_PartsList.clear();
189 m_PartsList = parts; 199 m_PartsList = parts;
190} 200}
191 201
192const QValueList<RecPart>& RecBody::Parts()const 202const QValueList<RecPart>& RecBody::Parts()const
193{ 203{
194 return m_PartsList; 204 return m_PartsList;
195} 205}
196 206
197void RecBody::addPart(const RecPart& part) 207void RecBody::addPart(const RecPart& part)
198{ 208{
199 m_PartsList.append(part); 209 m_PartsList.append(part);
200} 210}
201 211
202void RecBody::setDescription(const RecPart&des) 212void RecBody::setDescription(const RecPart&des)
203{ 213{
204 m_description = des; 214 m_description = des;
205} 215}
206 216
207const RecPart& RecBody::Description()const 217const RecPart& RecBody::Description()const
208{ 218{
diff --git a/noncore/net/mail/mailtypes.h b/noncore/net/mail/mailtypes.h
index f308bc7..24518cf 100644
--- a/noncore/net/mail/mailtypes.h
+++ b/noncore/net/mail/mailtypes.h
@@ -1,128 +1,131 @@
1#ifndef __MAIL_TYPES_H 1#ifndef __MAIL_TYPES_H
2#define __MAIL_TYPES_H 2#define __MAIL_TYPES_H
3 3
4#define FLAG_ANSWERED 0 4#define FLAG_ANSWERED 0
5#define FLAG_FLAGGED 1 5#define FLAG_FLAGGED 1
6#define FLAG_DELETED 2 6#define FLAG_DELETED 2
7#define FLAG_SEEN 3 7#define FLAG_SEEN 3
8#define FLAG_DRAFT 4 8#define FLAG_DRAFT 4
9#define FLAG_RECENT 5 9#define FLAG_RECENT 5
10 10
11#include <qlist.h> 11#include <qlist.h>
12#include <qbitarray.h> 12#include <qbitarray.h>
13#include <qstring.h> 13#include <qstring.h>
14#include <qstringlist.h> 14#include <qstringlist.h>
15#include <qmap.h> 15#include <qmap.h>
16#include <qvaluelist.h> 16#include <qvaluelist.h>
17 17
18/* a class to describe mails in a mailbox */ 18/* a class to describe mails in a mailbox */
19/* Attention! 19/* Attention!
20 From programmers point of view it would make sense to 20 From programmers point of view it would make sense to
21 store the mail body into this class, too. 21 store the mail body into this class, too.
22 But: not from the point of view of the device. 22 But: not from the point of view of the device.
23 Mailbodies can be real large. So we request them when 23 Mailbodies can be real large. So we request them when
24 needed from the mail-wrapper class direct from the server itself 24 needed from the mail-wrapper class direct from the server itself
25 (imap) or from a file-based cache (pop3?) 25 (imap) or from a file-based cache (pop3?)
26 So there is no interface "const QString&body()" but you should 26 So there is no interface "const QString&body()" but you should
27 make a request to the mailwrapper with this class as parameter to 27 make a request to the mailwrapper with this class as parameter to
28 get the body. Same words for the attachments. 28 get the body. Same words for the attachments.
29*/ 29*/
30class RecMail 30class RecMail
31{ 31{
32public: 32public:
33 RecMail(); 33 RecMail();
34 RecMail(const RecMail&old); 34 RecMail(const RecMail&old);
35 virtual ~RecMail(){} 35 virtual ~RecMail(){}
36 36
37 const int getNumber()const{return msg_number;} 37 const int getNumber()const{return msg_number;}
38 void setNumber(int number){msg_number=number;} 38 void setNumber(int number){msg_number=number;}
39 const QString&getDate()const{ return date; } 39 const QString&getDate()const{ return date; }
40 void setDate( const QString&a ) { date = a; } 40 void setDate( const QString&a ) { date = a; }
41 const QString&getFrom()const{ return from; } 41 const QString&getFrom()const{ return from; }
42 void setFrom( const QString&a ) { from = a; } 42 void setFrom( const QString&a ) { from = a; }
43 const QString&getSubject()const { return subject; } 43 const QString&getSubject()const { return subject; }
44 void setSubject( const QString&s ) { subject = s; } 44 void setSubject( const QString&s ) { subject = s; }
45 const QString&getMbox()const{return mbox;} 45 const QString&getMbox()const{return mbox;}
46 void setMbox(const QString&box){mbox = box;} 46 void setMbox(const QString&box){mbox = box;}
47 void setMsgid(const QString&id){msg_id=id;} 47 void setMsgid(const QString&id){msg_id=id;}
48 const QString&Msgid()const{return msg_id;} 48 const QString&Msgid()const{return msg_id;}
49 void setReplyto(const QString&reply){replyto=reply;} 49 void setReplyto(const QString&reply){replyto=reply;}
50 const QString&Replyto()const{return replyto;} 50 const QString&Replyto()const{return replyto;}
51 void setMsgsize(int size){msg_size = size;} 51 void setMsgsize(int size){msg_size = size;}
52 const int Msgsize()const{return msg_size;} 52 const int Msgsize()const{return msg_size;}
53 53
54 54
55 void setTo(const QStringList&list); 55 void setTo(const QStringList&list);
56 const QStringList&To()const; 56 const QStringList&To()const;
57 void setCC(const QStringList&list); 57 void setCC(const QStringList&list);
58 const QStringList&CC()const; 58 const QStringList&CC()const;
59 void setBcc(const QStringList&list); 59 void setBcc(const QStringList&list);
60 const QStringList&Bcc()const; 60 const QStringList&Bcc()const;
61 const QBitArray&getFlags()const{return msg_flags;} 61 const QBitArray&getFlags()const{return msg_flags;}
62 void setFlags(const QBitArray&flags){msg_flags = flags;} 62 void setFlags(const QBitArray&flags){msg_flags = flags;}
63 63
64protected: 64protected:
65 QString subject,date,from,mbox,msg_id,replyto; 65 QString subject,date,from,mbox,msg_id,replyto;
66 int msg_number,msg_size; 66 int msg_number,msg_size;
67 QBitArray msg_flags; 67 QBitArray msg_flags;
68 QStringList to,cc,bcc; 68 QStringList to,cc,bcc;
69 void init(); 69 void init();
70 void copy_old(const RecMail&old); 70 void copy_old(const RecMail&old);
71}; 71};
72 72
73typedef QMap<QString,QString> part_plist_t; 73typedef QMap<QString,QString> part_plist_t;
74 74
75class RecPart 75class RecPart
76{ 76{
77protected: 77protected:
78 QString m_type,m_subtype,m_identifier,m_encoding; 78 QString m_type,m_subtype,m_identifier,m_encoding;
79 unsigned int m_lines; 79 unsigned int m_lines,m_size;
80 part_plist_t m_Parameters; 80 part_plist_t m_Parameters;
81 /* describes the position in the mail */ 81 /* describes the position in the mail */
82 QValueList<int> m_poslist; 82 QValueList<int> m_poslist;
83 83
84public: 84public:
85 RecPart(); 85 RecPart();
86 virtual ~RecPart(); 86 virtual ~RecPart();
87 87
88 const QString&Type()const; 88 const QString&Type()const;
89 void setType(const QString&type); 89 void setType(const QString&type);
90 const QString&Subtype()const; 90 const QString&Subtype()const;
91 void setSubtype(const QString&subtype); 91 void setSubtype(const QString&subtype);
92 const QString&Identifier()const; 92 const QString&Identifier()const;
93 void setIdentifier(const QString&identifier); 93 void setIdentifier(const QString&identifier);
94 const QString&Encoding()const; 94 const QString&Encoding()const;
95 void setEncoding(const QString&encoding); 95 void setEncoding(const QString&encoding);
96 void setLines(unsigned int lines); 96 void setLines(unsigned int lines);
97 const unsigned int Lines()const; 97 const unsigned int Lines()const;
98 void setSize(unsigned int size);
99 const unsigned int Size()const;
100
98 101
99 void setParameters(const part_plist_t&list); 102 void setParameters(const part_plist_t&list);
100 const part_plist_t&Parameters()const; 103 const part_plist_t&Parameters()const;
101 void addParameter(const QString&key,const QString&value); 104 void addParameter(const QString&key,const QString&value);
102 const QString searchParamter(const QString&key)const; 105 const QString searchParamter(const QString&key)const;
103 void setPositionlist(const QValueList<int>&poslist); 106 void setPositionlist(const QValueList<int>&poslist);
104 const QValueList<int>& Positionlist()const; 107 const QValueList<int>& Positionlist()const;
105}; 108};
106 109
107class RecBody 110class RecBody
108{ 111{
109protected: 112protected:
110 QString m_BodyText; 113 QString m_BodyText;
111 QValueList<RecPart> m_PartsList; 114 QValueList<RecPart> m_PartsList;
112 RecPart m_description; 115 RecPart m_description;
113 116
114public: 117public:
115 RecBody(); 118 RecBody();
116 virtual ~RecBody(); 119 virtual ~RecBody();
117 void setBodytext(const QString&); 120 void setBodytext(const QString&);
118 const QString& Bodytext()const; 121 const QString& Bodytext()const;
119 122
120 void setDescription(const RecPart&des); 123 void setDescription(const RecPart&des);
121 const RecPart& Description()const; 124 const RecPart& Description()const;
122 125
123 void setParts(const QValueList<RecPart>&parts); 126 void setParts(const QValueList<RecPart>&parts);
124 const QValueList<RecPart>& Parts()const; 127 const QValueList<RecPart>& Parts()const;
125 void addPart(const RecPart&part); 128 void addPart(const RecPart&part);
126}; 129};
127 130
128#endif 131#endif
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index 7b8494d..39c9820 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -1,158 +1,226 @@
1#include <qtextbrowser.h> 1#include <qtextbrowser.h>
2#include <qmessagebox.h> 2#include <qmessagebox.h>
3#include <qtextstream.h>
3#include <qaction.h> 4#include <qaction.h>
4#include <qapplication.h> 5#include <qapplication.h>
5 6
6#include "settings.h" 7#include "settings.h"
7#include "composemail.h" 8#include "composemail.h"
8#include "viewmail.h" 9#include "viewmail.h"
9 10
10AttachItem::AttachItem(QListView *parent, AttachItemStore &attachItemStore) 11AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&file,const QString&desc,int num)
11 : QListViewItem(parent), _attachItemStore(attachItemStore) 12 : QListViewItem(parent,after),_partNum(num)
12{ 13{
13 setText(0, _attachItemStore.mimeType()); 14 setText(0, mime);
14 setText(1, _attachItemStore.fileName()); 15 setText(1, file);
15 setText(2, _attachItemStore.description()); 16 setText(2, desc);
16}
17
18AttachItem::AttachItem(QListViewItem *parent, AttachItemStore &attachItemStore)
19 : QListViewItem(parent), _attachItemStore(attachItemStore)
20{
21 setText(0, _attachItemStore.mimeType());
22 setText(1, _attachItemStore.fileName());
23 setText(2, _attachItemStore.description());
24} 17}
25 18
26 19
27void ViewMail::setBody( RecBody body ) { 20void ViewMail::setBody( RecBody body ) {
28 21
29m_mail[2] = body.Bodytext(); 22m_mail[2] = body.Bodytext();
23attachbutton->setEnabled(body.Parts().count()>0);
24attachments->setEnabled(body.Parts().count()>0);
25if (body.Parts().count()==0) {
26 return;
27}
28AttachItem * curItem=0;
29QString type=body.Description().Type()+"/"+body.Description().Subtype();
30QString desc;
31double s = body.Description().Size();
32int w;
33w=0;
34
35while (s>1024) {
36 s/=1024;
37 ++w;
38 if (w>=2) break;
39}
30 40
41QString q="";
42switch(w) {
43case 1:
44 q="k";
45 break;
46case 2:
47 q="M";
48 break;
49default:
50 break;
51}
52
53{
54 /* I did not found a method to make a CONTENT reset on a QTextStream
55 so I use this construct that the stream will re-constructed in each
56 loop. To let it work, the textstream is packed into a own area of
57 code is it will be destructed after finishing its small job.
58 */
59 QTextOStream o(&desc);
60 if (w>0) o.precision(2); else o.precision(0);
61 o.setf(QTextStream::fixed);
62 o << s << " " << q << "Byte";
63}
64
65curItem=new AttachItem(attachments,curItem,type,"Mailbody",desc,-1);
66QString filename = "";
67for (unsigned int i = 0; i < body.Parts().count();++i) {
68 type = body.Parts()[i].Type()+"/"+body.Parts()[i].Subtype();
69 part_plist_t::ConstIterator it = body.Parts()[i].Parameters().begin();
70 for (;it!=body.Parts()[i].Parameters().end();++it) {
71 if (it.key().lower()=="name") {
72 filename=it.data();
73 }
74 }
75 s = body.Parts()[i].Size();
76 w = 0;
77 while (s>1024) {
78 s/=1024;
79 ++w;
80 if (w>=2) break;
81 }
82 switch(w) {
83 case 1:
84 q="k";
85 break;
86 case 2:
87 q="M";
88 break;
89 default:
90 q="";
91 break;
92 }
93 QTextOStream o(&desc);
94 if (w>0) o.precision(2); else o.precision(0);
95 o.setf(QTextStream::fixed);
96 o << s << " " << q << "Byte";
97 curItem=new AttachItem(attachments,curItem,type,filename,desc,i);
98}
31} 99}
32 100
33void ViewMail::setMail( RecMail mail ) { 101void ViewMail::setMail( RecMail mail ) {
34 102
35m_mail[0] = mail.getFrom(); 103m_mail[0] = mail.getFrom();
36m_mail[1] = mail.getSubject(); 104m_mail[1] = mail.getSubject();
37m_mail[3] = mail.getDate(); 105m_mail[3] = mail.getDate();
38m_mail[4] = mail.Msgid(); 106m_mail[4] = mail.Msgid();
39 107
40m_mail2[0] = mail.To(); 108m_mail2[0] = mail.To();
41m_mail2[1] = mail.CC(); 109m_mail2[1] = mail.CC();
42m_mail2[2] = mail.Bcc(); 110m_mail2[2] = mail.Bcc();
43 111
44setText(); 112setText();
45} 113}
46 114
47 115
48 116
49ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) 117ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl)
50 : ViewMailBase(parent, name, fl), _inLoop(false) 118 : ViewMailBase(parent, name, fl), _inLoop(false)
51{ 119{
52 m_gotBody = false; 120 m_gotBody = false;
53 121
54 connect(reply, SIGNAL(activated()), SLOT(slotReply())); 122 connect(reply, SIGNAL(activated()), SLOT(slotReply()));
55 connect(forward, SIGNAL(activated()), SLOT(slotForward())); 123 connect(forward, SIGNAL(activated()), SLOT(slotForward()));
56 124
57 attachments->setEnabled(m_gotBody); 125 attachments->setEnabled(m_gotBody);
58} 126}
59 127
60void ViewMail::setText() 128void ViewMail::setText()
61{ 129{
62 130
63 QString toString; 131 QString toString;
64 QString ccString; 132 QString ccString;
65 QString bccString; 133 QString bccString;
66 134
67 for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) { 135 for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) {
68 toString += (*it); 136 toString += (*it);
69 } 137 }
70 for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) { 138 for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) {
71 ccString += (*it); 139 ccString += (*it);
72 } 140 }
73 for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) { 141 for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) {
74 bccString += (*it); 142 bccString += (*it);
75 } 143 }
76 144
77 setCaption( caption().arg( m_mail[0] ) ); 145 setCaption( caption().arg( m_mail[0] ) );
78 146
79 m_mailHtml = "<html><body>" 147 m_mailHtml = "<html><body>"
80 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" 148 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>"
81 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" 149 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>"
82 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" 150 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>"
83 "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" 151 "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>"
84 "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + 152 "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" +
85 tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" 153 tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>"
86 "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + 154 "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] +
87 "</td></tr></table><font face=fixed>"; 155 "</td></tr></table><font face=fixed>";
88 156
89 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); 157 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" );
90 // remove later in favor of a real handling 158 // remove later in favor of a real handling
91 m_gotBody = true; 159 m_gotBody = true;
92} 160}
93 161
94 162
95ViewMail::~ViewMail() 163ViewMail::~ViewMail()
96{ 164{
97 hide(); 165 hide();
98} 166}
99 167
100void ViewMail::hide() 168void ViewMail::hide()
101{ 169{
102 QWidget::hide(); 170 QWidget::hide();
103 171
104 if (_inLoop) { 172 if (_inLoop) {
105 _inLoop = false; 173 _inLoop = false;
106 qApp->exit_loop(); 174 qApp->exit_loop();
107 } 175 }
108} 176}
109 177
110void ViewMail::exec() 178void ViewMail::exec()
111{ 179{
112 show(); 180 show();
113 181
114 if (!_inLoop) { 182 if (!_inLoop) {
115 _inLoop = true; 183 _inLoop = true;
116 qApp->enter_loop(); 184 qApp->enter_loop();
117 } 185 }
118} 186}
119 187
120QString ViewMail::deHtml(const QString &string) 188QString ViewMail::deHtml(const QString &string)
121{ 189{
122 QString string_ = string; 190 QString string_ = string;
123 string_.replace(QRegExp("&"), "&amp;"); 191 string_.replace(QRegExp("&"), "&amp;");
124 string_.replace(QRegExp("<"), "&lt;"); 192 string_.replace(QRegExp("<"), "&lt;");
125 string_.replace(QRegExp(">"), "&gt;"); 193 string_.replace(QRegExp(">"), "&gt;");
126 string_.replace(QRegExp("\\n"), "<br>"); 194 string_.replace(QRegExp("\\n"), "<br>");
127 return string_; 195 return string_;
128} 196}
129 197
130void ViewMail::slotReply() 198void ViewMail::slotReply()
131{ 199{
132 if (!m_gotBody) { 200 if (!m_gotBody) {
133 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); 201 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok"));
134 return; 202 return;
135 } 203 }
136 204
137 QString rtext; 205 QString rtext;
138 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 206 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
139 .arg( m_mail[1] ) 207 .arg( m_mail[1] )
140 .arg( m_mail[3] ); 208 .arg( m_mail[3] );
141 209
142 QString text = m_mail[2]; 210 QString text = m_mail[2];
143 QStringList lines = QStringList::split(QRegExp("\\n"), text); 211 QStringList lines = QStringList::split(QRegExp("\\n"), text);
144 QStringList::Iterator it; 212 QStringList::Iterator it;
145 for (it = lines.begin(); it != lines.end(); it++) { 213 for (it = lines.begin(); it != lines.end(); it++) {
146 rtext += "> " + *it + "\n"; 214 rtext += "> " + *it + "\n";
147 } 215 }
148 rtext += "\n"; 216 rtext += "\n";
149 217
150 QString prefix; 218 QString prefix;
151 if ( m_mail[1].find(QRegExp("^Re: *$")) != -1) prefix = ""; 219 if ( m_mail[1].find(QRegExp("^Re: *$")) != -1) prefix = "";
152 else prefix = "Re: "; // no i18n on purpose 220 else prefix = "Re: "; // no i18n on purpose
153 221
154 Settings *settings = new Settings(); 222 Settings *settings = new Settings();
155 ComposeMail composer( settings ,this, 0, true); 223 ComposeMail composer( settings ,this, 0, true);
156 composer.setTo( m_mail[0] ); 224 composer.setTo( m_mail[0] );
157 composer.setSubject( "Re: " + m_mail[1] ); 225 composer.setSubject( "Re: " + m_mail[1] );
158 composer.setMessage( rtext ); 226 composer.setMessage( rtext );
diff --git a/noncore/net/mail/viewmail.h b/noncore/net/mail/viewmail.h
index 61baa1d..b497434 100644
--- a/noncore/net/mail/viewmail.h
+++ b/noncore/net/mail/viewmail.h
@@ -1,74 +1,54 @@
1#ifndef VIEWMAIL_H 1#ifndef VIEWMAIL_H
2#define VIEWMAIL_H 2#define VIEWMAIL_H
3 3
4#include <qlistview.h> 4#include <qlistview.h>
5#include <qmap.h> 5#include <qmap.h>
6#include <qstringlist.h> 6#include <qstringlist.h>
7 7
8#include "viewmailbase.h" 8#include "viewmailbase.h"
9#include "mailtypes.h" 9#include "mailtypes.h"
10 10
11class AttachItemStore
12{
13public:
14 void setMimeType(QString mimeType) { _mimeType = mimeType; }
15 QString mimeType() { return _mimeType; }
16 void setFileName(QString fileName) { _fileName = fileName; }
17 QString fileName() { return _fileName; }
18 void setDescription(QString description) { _description = description; }
19 QString description() { return _description; }
20 void setPartNum(QString partNum) { _partNum = partNum; }
21 QString partNum() { return _partNum; }
22
23private:
24 QString _mimeType, _fileName, _description, _partNum;
25
26};
27
28class AttachItem : public QListViewItem 11class AttachItem : public QListViewItem
29{ 12{
30public: 13public:
31 AttachItem(QListView *parent, AttachItemStore &attachment); 14 AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&file,const QString&desc,int num);
32 AttachItem(QListViewItem *parent, AttachItemStore &attachment); 15 int Partnumber() { return _partNum; }
33
34 AttachItemStore attachItemStore() { return _attachItemStore; }
35 16
36private: 17private:
37 AttachItemStore _attachItemStore; 18 int _partNum;
38
39}; 19};
40 20
41class ViewMail : public ViewMailBase 21class ViewMail : public ViewMailBase
42{ 22{
43 Q_OBJECT 23 Q_OBJECT
44 24
45public: 25public:
46 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = Qt::WType_Modal); 26 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = Qt::WType_Modal);
47 ~ViewMail(); 27 ~ViewMail();
48 28
49 void hide(); 29 void hide();
50 void exec(); 30 void exec();
51 void setMail( RecMail mail ); 31 void setMail( RecMail mail );
52 void setBody( RecBody body ); 32 void setBody( RecBody body );
53 33
54protected: 34protected:
55 QString deHtml(const QString &string); 35 QString deHtml(const QString &string);
56 36
57protected slots: 37protected slots:
58 void slotReply(); 38 void slotReply();
59 void slotForward(); 39 void slotForward();
60 void setText(); 40 void setText();
61 41
62private: 42private:
63 bool _inLoop; 43 bool _inLoop;
64 QString m_mailHtml; 44 QString m_mailHtml;
65 bool m_gotBody; 45 bool m_gotBody;
66 46
67 // 0 from 1 subject 2 bodytext 3 date 47 // 0 from 1 subject 2 bodytext 3 date
68 QMap <int,QString> m_mail; 48 QMap <int,QString> m_mail;
69 // 0 to 1 cc 2 bcc 49 // 0 to 1 cc 2 bcc
70 QMap <int,QStringList> m_mail2; 50 QMap <int,QStringList> m_mail2;
71 51
72}; 52};
73 53
74#endif 54#endif
diff --git a/noncore/net/mail/viewmailbase.cpp b/noncore/net/mail/viewmailbase.cpp
index 197a665..38f92b4 100644
--- a/noncore/net/mail/viewmailbase.cpp
+++ b/noncore/net/mail/viewmailbase.cpp
@@ -1,75 +1,76 @@
1#include <qtextbrowser.h> 1#include <qtextbrowser.h>
2#include <qlistview.h> 2#include <qlistview.h>
3#include <qaction.h> 3#include <qaction.h>
4#include <qlabel.h> 4#include <qlabel.h>
5#include <qvbox.h> 5#include <qvbox.h>
6#include <qpopupmenu.h> 6#include <qpopupmenu.h>
7 7
8#include <qpe/qpetoolbar.h> 8#include <qpe/qpetoolbar.h>
9#include <qmenubar.h> 9#include <qmenubar.h>
10#include <qpe/resource.h> 10#include <qpe/resource.h>
11 11
12#include "viewmailbase.h" 12#include "viewmailbase.h"
13//#include "opendiag.h" 13//#include "opendiag.h"
14 14
15ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) 15ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl)
16 : QMainWindow(parent, name, fl) 16 : QMainWindow(parent, name, fl)
17{ 17{
18 setCaption(tr("E-Mail by %1")); 18 setCaption(tr("E-Mail by %1"));
19 setToolBarsMovable(false); 19 setToolBarsMovable(false);
20 20
21 toolbar = new QToolBar(this); 21 toolbar = new QToolBar(this);
22 menubar = new QMenuBar( toolbar ); 22 menubar = new QMenuBar( toolbar );
23 mailmenu = new QPopupMenu( menubar ); 23 mailmenu = new QPopupMenu( menubar );
24 menubar->insertItem( tr( "Mail" ), mailmenu ); 24 menubar->insertItem( tr( "Mail" ), mailmenu );
25 25
26 toolbar->setHorizontalStretchable(true); 26 toolbar->setHorizontalStretchable(true);
27 addToolBar(toolbar); 27 addToolBar(toolbar);
28 28
29 QLabel *spacer = new QLabel(toolbar); 29 QLabel *spacer = new QLabel(toolbar);
30 spacer->setBackgroundMode(QWidget::PaletteButton); 30 spacer->setBackgroundMode(QWidget::PaletteButton);
31 toolbar->setStretchableWidget(spacer); 31 toolbar->setStretchableWidget(spacer);
32 32
33 reply = new QAction(tr("Reply"), QIconSet(Resource::loadPixmap("mail/reply")), 0, 0, this); 33 reply = new QAction(tr("Reply"), QIconSet(Resource::loadPixmap("mail/reply")), 0, 0, this);
34 reply->addTo(toolbar); 34 reply->addTo(toolbar);
35 reply->addTo(mailmenu); 35 reply->addTo(mailmenu);
36 36
37 forward = new QAction(tr("Forward"), QIconSet(Resource::loadPixmap("mail/forward")), 0, 0, this); 37 forward = new QAction(tr("Forward"), QIconSet(Resource::loadPixmap("mail/forward")), 0, 0, this);
38 forward->addTo(toolbar); 38 forward->addTo(toolbar);
39 forward->addTo(mailmenu); 39 forward->addTo(mailmenu);
40 40
41 attachbutton = new QAction(tr("Attachments"), QIconSet(Resource::loadPixmap("mail/attach")), 0, 0, this, 0, true); 41 attachbutton = new QAction(tr("Attachments"), QIconSet(Resource::loadPixmap("mail/attach")), 0, 0, this, 0, true);
42 attachbutton->addTo(toolbar); 42 attachbutton->addTo(toolbar);
43 attachbutton->addTo(mailmenu); 43 attachbutton->addTo(mailmenu);
44 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool))); 44 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool)));
45 45
46 deleteMail = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this); 46 deleteMail = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this);
47 deleteMail->addTo(toolbar); 47 deleteMail->addTo(toolbar);
48 deleteMail->addTo(mailmenu); 48 deleteMail->addTo(mailmenu);
49 49
50 QVBox *view = new QVBox(this); 50 QVBox *view = new QVBox(this);
51 setCentralWidget(view); 51 setCentralWidget(view);
52 52
53 attachments = new QListView(view); 53 attachments = new QListView(view);
54 attachments->setMinimumHeight(90); 54 attachments->setMinimumHeight(90);
55 attachments->setMaximumHeight(90); 55 attachments->setMaximumHeight(90);
56 attachments->setAllColumnsShowFocus(true); 56 attachments->setAllColumnsShowFocus(true);
57 attachments->addColumn("Mime Type", 100); 57 attachments->addColumn("Mime Type", 60);
58 attachments->addColumn("Filename", 100); 58 attachments->addColumn(tr("Filename"), 100);
59 attachments->addColumn("Description", 100); 59 attachments->addColumn(tr("Size"), 80);
60 attachments->setSorting(-1);
60 attachments->hide(); 61 attachments->hide();
61 62
62 browser = new QTextBrowser(view); 63 browser = new QTextBrowser(view);
63 64
64 //openDiag = new OpenDiag(view); 65 //openDiag = new OpenDiag(view);
65 //openDiag->hide(); 66 //openDiag->hide();
66 67
67} 68}
68 69
69void ViewMailBase::slotChangeAttachview(bool state) 70void ViewMailBase::slotChangeAttachview(bool state)
70{ 71{
71 if (state) attachments->show(); 72 if (state) attachments->show();
72 else attachments->hide(); 73 else attachments->hide();
73} 74}
74 75
75 76