summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/imapwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/imapwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index 4f0c849..f73f4cc 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -1,17 +1,19 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#include <stdlib.h> 2#include <stdlib.h>
3#include <libetpan/libetpan.h> 3#include <libetpan/libetpan.h>
4#include <qpe/global.h> 4#include <qpe/global.h>
5#include <qapplication.h> 5#include <qapplication.h>
6//Added by qt3to4:
7#include <Q3ValueList>
6#include "imapwrapper.h" 8#include "imapwrapper.h"
7#include "mailtypes.h" 9#include "mailtypes.h"
8#include "logindialog.h" 10#include "logindialog.h"
9#include <qprogressbar.h> 11#include <q3progressbar.h>
10#include "genericwrapper.h" 12#include "genericwrapper.h"
11#include <kglobal.h> 13#include <kglobal.h>
12 14
13using namespace Opie::Core; 15using namespace Opie::Core;
14int IMAPwrapper::mMax = 0; 16int IMAPwrapper::mMax = 0;
15int IMAPwrapper::mCurrent = 0; 17int IMAPwrapper::mCurrent = 0;
16 18
17IMAPwrapper::IMAPwrapper( IMAPaccount *a ) 19IMAPwrapper::IMAPwrapper( IMAPaccount *a )
@@ -234,17 +236,17 @@ void IMAPwrapper::logout()
234 if (!m_imap) return; 236 if (!m_imap) return;
235 err = mailimap_logout( m_imap ); 237 err = mailimap_logout( m_imap );
236 err = mailimap_close( m_imap ); 238 err = mailimap_close( m_imap );
237 mailimap_free( m_imap ); 239 mailimap_free( m_imap );
238 m_imap = 0; 240 m_imap = 0;
239 m_Lastmbox = ""; 241 m_Lastmbox = "";
240} 242}
241 243
242void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb) 244void IMAPwrapper::listMessages(const QString&mailbox,Q3ValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb)
243{ 245{
244 246
245 int tryAgain = 1; 247 int tryAgain = 1;
246 while ( tryAgain >= 0 ) { 248 while ( tryAgain >= 0 ) {
247 int err = MAILIMAP_NO_ERROR; 249 int err = MAILIMAP_NO_ERROR;
248 clist *result = 0; 250 clist *result = 0;
249 clistcell *current; 251 clistcell *current;
250 mailimap_fetch_type *fetchType = 0; 252 mailimap_fetch_type *fetchType = 0;
@@ -315,26 +317,26 @@ void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSma
315 else 317 else
316 qDebug("try again... "); 318 qDebug("try again... ");
317 } 319 }
318 320
319 if (result) mailimap_fetch_list_free(result); 321 if (result) mailimap_fetch_list_free(result);
320 } 322 }
321} 323}
322 324
323QValueList<Opie::Core::OSmartPointer<Folder> >* IMAPwrapper::listFolders() 325Q3ValueList<Opie::Core::OSmartPointer<Folder> >* IMAPwrapper::listFolders()
324{ 326{
325 const char *path, *mask; 327 const char *path, *mask;
326 int err = MAILIMAP_NO_ERROR; 328 int err = MAILIMAP_NO_ERROR;
327 clist *result = 0; 329 clist *result = 0;
328 clistcell *current = 0; 330 clistcell *current = 0;
329 clistcell*cur_flag = 0; 331 clistcell*cur_flag = 0;
330 mailimap_mbx_list_flags*bflags = 0; 332 mailimap_mbx_list_flags*bflags = 0;
331 333
332 QValueList<FolderP>* folders = new QValueList<FolderP>(); 334 Q3ValueList<FolderP>* folders = new Q3ValueList<FolderP>();
333 login(); 335 login();
334 if (!m_imap) { 336 if (!m_imap) {
335 return folders; 337 return folders;
336 } 338 }
337 339
338/* 340/*
339 * First we have to check for INBOX 'cause it sometimes it's not inside the path. 341 * First we have to check for INBOX 'cause it sometimes it's not inside the path.
340 * We must not forget to filter them out in next loop! 342 * We must not forget to filter them out in next loop!
@@ -608,17 +610,17 @@ RecBodyP IMAPwrapper::fetchBody(const RecMailP&mail)
608 err = mailimap_fetch( m_imap, set, fetchType, &result ); 610 err = mailimap_fetch( m_imap, set, fetchType, &result );
609 mailimap_set_free( set ); 611 mailimap_set_free( set );
610 mailimap_fetch_type_free( fetchType ); 612 mailimap_fetch_type_free( fetchType );
611 613
612 if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) { 614 if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) {
613 mailimap_msg_att * msg_att; 615 mailimap_msg_att * msg_att;
614 msg_att = (mailimap_msg_att*)current->data; 616 msg_att = (mailimap_msg_att*)current->data;
615 mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->att_list->first->data; 617 mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->att_list->first->data;
616 QValueList<int> path; 618 Q3ValueList<int> path;
617 body_desc = item->att_data.att_static->att_data.att_body; 619 body_desc = item->att_data.att_static->att_data.att_body;
618 traverseBody(mail,body_desc,body,0,path); 620 traverseBody(mail,body_desc,body,0,path);
619 } else { 621 } else {
620 qDebug("error fetching body %d (%d): %s", err, MAILIMAP_NO_ERROR, m_imap->imap_response ); 622 qDebug("error fetching body %d (%d): %s", err, MAILIMAP_NO_ERROR, m_imap->imap_response );
621 } 623 }
622 if (result) mailimap_fetch_list_free(result); 624 if (result) mailimap_fetch_list_free(result);
623 return body; 625 return body;
624} 626}
@@ -659,17 +661,17 @@ QStringList IMAPwrapper::address_list_to_stringlist(clist*list)
659 l.append(QString(from)); 661 l.append(QString(from));
660 if (++count > 99) { 662 if (++count > 99) {
661 break; 663 break;
662 } 664 }
663 } 665 }
664 return l; 666 return l;
665} 667}
666 668
667encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int>&path,bool internal_call) 669encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const Q3ValueList<int>&path,bool internal_call)
668{ 670{
669 encodedString*res=new encodedString; 671 encodedString*res=new encodedString;
670 int err; 672 int err;
671 mailimap_fetch_type *fetchType; 673 mailimap_fetch_type *fetchType;
672 mailimap_set *set; 674 mailimap_set *set;
673 clistcell*current,*cur; 675 clistcell*current,*cur;
674 mailimap_section_part * section_part = 0; 676 mailimap_section_part * section_part = 0;
675 mailimap_section_spec * section_spec = 0; 677 mailimap_section_spec * section_spec = 0;
@@ -733,25 +735,25 @@ encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int
733 } 735 }
734 if (result) mailimap_fetch_list_free(result); 736 if (result) mailimap_fetch_list_free(result);
735 return res; 737 return res;
736} 738}
737 739
738/* current_recursion is for recursive calls. 740/* current_recursion is for recursive calls.
739 current_count means the position inside the internal loop! */ 741 current_count means the position inside the internal loop! */
740void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&target_body, 742void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&target_body,
741 int current_recursion,QValueList<int>recList,int current_count) 743 int current_recursion,Q3ValueList<int>recList,int current_count)
742{ 744{
743 if (!body || current_recursion>=10) { 745 if (!body || current_recursion>=10) {
744 return; 746 return;
745 } 747 }
746 switch (body->bd_type) { 748 switch (body->bd_type) {
747 case MAILIMAP_BODY_1PART: 749 case MAILIMAP_BODY_1PART:
748 { 750 {
749 QValueList<int>countlist = recList; 751 Q3ValueList<int>countlist = recList;
750 countlist.append(current_count); 752 countlist.append(current_count);
751 RecPartP currentPart = new RecPart(); 753 RecPartP currentPart = new RecPart();
752 mailimap_body_type_1part*part1 = body->bd_data.bd_body_1part; 754 mailimap_body_type_1part*part1 = body->bd_data.bd_body_1part;
753 QString id(""); 755 QString id("");
754 currentPart->setPositionlist(countlist); 756 currentPart->setPositionlist(countlist);
755 for (unsigned int j = 0; j < countlist.count();++j) { 757 for (unsigned int j = 0; j < countlist.count();++j) {
756 id+=(j>0?" ":""); 758 id+=(j>0?" ":"");
757 id+=QString("%1").arg(countlist[j]); 759 id+=QString("%1").arg(countlist[j]);
@@ -794,17 +796,17 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&t
794 } 796 }
795 if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_MSG) { 797 if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_MSG) {
796 traverseBody(mail,part1->bd_data.bd_type_msg->bd_body,target_body,current_recursion+1,countlist); 798 traverseBody(mail,part1->bd_data.bd_type_msg->bd_body,target_body,current_recursion+1,countlist);
797 } 799 }
798 } 800 }
799 break; 801 break;
800 case MAILIMAP_BODY_MPART: 802 case MAILIMAP_BODY_MPART:
801 { 803 {
802 QValueList<int>countlist = recList; 804 Q3ValueList<int>countlist = recList;
803 clistcell*current=0; 805 clistcell*current=0;
804 mailimap_body*current_body=0; 806 mailimap_body*current_body=0;
805 unsigned int ccount = 1; 807 unsigned int ccount = 1;
806 mailimap_body_type_mpart*mailDescription = body->bd_data.bd_body_mpart; 808 mailimap_body_type_mpart*mailDescription = body->bd_data.bd_body_mpart;
807 for (current=clist_begin(mailDescription->bd_list);current!=0;current=clist_next(current)) { 809 for (current=clist_begin(mailDescription->bd_list);current!=0;current=clist_next(current)) {
808 current_body = (mailimap_body*)current->data; 810 current_body = (mailimap_body*)current->data;
809 if (current_body->bd_type==MAILIMAP_BODY_MPART) { 811 if (current_body->bd_type==MAILIMAP_BODY_MPART) {
810 RecPartP targetPart = new RecPart(); 812 RecPartP targetPart = new RecPart();
@@ -980,17 +982,17 @@ void IMAPwrapper::fillBodyFields(RecPartP&target_part,mailimap_body_fields*which
980 } 982 }
981 } 983 }
982 if (which->bd_description) { 984 if (which->bd_description) {
983 target_part->setDescription(QString(which->bd_description)); 985 target_part->setDescription(QString(which->bd_description));
984 } 986 }
985 target_part->setEncoding(encoding); 987 target_part->setEncoding(encoding);
986 target_part->setSize(which->bd_size); 988 target_part->setSize(which->bd_size);
987} 989}
988void IMAPwrapper::deleteMailList(const QValueList<RecMailP>&target) 990void IMAPwrapper::deleteMailList(const Q3ValueList<RecMailP>&target)
989{ 991{
990 //#if 0 992 //#if 0
991 mailimap_flag_list*flist; 993 mailimap_flag_list*flist;
992 mailimap_set *set; 994 mailimap_set *set;
993 mailimap_store_att_flags * store_flags; 995 mailimap_store_att_flags * store_flags;
994 int err; 996 int err;
995 login(); 997 login();
996 //#endif 998 //#endif
@@ -1000,17 +1002,17 @@ void IMAPwrapper::deleteMailList(const QValueList<RecMailP>&target)
1000 int iii = 0; 1002 int iii = 0;
1001 int count = target.count(); 1003 int count = target.count();
1002 // qDebug("imap remove count %d ", count); 1004 // qDebug("imap remove count %d ", count);
1003 1005
1004 1006
1005 mMax = count; 1007 mMax = count;
1006 progress( i18n("Delete")); 1008 progress( i18n("Delete"));
1007 1009
1008 QProgressBar wid ( count ); 1010 Q3ProgressBar wid ( count );
1009 wid.setCaption( i18n("Deleting ...")); 1011 wid.setCaption( i18n("Deleting ..."));
1010 wid.show(); 1012 wid.show();
1011 while (iii < count ) { 1013 while (iii < count ) {
1012 Global::statusMessage(i18n("Delete message %1 of %2").arg(iii).arg(count)); 1014 Global::statusMessage(i18n("Delete message %1 of %2").arg(iii).arg(count));
1013 wid.setProgress( iii ); 1015 wid.setProgress( iii );
1014 wid.raise(); 1016 wid.raise();
1015 qApp->processEvents(); 1017 qApp->processEvents();
1016 RecMailP mail = (*target.at( iii )); 1018 RecMailP mail = (*target.at( iii ));
@@ -1109,17 +1111,17 @@ void IMAPwrapper::answeredMail(const RecMailP&mail)
1109 mailimap_store_att_flags_free(store_flags); 1111 mailimap_store_att_flags_free(store_flags);
1110 1112
1111 if (err != MAILIMAP_NO_ERROR) { 1113 if (err != MAILIMAP_NO_ERROR) {
1112 // odebug << "error marking mail: " << m_imap->imap_response << "" << oendl; 1114 // odebug << "error marking mail: " << m_imap->imap_response << "" << oendl;
1113 return; 1115 return;
1114 } 1116 }
1115} 1117}
1116 1118
1117QString IMAPwrapper::fetchTextPart(const RecMailP&mail,const QValueList<int>&path,bool internal_call,const QString&enc) 1119QString IMAPwrapper::fetchTextPart(const RecMailP&mail,const Q3ValueList<int>&path,bool internal_call,const QString&enc)
1118{ 1120{
1119 QString body(""); 1121 QString body("");
1120 encodedString*res = fetchRawPart(mail,path,internal_call); 1122 encodedString*res = fetchRawPart(mail,path,internal_call);
1121 encodedString*r = decode_String(res,enc); 1123 encodedString*r = decode_String(res,enc);
1122 delete res; 1124 delete res;
1123 if (r) { 1125 if (r) {
1124 if (r->Length()>0) { 1126 if (r->Length()>0) {
1125 body = r->Content(); 1127 body = r->Content();
@@ -1294,17 +1296,17 @@ const QString&IMAPwrapper::getName()const
1294{ 1296{
1295 // odebug << "Get name: " << account->getAccountName().latin1() << "" << oendl; 1297 // odebug << "Get name: " << account->getAccountName().latin1() << "" << oendl;
1296 return account->getAccountName(); 1298 return account->getAccountName();
1297} 1299}
1298 1300
1299encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail) 1301encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail)
1300{ 1302{
1301 // dummy 1303 // dummy
1302 QValueList<int> path; 1304 Q3ValueList<int> path;
1303 return fetchRawPart(mail,path,false); 1305 return fetchRawPart(mail,path,false);
1304} 1306}
1305 1307
1306void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, 1308void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder,
1307 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb) 1309 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb)
1308{ 1310{
1309 if (targetWrapper != this || maxSizeInKb > 0 ) { 1311 if (targetWrapper != this || maxSizeInKb > 0 ) {
1310 mMax = 0; 1312 mMax = 0;