summaryrefslogtreecommitdiff
authoralwin <alwin>2003-12-13 22:35:35 (UTC)
committer alwin <alwin>2003-12-13 22:35:35 (UTC)
commitb0a71314013a3367767526b68928a7168b4ad460 (patch) (unidiff)
tree9f223458a7f029fad43f7db126b527ad49d60ce4
parentf1fa9ca873169e803fcc28cecd756a3edaa30ec4 (diff)
downloadopie-b0a71314013a3367767526b68928a7168b4ad460.zip
opie-b0a71314013a3367767526b68928a7168b4ad460.tar.gz
opie-b0a71314013a3367767526b68928a7168b4ad460.tar.bz2
deleting a mail in a imap server implemented
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/abstractmail.h2
-rw-r--r--noncore/net/mail/imapwrapper.cpp32
-rw-r--r--noncore/net/mail/imapwrapper.h5
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h2
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp32
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h5
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp5
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h2
-rw-r--r--noncore/net/mail/pop3wrapper.cpp5
-rw-r--r--noncore/net/mail/pop3wrapper.h2
10 files changed, 80 insertions, 12 deletions
diff --git a/noncore/net/mail/abstractmail.h b/noncore/net/mail/abstractmail.h
index bc8938f..0a1719d 100644
--- a/noncore/net/mail/abstractmail.h
+++ b/noncore/net/mail/abstractmail.h
@@ -1,30 +1,30 @@
1#ifndef __abstract_mail_ 1#ifndef __abstract_mail_
2#define __abstract_mail_ 2#define __abstract_mail_
3 3
4#include <qobject.h> 4#include <qobject.h>
5#include "settings.h" 5#include "settings.h"
6 6
7class RecMail; 7class RecMail;
8class RecBody; 8class RecBody;
9class RecPart; 9class RecPart;
10class IMAPwrapper; 10class IMAPwrapper;
11class POP3wrapper; 11class POP3wrapper;
12class Folder; 12class Folder;
13 13
14class AbstractMail:public QObject 14class AbstractMail:public QObject
15{ 15{
16 Q_OBJECT 16 Q_OBJECT
17public: 17public:
18 AbstractMail(){}; 18 AbstractMail(){};
19 virtual ~AbstractMail(){} 19 virtual ~AbstractMail(){}
20 virtual QList<Folder>* listFolders()=0; 20 virtual QList<Folder>* listFolders()=0;
21 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; 21 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
22 virtual RecBody fetchBody(const RecMail&mail)=0; 22 virtual RecBody fetchBody(const RecMail&mail)=0;
23 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false)=0;
24 virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0; 23 virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0;
24 virtual void deleteMail(const RecMail&mail)=0;
25 25
26 static AbstractMail* getWrapper(IMAPaccount *a); 26 static AbstractMail* getWrapper(IMAPaccount *a);
27 static AbstractMail* getWrapper(POP3account *a); 27 static AbstractMail* getWrapper(POP3account *a);
28}; 28};
29 29
30#endif 30#endif
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp
index 3222c7e..a01a2a9 100644
--- a/noncore/net/mail/imapwrapper.cpp
+++ b/noncore/net/mail/imapwrapper.cpp
@@ -571,128 +571,160 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
571 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic); 571 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic);
572 break; 572 break;
573 case MAILIMAP_BODY_TYPE_1PART_MSG: 573 case MAILIMAP_BODY_TYPE_1PART_MSG:
574 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg); 574 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg);
575 break; 575 break;
576 default: 576 default:
577 break; 577 break;
578 } 578 }
579} 579}
580 580
581void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which) 581void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which)
582{ 582{
583 if (!which) { 583 if (!which) {
584 return; 584 return;
585 } 585 }
586 QString sub; 586 QString sub;
587 sub = which->bd_media_text; 587 sub = which->bd_media_text;
588 target_part.setSubtype(sub.lower()); 588 target_part.setSubtype(sub.lower());
589 target_part.setLines(which->bd_lines); 589 target_part.setLines(which->bd_lines);
590 fillBodyFields(target_part,which->bd_fields); 590 fillBodyFields(target_part,which->bd_fields);
591} 591}
592 592
593void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which) 593void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which)
594{ 594{
595 if (!which) { 595 if (!which) {
596 return; 596 return;
597 } 597 }
598// QString sub; 598// QString sub;
599// sub = which->bd_media_text; 599// sub = which->bd_media_text;
600// target_part.setSubtype(sub.lower()); 600// target_part.setSubtype(sub.lower());
601 qDebug("Message part"); 601 qDebug("Message part");
602 /* we set this type to text/plain */ 602 /* we set this type to text/plain */
603 target_part.setType("text"); 603 target_part.setType("text");
604 target_part.setSubtype("plain"); 604 target_part.setSubtype("plain");
605 target_part.setLines(which->bd_lines); 605 target_part.setLines(which->bd_lines);
606 fillBodyFields(target_part,which->bd_fields); 606 fillBodyFields(target_part,which->bd_fields);
607} 607}
608 608
609void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which) 609void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which)
610{ 610{
611 if (!which) { 611 if (!which) {
612 return; 612 return;
613 } 613 }
614 QString type,sub; 614 QString type,sub;
615 switch (which->bd_media_basic->med_type) { 615 switch (which->bd_media_basic->med_type) {
616 case MAILIMAP_MEDIA_BASIC_APPLICATION: 616 case MAILIMAP_MEDIA_BASIC_APPLICATION:
617 type = "application"; 617 type = "application";
618 break; 618 break;
619 case MAILIMAP_MEDIA_BASIC_AUDIO: 619 case MAILIMAP_MEDIA_BASIC_AUDIO:
620 type = "audio"; 620 type = "audio";
621 break; 621 break;
622 case MAILIMAP_MEDIA_BASIC_IMAGE: 622 case MAILIMAP_MEDIA_BASIC_IMAGE:
623 type = "image"; 623 type = "image";
624 break; 624 break;
625 case MAILIMAP_MEDIA_BASIC_MESSAGE: 625 case MAILIMAP_MEDIA_BASIC_MESSAGE:
626 type = "message"; 626 type = "message";
627 break; 627 break;
628 case MAILIMAP_MEDIA_BASIC_VIDEO: 628 case MAILIMAP_MEDIA_BASIC_VIDEO:
629 type = "video"; 629 type = "video";
630 break; 630 break;
631 case MAILIMAP_MEDIA_BASIC_OTHER: 631 case MAILIMAP_MEDIA_BASIC_OTHER:
632 default: 632 default:
633 if (which->bd_media_basic->med_basic_type) { 633 if (which->bd_media_basic->med_basic_type) {
634 type = which->bd_media_basic->med_basic_type; 634 type = which->bd_media_basic->med_basic_type;
635 } else { 635 } else {
636 type = ""; 636 type = "";
637 } 637 }
638 break; 638 break;
639 } 639 }
640 if (which->bd_media_basic->med_subtype) { 640 if (which->bd_media_basic->med_subtype) {
641 sub = which->bd_media_basic->med_subtype; 641 sub = which->bd_media_basic->med_subtype;
642 } else { 642 } else {
643 sub = ""; 643 sub = "";
644 } 644 }
645 qDebug("Type = %s/%s",type.latin1(),sub.latin1()); 645 qDebug("Type = %s/%s",type.latin1(),sub.latin1());
646 target_part.setType(type.lower()); 646 target_part.setType(type.lower());
647 target_part.setSubtype(sub.lower()); 647 target_part.setSubtype(sub.lower());
648 fillBodyFields(target_part,which->bd_fields); 648 fillBodyFields(target_part,which->bd_fields);
649} 649}
650 650
651void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which) 651void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
652{ 652{
653 if (!which) return; 653 if (!which) return;
654 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) { 654 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) {
655 clistcell*cur; 655 clistcell*cur;
656 mailimap_single_body_fld_param*param=0; 656 mailimap_single_body_fld_param*param=0;
657 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) { 657 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) {
658 param = (mailimap_single_body_fld_param*)cur->data; 658 param = (mailimap_single_body_fld_param*)cur->data;
659 if (param) { 659 if (param) {
660 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 660 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
661 } 661 }
662 } 662 }
663 } 663 }
664 mailimap_body_fld_enc*enc = which->bd_encoding; 664 mailimap_body_fld_enc*enc = which->bd_encoding;
665 QString encoding(""); 665 QString encoding("");
666 switch (enc->enc_type) { 666 switch (enc->enc_type) {
667 case MAILIMAP_BODY_FLD_ENC_7BIT: 667 case MAILIMAP_BODY_FLD_ENC_7BIT:
668 encoding = "7bit"; 668 encoding = "7bit";
669 break; 669 break;
670 case MAILIMAP_BODY_FLD_ENC_8BIT: 670 case MAILIMAP_BODY_FLD_ENC_8BIT:
671 encoding = "8bit"; 671 encoding = "8bit";
672 break; 672 break;
673 case MAILIMAP_BODY_FLD_ENC_BINARY: 673 case MAILIMAP_BODY_FLD_ENC_BINARY:
674 encoding="binary"; 674 encoding="binary";
675 break; 675 break;
676 case MAILIMAP_BODY_FLD_ENC_BASE64: 676 case MAILIMAP_BODY_FLD_ENC_BASE64:
677 encoding="base64"; 677 encoding="base64";
678 break; 678 break;
679 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE: 679 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE:
680 encoding="quoted-printable"; 680 encoding="quoted-printable";
681 break; 681 break;
682 case MAILIMAP_BODY_FLD_ENC_OTHER: 682 case MAILIMAP_BODY_FLD_ENC_OTHER:
683 default: 683 default:
684 if (enc->enc_value) { 684 if (enc->enc_value) {
685 char*t=enc->enc_value; 685 char*t=enc->enc_value;
686 encoding=QString(enc->enc_value); 686 encoding=QString(enc->enc_value);
687 enc->enc_value=0L; 687 enc->enc_value=0L;
688 free(t); 688 free(t);
689 } 689 }
690 } 690 }
691 target_part.setEncoding(encoding); 691 target_part.setEncoding(encoding);
692 target_part.setSize(which->bd_size); 692 target_part.setSize(which->bd_size);
693} 693}
694 694
695QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) 695QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part)
696{ 696{
697 return fetchPart(mail,part.Positionlist(),false); 697 return fetchPart(mail,part.Positionlist(),false);
698} 698}
699
700void IMAPwrapper::deleteMail(const RecMail&mail)
701{
702 mailimap_flag_list*flist;
703 mailimap_set *set;
704 mailimap_store_att_flags * store_flags;
705 int err;
706 login();
707 if (!m_imap) {
708 return;
709 }
710 const char *mb = mail.getMbox().latin1();
711 err = mailimap_select( m_imap, (char*)mb);
712 if ( err != MAILIMAP_NO_ERROR ) {
713 qDebug("error selecting mailbox for delete: %s",m_imap->imap_response);
714 return;
715 }
716 flist = mailimap_flag_list_new_empty();
717 mailimap_flag_list_add(flist,mailimap_flag_new_deleted());
718 store_flags = mailimap_store_att_flags_new_set_flags(flist);
719 set = mailimap_set_new_single(mail.getNumber());
720 err = mailimap_store(m_imap,set,store_flags);
721 if (err != MAILIMAP_NO_ERROR) {
722 qDebug("error deleting mail: %s",m_imap->imap_response);
723 return;
724 }
725 err = mailimap_expunge(m_imap);
726 if (err != MAILIMAP_NO_ERROR) {
727 qDebug("error deleting mail: %s",m_imap->imap_response);
728 }
729 qDebug("Delete successfull");
730}
diff --git a/noncore/net/mail/imapwrapper.h b/noncore/net/mail/imapwrapper.h
index f88457a..4f4d575 100644
--- a/noncore/net/mail/imapwrapper.h
+++ b/noncore/net/mail/imapwrapper.h
@@ -1,52 +1,55 @@
1#ifndef __IMAPWRAPPER 1#ifndef __IMAPWRAPPER
2#define __IMAPWRAPPER 2#define __IMAPWRAPPER
3 3
4#include <qlist.h> 4#include <qlist.h>
5#include "mailwrapper.h" 5#include "mailwrapper.h"
6#include "abstractmail.h" 6#include "abstractmail.h"
7 7
8struct mailimap; 8struct mailimap;
9struct mailimap_body_type_1part; 9struct mailimap_body_type_1part;
10struct mailimap_body_type_text; 10struct mailimap_body_type_text;
11struct mailimap_body_type_basic; 11struct mailimap_body_type_basic;
12struct mailimap_body_type_msg; 12struct mailimap_body_type_msg;
13struct mailimap_body_type_mpart; 13struct mailimap_body_type_mpart;
14struct mailimap_body_fields; 14struct mailimap_body_fields;
15struct mailimap_msg_att; 15struct mailimap_msg_att;
16 16
17class IMAPwrapper : public AbstractMail 17class IMAPwrapper : public AbstractMail
18{ 18{
19 Q_OBJECT 19 Q_OBJECT
20public: 20public:
21 IMAPwrapper( IMAPaccount *a ); 21 IMAPwrapper( IMAPaccount *a );
22 virtual ~IMAPwrapper(); 22 virtual ~IMAPwrapper();
23 virtual QList<Folder>* listFolders(); 23 virtual QList<Folder>* listFolders();
24 virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); 24 virtual void listMessages(const QString & mailbox,QList<RecMail>&target );
25 virtual RecBody fetchBody(const RecMail&mail); 25 virtual RecBody fetchBody(const RecMail&mail);
26 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false);
27 virtual QString fetchPart(const RecMail&mail,const RecPart&part); 26 virtual QString fetchPart(const RecMail&mail,const RecPart&part);
27 virtual void deleteMail(const RecMail&mail);
28
28 static void imap_progress( size_t current, size_t maximum ); 29 static void imap_progress( size_t current, size_t maximum );
29 30
30protected: 31protected:
31 RecMail*parse_list_result(mailimap_msg_att*); 32 RecMail*parse_list_result(mailimap_msg_att*);
32 void login(); 33 void login();
33 void logout(); 34 void logout();
35
36 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false);
34 37
35 void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body); 38 void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body);
36 void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>()); 39 void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>());
37 40
38 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); 41 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description);
39 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); 42 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which);
40 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); 43 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which);
41 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); 44 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which);
42 45
43 /* just helpers */ 46 /* just helpers */
44 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which); 47 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which);
45 static QStringList address_list_to_stringlist(clist*list); 48 static QStringList address_list_to_stringlist(clist*list);
46 49
47private: 50private:
48 IMAPaccount *account; 51 IMAPaccount *account;
49 mailimap *m_imap; 52 mailimap *m_imap;
50}; 53};
51 54
52#endif 55#endif
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index bc8938f..0a1719d 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -1,30 +1,30 @@
1#ifndef __abstract_mail_ 1#ifndef __abstract_mail_
2#define __abstract_mail_ 2#define __abstract_mail_
3 3
4#include <qobject.h> 4#include <qobject.h>
5#include "settings.h" 5#include "settings.h"
6 6
7class RecMail; 7class RecMail;
8class RecBody; 8class RecBody;
9class RecPart; 9class RecPart;
10class IMAPwrapper; 10class IMAPwrapper;
11class POP3wrapper; 11class POP3wrapper;
12class Folder; 12class Folder;
13 13
14class AbstractMail:public QObject 14class AbstractMail:public QObject
15{ 15{
16 Q_OBJECT 16 Q_OBJECT
17public: 17public:
18 AbstractMail(){}; 18 AbstractMail(){};
19 virtual ~AbstractMail(){} 19 virtual ~AbstractMail(){}
20 virtual QList<Folder>* listFolders()=0; 20 virtual QList<Folder>* listFolders()=0;
21 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; 21 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
22 virtual RecBody fetchBody(const RecMail&mail)=0; 22 virtual RecBody fetchBody(const RecMail&mail)=0;
23 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false)=0;
24 virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0; 23 virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0;
24 virtual void deleteMail(const RecMail&mail)=0;
25 25
26 static AbstractMail* getWrapper(IMAPaccount *a); 26 static AbstractMail* getWrapper(IMAPaccount *a);
27 static AbstractMail* getWrapper(POP3account *a); 27 static AbstractMail* getWrapper(POP3account *a);
28}; 28};
29 29
30#endif 30#endif
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index 3222c7e..a01a2a9 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -571,128 +571,160 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
571 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic); 571 fillSingleBasicPart(target_part,Description->bd_data.bd_type_basic);
572 break; 572 break;
573 case MAILIMAP_BODY_TYPE_1PART_MSG: 573 case MAILIMAP_BODY_TYPE_1PART_MSG:
574 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg); 574 fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg);
575 break; 575 break;
576 default: 576 default:
577 break; 577 break;
578 } 578 }
579} 579}
580 580
581void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which) 581void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which)
582{ 582{
583 if (!which) { 583 if (!which) {
584 return; 584 return;
585 } 585 }
586 QString sub; 586 QString sub;
587 sub = which->bd_media_text; 587 sub = which->bd_media_text;
588 target_part.setSubtype(sub.lower()); 588 target_part.setSubtype(sub.lower());
589 target_part.setLines(which->bd_lines); 589 target_part.setLines(which->bd_lines);
590 fillBodyFields(target_part,which->bd_fields); 590 fillBodyFields(target_part,which->bd_fields);
591} 591}
592 592
593void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which) 593void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which)
594{ 594{
595 if (!which) { 595 if (!which) {
596 return; 596 return;
597 } 597 }
598// QString sub; 598// QString sub;
599// sub = which->bd_media_text; 599// sub = which->bd_media_text;
600// target_part.setSubtype(sub.lower()); 600// target_part.setSubtype(sub.lower());
601 qDebug("Message part"); 601 qDebug("Message part");
602 /* we set this type to text/plain */ 602 /* we set this type to text/plain */
603 target_part.setType("text"); 603 target_part.setType("text");
604 target_part.setSubtype("plain"); 604 target_part.setSubtype("plain");
605 target_part.setLines(which->bd_lines); 605 target_part.setLines(which->bd_lines);
606 fillBodyFields(target_part,which->bd_fields); 606 fillBodyFields(target_part,which->bd_fields);
607} 607}
608 608
609void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which) 609void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which)
610{ 610{
611 if (!which) { 611 if (!which) {
612 return; 612 return;
613 } 613 }
614 QString type,sub; 614 QString type,sub;
615 switch (which->bd_media_basic->med_type) { 615 switch (which->bd_media_basic->med_type) {
616 case MAILIMAP_MEDIA_BASIC_APPLICATION: 616 case MAILIMAP_MEDIA_BASIC_APPLICATION:
617 type = "application"; 617 type = "application";
618 break; 618 break;
619 case MAILIMAP_MEDIA_BASIC_AUDIO: 619 case MAILIMAP_MEDIA_BASIC_AUDIO:
620 type = "audio"; 620 type = "audio";
621 break; 621 break;
622 case MAILIMAP_MEDIA_BASIC_IMAGE: 622 case MAILIMAP_MEDIA_BASIC_IMAGE:
623 type = "image"; 623 type = "image";
624 break; 624 break;
625 case MAILIMAP_MEDIA_BASIC_MESSAGE: 625 case MAILIMAP_MEDIA_BASIC_MESSAGE:
626 type = "message"; 626 type = "message";
627 break; 627 break;
628 case MAILIMAP_MEDIA_BASIC_VIDEO: 628 case MAILIMAP_MEDIA_BASIC_VIDEO:
629 type = "video"; 629 type = "video";
630 break; 630 break;
631 case MAILIMAP_MEDIA_BASIC_OTHER: 631 case MAILIMAP_MEDIA_BASIC_OTHER:
632 default: 632 default:
633 if (which->bd_media_basic->med_basic_type) { 633 if (which->bd_media_basic->med_basic_type) {
634 type = which->bd_media_basic->med_basic_type; 634 type = which->bd_media_basic->med_basic_type;
635 } else { 635 } else {
636 type = ""; 636 type = "";
637 } 637 }
638 break; 638 break;
639 } 639 }
640 if (which->bd_media_basic->med_subtype) { 640 if (which->bd_media_basic->med_subtype) {
641 sub = which->bd_media_basic->med_subtype; 641 sub = which->bd_media_basic->med_subtype;
642 } else { 642 } else {
643 sub = ""; 643 sub = "";
644 } 644 }
645 qDebug("Type = %s/%s",type.latin1(),sub.latin1()); 645 qDebug("Type = %s/%s",type.latin1(),sub.latin1());
646 target_part.setType(type.lower()); 646 target_part.setType(type.lower());
647 target_part.setSubtype(sub.lower()); 647 target_part.setSubtype(sub.lower());
648 fillBodyFields(target_part,which->bd_fields); 648 fillBodyFields(target_part,which->bd_fields);
649} 649}
650 650
651void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which) 651void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
652{ 652{
653 if (!which) return; 653 if (!which) return;
654 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) { 654 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) {
655 clistcell*cur; 655 clistcell*cur;
656 mailimap_single_body_fld_param*param=0; 656 mailimap_single_body_fld_param*param=0;
657 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) { 657 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) {
658 param = (mailimap_single_body_fld_param*)cur->data; 658 param = (mailimap_single_body_fld_param*)cur->data;
659 if (param) { 659 if (param) {
660 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 660 target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
661 } 661 }
662 } 662 }
663 } 663 }
664 mailimap_body_fld_enc*enc = which->bd_encoding; 664 mailimap_body_fld_enc*enc = which->bd_encoding;
665 QString encoding(""); 665 QString encoding("");
666 switch (enc->enc_type) { 666 switch (enc->enc_type) {
667 case MAILIMAP_BODY_FLD_ENC_7BIT: 667 case MAILIMAP_BODY_FLD_ENC_7BIT:
668 encoding = "7bit"; 668 encoding = "7bit";
669 break; 669 break;
670 case MAILIMAP_BODY_FLD_ENC_8BIT: 670 case MAILIMAP_BODY_FLD_ENC_8BIT:
671 encoding = "8bit"; 671 encoding = "8bit";
672 break; 672 break;
673 case MAILIMAP_BODY_FLD_ENC_BINARY: 673 case MAILIMAP_BODY_FLD_ENC_BINARY:
674 encoding="binary"; 674 encoding="binary";
675 break; 675 break;
676 case MAILIMAP_BODY_FLD_ENC_BASE64: 676 case MAILIMAP_BODY_FLD_ENC_BASE64:
677 encoding="base64"; 677 encoding="base64";
678 break; 678 break;
679 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE: 679 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE:
680 encoding="quoted-printable"; 680 encoding="quoted-printable";
681 break; 681 break;
682 case MAILIMAP_BODY_FLD_ENC_OTHER: 682 case MAILIMAP_BODY_FLD_ENC_OTHER:
683 default: 683 default:
684 if (enc->enc_value) { 684 if (enc->enc_value) {
685 char*t=enc->enc_value; 685 char*t=enc->enc_value;
686 encoding=QString(enc->enc_value); 686 encoding=QString(enc->enc_value);
687 enc->enc_value=0L; 687 enc->enc_value=0L;
688 free(t); 688 free(t);
689 } 689 }
690 } 690 }
691 target_part.setEncoding(encoding); 691 target_part.setEncoding(encoding);
692 target_part.setSize(which->bd_size); 692 target_part.setSize(which->bd_size);
693} 693}
694 694
695QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part) 695QString IMAPwrapper::fetchPart(const RecMail&mail,const RecPart&part)
696{ 696{
697 return fetchPart(mail,part.Positionlist(),false); 697 return fetchPart(mail,part.Positionlist(),false);
698} 698}
699
700void IMAPwrapper::deleteMail(const RecMail&mail)
701{
702 mailimap_flag_list*flist;
703 mailimap_set *set;
704 mailimap_store_att_flags * store_flags;
705 int err;
706 login();
707 if (!m_imap) {
708 return;
709 }
710 const char *mb = mail.getMbox().latin1();
711 err = mailimap_select( m_imap, (char*)mb);
712 if ( err != MAILIMAP_NO_ERROR ) {
713 qDebug("error selecting mailbox for delete: %s",m_imap->imap_response);
714 return;
715 }
716 flist = mailimap_flag_list_new_empty();
717 mailimap_flag_list_add(flist,mailimap_flag_new_deleted());
718 store_flags = mailimap_store_att_flags_new_set_flags(flist);
719 set = mailimap_set_new_single(mail.getNumber());
720 err = mailimap_store(m_imap,set,store_flags);
721 if (err != MAILIMAP_NO_ERROR) {
722 qDebug("error deleting mail: %s",m_imap->imap_response);
723 return;
724 }
725 err = mailimap_expunge(m_imap);
726 if (err != MAILIMAP_NO_ERROR) {
727 qDebug("error deleting mail: %s",m_imap->imap_response);
728 }
729 qDebug("Delete successfull");
730}
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index f88457a..4f4d575 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -1,52 +1,55 @@
1#ifndef __IMAPWRAPPER 1#ifndef __IMAPWRAPPER
2#define __IMAPWRAPPER 2#define __IMAPWRAPPER
3 3
4#include <qlist.h> 4#include <qlist.h>
5#include "mailwrapper.h" 5#include "mailwrapper.h"
6#include "abstractmail.h" 6#include "abstractmail.h"
7 7
8struct mailimap; 8struct mailimap;
9struct mailimap_body_type_1part; 9struct mailimap_body_type_1part;
10struct mailimap_body_type_text; 10struct mailimap_body_type_text;
11struct mailimap_body_type_basic; 11struct mailimap_body_type_basic;
12struct mailimap_body_type_msg; 12struct mailimap_body_type_msg;
13struct mailimap_body_type_mpart; 13struct mailimap_body_type_mpart;
14struct mailimap_body_fields; 14struct mailimap_body_fields;
15struct mailimap_msg_att; 15struct mailimap_msg_att;
16 16
17class IMAPwrapper : public AbstractMail 17class IMAPwrapper : public AbstractMail
18{ 18{
19 Q_OBJECT 19 Q_OBJECT
20public: 20public:
21 IMAPwrapper( IMAPaccount *a ); 21 IMAPwrapper( IMAPaccount *a );
22 virtual ~IMAPwrapper(); 22 virtual ~IMAPwrapper();
23 virtual QList<Folder>* listFolders(); 23 virtual QList<Folder>* listFolders();
24 virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); 24 virtual void listMessages(const QString & mailbox,QList<RecMail>&target );
25 virtual RecBody fetchBody(const RecMail&mail); 25 virtual RecBody fetchBody(const RecMail&mail);
26 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false);
27 virtual QString fetchPart(const RecMail&mail,const RecPart&part); 26 virtual QString fetchPart(const RecMail&mail,const RecPart&part);
27 virtual void deleteMail(const RecMail&mail);
28
28 static void imap_progress( size_t current, size_t maximum ); 29 static void imap_progress( size_t current, size_t maximum );
29 30
30protected: 31protected:
31 RecMail*parse_list_result(mailimap_msg_att*); 32 RecMail*parse_list_result(mailimap_msg_att*);
32 void login(); 33 void login();
33 void logout(); 34 void logout();
35
36 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false);
34 37
35 void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body); 38 void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body);
36 void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>()); 39 void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>());
37 40
38 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); 41 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description);
39 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); 42 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which);
40 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); 43 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which);
41 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); 44 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which);
42 45
43 /* just helpers */ 46 /* just helpers */
44 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which); 47 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which);
45 static QStringList address_list_to_stringlist(clist*list); 48 static QStringList address_list_to_stringlist(clist*list);
46 49
47private: 50private:
48 IMAPaccount *account; 51 IMAPaccount *account;
49 mailimap *m_imap; 52 mailimap *m_imap;
50}; 53};
51 54
52#endif 55#endif
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index 903ef4d..62523bf 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -154,137 +154,136 @@ QString POP3wrapper::parseAddressList( mailimf_address_list *list )
154 result.append( parseMailbox( addr->ad_data.ad_mailbox ) ); 154 result.append( parseMailbox( addr->ad_data.ad_mailbox ) );
155 break; 155 break;
156 case MAILIMF_ADDRESS_GROUP: 156 case MAILIMF_ADDRESS_GROUP:
157 result.append( parseGroup( addr->ad_data.ad_group ) ); 157 result.append( parseGroup( addr->ad_data.ad_group ) );
158 break; 158 break;
159 default: 159 default:
160 qDebug( "POP3: unkown mailimf address type" ); 160 qDebug( "POP3: unkown mailimf address type" );
161 break; 161 break;
162 } 162 }
163 } 163 }
164 164
165 return result; 165 return result;
166} 166}
167 167
168QString POP3wrapper::parseGroup( mailimf_group *group ) 168QString POP3wrapper::parseGroup( mailimf_group *group )
169{ 169{
170 QString result( "" ); 170 QString result( "" );
171 171
172 result.append( group->grp_display_name ); 172 result.append( group->grp_display_name );
173 result.append( ": " ); 173 result.append( ": " );
174 174
175 if ( group->grp_mb_list != NULL ) { 175 if ( group->grp_mb_list != NULL ) {
176 result.append( parseMailboxList( group->grp_mb_list ) ); 176 result.append( parseMailboxList( group->grp_mb_list ) );
177 } 177 }
178 178
179 result.append( ";" ); 179 result.append( ";" );
180 180
181 return result; 181 return result;
182} 182}
183 183
184QString POP3wrapper::parseMailbox( mailimf_mailbox *box ) 184QString POP3wrapper::parseMailbox( mailimf_mailbox *box )
185{ 185{
186 QString result( "" ); 186 QString result( "" );
187 187
188 if ( box->mb_display_name == NULL ) { 188 if ( box->mb_display_name == NULL ) {
189 result.append( box->mb_addr_spec ); 189 result.append( box->mb_addr_spec );
190 } else { 190 } else {
191 result.append( box->mb_display_name ); 191 result.append( box->mb_display_name );
192 result.append( " <" ); 192 result.append( " <" );
193 result.append( box->mb_addr_spec ); 193 result.append( box->mb_addr_spec );
194 result.append( ">" ); 194 result.append( ">" );
195 } 195 }
196 196
197 return result; 197 return result;
198} 198}
199 199
200QString POP3wrapper::parseMailboxList( mailimf_mailbox_list *list ) 200QString POP3wrapper::parseMailboxList( mailimf_mailbox_list *list )
201{ 201{
202 QString result( "" ); 202 QString result( "" );
203 203
204 bool first = true; 204 bool first = true;
205 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) { 205 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) {
206 mailimf_mailbox *box = (mailimf_mailbox *) current->data; 206 mailimf_mailbox *box = (mailimf_mailbox *) current->data;
207 207
208 if ( !first ) { 208 if ( !first ) {
209 result.append( "," ); 209 result.append( "," );
210 } else { 210 } else {
211 first = false; 211 first = false;
212 } 212 }
213 213
214 result.append( parseMailbox( box ) ); 214 result.append( parseMailbox( box ) );
215 } 215 }
216 216
217 return result; 217 return result;
218} 218}
219 219
220void POP3wrapper::login() 220void POP3wrapper::login()
221{ 221{
222 if ( m_pop3 != NULL ) logout(); 222 if ( m_pop3 != NULL ) logout();
223 223
224 const char *server, *user, *pass; 224 const char *server, *user, *pass;
225 uint16_t port; 225 uint16_t port;
226 int err = MAILPOP3_NO_ERROR; 226 int err = MAILPOP3_NO_ERROR;
227 227
228 server = account->getServer().latin1(); 228 server = account->getServer().latin1();
229 port = account->getPort().toUInt(); 229 port = account->getPort().toUInt();
230 user = account->getUser().latin1(); 230 user = account->getUser().latin1();
231 pass = account->getPassword().latin1(); 231 pass = account->getPassword().latin1();
232 232
233 m_pop3 = mailpop3_new( 200, &pop3_progress ); 233 m_pop3 = mailpop3_new( 200, &pop3_progress );
234 234
235 // connect 235 // connect
236 if (account->getSSL()) { 236 if (account->getSSL()) {
237 err = mailpop3_ssl_connect( m_pop3, (char*)server, port ); 237 err = mailpop3_ssl_connect( m_pop3, (char*)server, port );
238 } else { 238 } else {
239 err = mailpop3_socket_connect( m_pop3, (char*)server, port ); 239 err = mailpop3_socket_connect( m_pop3, (char*)server, port );
240 } 240 }
241 241
242 if ( err != MAILPOP3_NO_ERROR ) { 242 if ( err != MAILPOP3_NO_ERROR ) {
243 qDebug( "pop3: error connecting to %s\n reason: %s", server, 243 qDebug( "pop3: error connecting to %s\n reason: %s", server,
244 m_pop3->pop3_response ); 244 m_pop3->pop3_response );
245 mailpop3_free( m_pop3 ); 245 mailpop3_free( m_pop3 );
246 m_pop3 = NULL; 246 m_pop3 = NULL;
247 return; 247 return;
248 } 248 }
249 qDebug( "POP3: connected!" ); 249 qDebug( "POP3: connected!" );
250 250
251 // login 251 // login
252 // TODO: decide if apop or plain login should be used 252 // TODO: decide if apop or plain login should be used
253 err = mailpop3_login( m_pop3, (char *) user, (char *) pass ); 253 err = mailpop3_login( m_pop3, (char *) user, (char *) pass );
254 if ( err != MAILPOP3_NO_ERROR ) { 254 if ( err != MAILPOP3_NO_ERROR ) {
255 qDebug( "pop3: error logging in: %s", m_pop3->pop3_response ); 255 qDebug( "pop3: error logging in: %s", m_pop3->pop3_response );
256 logout(); 256 logout();
257 return; 257 return;
258 } 258 }
259 259
260 qDebug( "POP3: logged in!" ); 260 qDebug( "POP3: logged in!" );
261} 261}
262 262
263void POP3wrapper::logout() 263void POP3wrapper::logout()
264{ 264{
265 int err = MAILPOP3_NO_ERROR; 265 int err = MAILPOP3_NO_ERROR;
266 if ( m_pop3 == NULL ) return; 266 if ( m_pop3 == NULL ) return;
267 err = mailpop3_quit( m_pop3 ); 267 err = mailpop3_quit( m_pop3 );
268 mailpop3_free( m_pop3 ); 268 mailpop3_free( m_pop3 );
269 m_pop3 = NULL; 269 m_pop3 = NULL;
270} 270}
271 271
272 272
273QList<Folder>* POP3wrapper::listFolders() 273QList<Folder>* POP3wrapper::listFolders()
274{ 274{
275 QList<Folder> * folders = new QList<Folder>(); 275 QList<Folder> * folders = new QList<Folder>();
276 folders->setAutoDelete( true ); 276 folders->setAutoDelete( true );
277 Folder*inb=new Folder("INBOX"); 277 Folder*inb=new Folder("INBOX");
278 folders->append(inb); 278 folders->append(inb);
279 return folders; 279 return folders;
280} 280}
281 281
282QString POP3wrapper::fetchPart(const RecMail&,const QValueList<int>&,bool) 282QString POP3wrapper::fetchPart(const RecMail&,const RecPart&)
283{ 283{
284 return ""; 284 return "";
285} 285}
286 286
287QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) 287void POP3wrapper::deleteMail(const RecMail&)
288{ 288{
289 return "";
290} 289}
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index 3b24564..ef972c8 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -1,43 +1,43 @@
1#ifndef __POP3WRAPPER 1#ifndef __POP3WRAPPER
2#define __POP3WRAPPER 2#define __POP3WRAPPER
3 3
4#include "mailwrapper.h" 4#include "mailwrapper.h"
5#include "abstractmail.h" 5#include "abstractmail.h"
6 6
7class RecMail; 7class RecMail;
8class RecBody; 8class RecBody;
9struct mailpop3; 9struct mailpop3;
10 10
11class POP3wrapper : public AbstractMail 11class POP3wrapper : public AbstractMail
12{ 12{
13 Q_OBJECT 13 Q_OBJECT
14 14
15public: 15public:
16 POP3wrapper( POP3account *a ); 16 POP3wrapper( POP3account *a );
17 virtual ~POP3wrapper(); 17 virtual ~POP3wrapper();
18 /* mailbox will be ignored */ 18 /* mailbox will be ignored */
19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
20 virtual QList<Folder>* listFolders(); 20 virtual QList<Folder>* listFolders();
21 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false);
22 virtual QString fetchPart(const RecMail&mail,const RecPart&part); 21 virtual QString fetchPart(const RecMail&mail,const RecPart&part);
22 virtual void deleteMail(const RecMail&mail);
23 23
24 RecBody fetchBody( const RecMail &mail ); 24 RecBody fetchBody( const RecMail &mail );
25 static void pop3_progress( size_t current, size_t maximum ); 25 static void pop3_progress( size_t current, size_t maximum );
26 26
27protected: 27protected:
28 void login(); 28 void login();
29 void logout(); 29 void logout();
30 30
31private: 31private:
32 RecMail *parseHeader( const char *header ); 32 RecMail *parseHeader( const char *header );
33 RecBody parseBody( const char *message ); 33 RecBody parseBody( const char *message );
34 QString parseMailboxList( mailimf_mailbox_list *list ); 34 QString parseMailboxList( mailimf_mailbox_list *list );
35 QString parseMailbox( mailimf_mailbox *box ); 35 QString parseMailbox( mailimf_mailbox *box );
36 QString parseGroup( mailimf_group *group ); 36 QString parseGroup( mailimf_group *group );
37 QString parseAddressList( mailimf_address_list *list ); 37 QString parseAddressList( mailimf_address_list *list );
38 QString parseDateTime( mailimf_date_time *date ); 38 QString parseDateTime( mailimf_date_time *date );
39 POP3account *account; 39 POP3account *account;
40 mailpop3 *m_pop3; 40 mailpop3 *m_pop3;
41}; 41};
42 42
43#endif 43#endif
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp
index 903ef4d..62523bf 100644
--- a/noncore/net/mail/pop3wrapper.cpp
+++ b/noncore/net/mail/pop3wrapper.cpp
@@ -154,137 +154,136 @@ QString POP3wrapper::parseAddressList( mailimf_address_list *list )
154 result.append( parseMailbox( addr->ad_data.ad_mailbox ) ); 154 result.append( parseMailbox( addr->ad_data.ad_mailbox ) );
155 break; 155 break;
156 case MAILIMF_ADDRESS_GROUP: 156 case MAILIMF_ADDRESS_GROUP:
157 result.append( parseGroup( addr->ad_data.ad_group ) ); 157 result.append( parseGroup( addr->ad_data.ad_group ) );
158 break; 158 break;
159 default: 159 default:
160 qDebug( "POP3: unkown mailimf address type" ); 160 qDebug( "POP3: unkown mailimf address type" );
161 break; 161 break;
162 } 162 }
163 } 163 }
164 164
165 return result; 165 return result;
166} 166}
167 167
168QString POP3wrapper::parseGroup( mailimf_group *group ) 168QString POP3wrapper::parseGroup( mailimf_group *group )
169{ 169{
170 QString result( "" ); 170 QString result( "" );
171 171
172 result.append( group->grp_display_name ); 172 result.append( group->grp_display_name );
173 result.append( ": " ); 173 result.append( ": " );
174 174
175 if ( group->grp_mb_list != NULL ) { 175 if ( group->grp_mb_list != NULL ) {
176 result.append( parseMailboxList( group->grp_mb_list ) ); 176 result.append( parseMailboxList( group->grp_mb_list ) );
177 } 177 }
178 178
179 result.append( ";" ); 179 result.append( ";" );
180 180
181 return result; 181 return result;
182} 182}
183 183
184QString POP3wrapper::parseMailbox( mailimf_mailbox *box ) 184QString POP3wrapper::parseMailbox( mailimf_mailbox *box )
185{ 185{
186 QString result( "" ); 186 QString result( "" );
187 187
188 if ( box->mb_display_name == NULL ) { 188 if ( box->mb_display_name == NULL ) {
189 result.append( box->mb_addr_spec ); 189 result.append( box->mb_addr_spec );
190 } else { 190 } else {
191 result.append( box->mb_display_name ); 191 result.append( box->mb_display_name );
192 result.append( " <" ); 192 result.append( " <" );
193 result.append( box->mb_addr_spec ); 193 result.append( box->mb_addr_spec );
194 result.append( ">" ); 194 result.append( ">" );
195 } 195 }
196 196
197 return result; 197 return result;
198} 198}
199 199
200QString POP3wrapper::parseMailboxList( mailimf_mailbox_list *list ) 200QString POP3wrapper::parseMailboxList( mailimf_mailbox_list *list )
201{ 201{
202 QString result( "" ); 202 QString result( "" );
203 203
204 bool first = true; 204 bool first = true;
205 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) { 205 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) {
206 mailimf_mailbox *box = (mailimf_mailbox *) current->data; 206 mailimf_mailbox *box = (mailimf_mailbox *) current->data;
207 207
208 if ( !first ) { 208 if ( !first ) {
209 result.append( "," ); 209 result.append( "," );
210 } else { 210 } else {
211 first = false; 211 first = false;
212 } 212 }
213 213
214 result.append( parseMailbox( box ) ); 214 result.append( parseMailbox( box ) );
215 } 215 }
216 216
217 return result; 217 return result;
218} 218}
219 219
220void POP3wrapper::login() 220void POP3wrapper::login()
221{ 221{
222 if ( m_pop3 != NULL ) logout(); 222 if ( m_pop3 != NULL ) logout();
223 223
224 const char *server, *user, *pass; 224 const char *server, *user, *pass;
225 uint16_t port; 225 uint16_t port;
226 int err = MAILPOP3_NO_ERROR; 226 int err = MAILPOP3_NO_ERROR;
227 227
228 server = account->getServer().latin1(); 228 server = account->getServer().latin1();
229 port = account->getPort().toUInt(); 229 port = account->getPort().toUInt();
230 user = account->getUser().latin1(); 230 user = account->getUser().latin1();
231 pass = account->getPassword().latin1(); 231 pass = account->getPassword().latin1();
232 232
233 m_pop3 = mailpop3_new( 200, &pop3_progress ); 233 m_pop3 = mailpop3_new( 200, &pop3_progress );
234 234
235 // connect 235 // connect
236 if (account->getSSL()) { 236 if (account->getSSL()) {
237 err = mailpop3_ssl_connect( m_pop3, (char*)server, port ); 237 err = mailpop3_ssl_connect( m_pop3, (char*)server, port );
238 } else { 238 } else {
239 err = mailpop3_socket_connect( m_pop3, (char*)server, port ); 239 err = mailpop3_socket_connect( m_pop3, (char*)server, port );
240 } 240 }
241 241
242 if ( err != MAILPOP3_NO_ERROR ) { 242 if ( err != MAILPOP3_NO_ERROR ) {
243 qDebug( "pop3: error connecting to %s\n reason: %s", server, 243 qDebug( "pop3: error connecting to %s\n reason: %s", server,
244 m_pop3->pop3_response ); 244 m_pop3->pop3_response );
245 mailpop3_free( m_pop3 ); 245 mailpop3_free( m_pop3 );
246 m_pop3 = NULL; 246 m_pop3 = NULL;
247 return; 247 return;
248 } 248 }
249 qDebug( "POP3: connected!" ); 249 qDebug( "POP3: connected!" );
250 250
251 // login 251 // login
252 // TODO: decide if apop or plain login should be used 252 // TODO: decide if apop or plain login should be used
253 err = mailpop3_login( m_pop3, (char *) user, (char *) pass ); 253 err = mailpop3_login( m_pop3, (char *) user, (char *) pass );
254 if ( err != MAILPOP3_NO_ERROR ) { 254 if ( err != MAILPOP3_NO_ERROR ) {
255 qDebug( "pop3: error logging in: %s", m_pop3->pop3_response ); 255 qDebug( "pop3: error logging in: %s", m_pop3->pop3_response );
256 logout(); 256 logout();
257 return; 257 return;
258 } 258 }
259 259
260 qDebug( "POP3: logged in!" ); 260 qDebug( "POP3: logged in!" );
261} 261}
262 262
263void POP3wrapper::logout() 263void POP3wrapper::logout()
264{ 264{
265 int err = MAILPOP3_NO_ERROR; 265 int err = MAILPOP3_NO_ERROR;
266 if ( m_pop3 == NULL ) return; 266 if ( m_pop3 == NULL ) return;
267 err = mailpop3_quit( m_pop3 ); 267 err = mailpop3_quit( m_pop3 );
268 mailpop3_free( m_pop3 ); 268 mailpop3_free( m_pop3 );
269 m_pop3 = NULL; 269 m_pop3 = NULL;
270} 270}
271 271
272 272
273QList<Folder>* POP3wrapper::listFolders() 273QList<Folder>* POP3wrapper::listFolders()
274{ 274{
275 QList<Folder> * folders = new QList<Folder>(); 275 QList<Folder> * folders = new QList<Folder>();
276 folders->setAutoDelete( true ); 276 folders->setAutoDelete( true );
277 Folder*inb=new Folder("INBOX"); 277 Folder*inb=new Folder("INBOX");
278 folders->append(inb); 278 folders->append(inb);
279 return folders; 279 return folders;
280} 280}
281 281
282QString POP3wrapper::fetchPart(const RecMail&,const QValueList<int>&,bool) 282QString POP3wrapper::fetchPart(const RecMail&,const RecPart&)
283{ 283{
284 return ""; 284 return "";
285} 285}
286 286
287QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) 287void POP3wrapper::deleteMail(const RecMail&)
288{ 288{
289 return "";
290} 289}
diff --git a/noncore/net/mail/pop3wrapper.h b/noncore/net/mail/pop3wrapper.h
index 3b24564..ef972c8 100644
--- a/noncore/net/mail/pop3wrapper.h
+++ b/noncore/net/mail/pop3wrapper.h
@@ -1,43 +1,43 @@
1#ifndef __POP3WRAPPER 1#ifndef __POP3WRAPPER
2#define __POP3WRAPPER 2#define __POP3WRAPPER
3 3
4#include "mailwrapper.h" 4#include "mailwrapper.h"
5#include "abstractmail.h" 5#include "abstractmail.h"
6 6
7class RecMail; 7class RecMail;
8class RecBody; 8class RecBody;
9struct mailpop3; 9struct mailpop3;
10 10
11class POP3wrapper : public AbstractMail 11class POP3wrapper : public AbstractMail
12{ 12{
13 Q_OBJECT 13 Q_OBJECT
14 14
15public: 15public:
16 POP3wrapper( POP3account *a ); 16 POP3wrapper( POP3account *a );
17 virtual ~POP3wrapper(); 17 virtual ~POP3wrapper();
18 /* mailbox will be ignored */ 18 /* mailbox will be ignored */
19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
20 virtual QList<Folder>* listFolders(); 20 virtual QList<Folder>* listFolders();
21 virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false);
22 virtual QString fetchPart(const RecMail&mail,const RecPart&part); 21 virtual QString fetchPart(const RecMail&mail,const RecPart&part);
22 virtual void deleteMail(const RecMail&mail);
23 23
24 RecBody fetchBody( const RecMail &mail ); 24 RecBody fetchBody( const RecMail &mail );
25 static void pop3_progress( size_t current, size_t maximum ); 25 static void pop3_progress( size_t current, size_t maximum );
26 26
27protected: 27protected:
28 void login(); 28 void login();
29 void logout(); 29 void logout();
30 30
31private: 31private:
32 RecMail *parseHeader( const char *header ); 32 RecMail *parseHeader( const char *header );
33 RecBody parseBody( const char *message ); 33 RecBody parseBody( const char *message );
34 QString parseMailboxList( mailimf_mailbox_list *list ); 34 QString parseMailboxList( mailimf_mailbox_list *list );
35 QString parseMailbox( mailimf_mailbox *box ); 35 QString parseMailbox( mailimf_mailbox *box );
36 QString parseGroup( mailimf_group *group ); 36 QString parseGroup( mailimf_group *group );
37 QString parseAddressList( mailimf_address_list *list ); 37 QString parseAddressList( mailimf_address_list *list );
38 QString parseDateTime( mailimf_date_time *date ); 38 QString parseDateTime( mailimf_date_time *date );
39 POP3account *account; 39 POP3account *account;
40 mailpop3 *m_pop3; 40 mailpop3 *m_pop3;
41}; 41};
42 42
43#endif 43#endif