summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper
Unidiff
Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp5
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h16
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp14
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h20
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h1
-rw-r--r--noncore/net/mail/libmailwrapper/mailwrapper.cpp12
-rw-r--r--noncore/net/mail/libmailwrapper/mailwrapper.h16
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp39
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h13
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp24
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.h20
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.h4
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h4
16 files changed, 114 insertions, 94 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index ac6f380..7e6d383 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -102,47 +102,48 @@ QString AbstractMail::convert_String(const char*text)
102/* cp & paste from launcher */ 102/* cp & paste from launcher */
103QString AbstractMail::gen_attachment_id() 103QString AbstractMail::gen_attachment_id()
104{ 104{
105 QFile file( "/proc/sys/kernel/random/uuid" ); 105 QFile file( "/proc/sys/kernel/random/uuid" );
106 if (!file.open(IO_ReadOnly ) ) 106 if (!file.open(IO_ReadOnly ) )
107 return QString::null; 107 return QString::null;
108 108
109 QTextStream stream(&file); 109 QTextStream stream(&file);
110 110
111 return "{" + stream.read().stripWhiteSpace() + "}"; 111 return "{" + stream.read().stripWhiteSpace() + "}";
112} 112}
113 113
114int AbstractMail::createMbox(const QString&,const Folder*,const QString& delemiter,bool) 114int AbstractMail::createMbox(const QString&,const FolderP&,const QString& delemiter,bool)
115{ 115{
116 return 0; 116 return 0;
117} 117}
118 118
119QString AbstractMail::defaultLocalfolder() 119QString AbstractMail::defaultLocalfolder()
120{ 120{
121 QString f = getenv( "HOME" ); 121 QString f = getenv( "HOME" );
122 f += "/Applications/opiemail/localmail"; 122 f += "/Applications/opiemail/localmail";
123 return f; 123 return f;
124} 124}
125 125
126QString AbstractMail::draftFolder() 126QString AbstractMail::draftFolder()
127{ 127{
128 return QString("Drafts"); 128 return QString("Drafts");
129} 129}
130 130
131/* temporary - will be removed when implemented in all classes */ 131/* temporary - will be removed when implemented in all classes */
132void AbstractMail::deleteMails(const QString &,QList<RecMail> &) 132void AbstractMail::deleteMails(const QString &,QList<RecMail> &)
133{ 133{
134} 134}
135 135
136void AbstractMail::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 136void AbstractMail::mvcpAllMails(const FolderP&fromFolder,
137 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
137{ 138{
138 QList<RecMail> t; 139 QList<RecMail> t;
139 listMessages(fromFolder->getName(),t); 140 listMessages(fromFolder->getName(),t);
140 encodedString*st = 0; 141 encodedString*st = 0;
141 while (t.count()>0) { 142 while (t.count()>0) {
142 RecMail*r = t.at(0); 143 RecMail*r = t.at(0);
143 st = fetchRawBody(*r); 144 st = fetchRawBody(*r);
144 if (st) { 145 if (st) {
145 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); 146 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder);
146 delete st; 147 delete st;
147 } 148 }
148 t.removeFirst(); 149 t.removeFirst();
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index d377452..d911468 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -1,61 +1,65 @@
1#ifndef __abstract_mail_ 1#ifndef __abstract_mail_
2#define __abstract_mail_ 2#define __abstract_mail_
3 3
4#include "maildefines.h" 4#include "maildefines.h"
5 5
6#include <qobject.h>
7#include "settings.h" 6#include "settings.h"
8 7
8#include <qobject.h>
9#include <opie2/osmart_pointer.h>
10
9class RecMail; 11class RecMail;
10class RecBody; 12class RecBody;
11class RecPart; 13class RecPart;
12class IMAPwrapper; 14class IMAPwrapper;
13class POP3wrapper; 15class POP3wrapper;
14class Folder; 16class Folder;
15class encodedString; 17class encodedString;
16struct folderStat; 18struct folderStat;
17 19
18class AbstractMail:public QObject 20class AbstractMail:public QObject
19{ 21{
20 Q_OBJECT 22 Q_OBJECT
21public: 23public:
22 AbstractMail(){}; 24 AbstractMail(){};
23 virtual ~AbstractMail(){} 25 virtual ~AbstractMail(){}
24 virtual QList<Folder>* listFolders()=0; 26 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders()=0;
25 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; 27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
26 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0; 28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
27 virtual RecBody fetchBody(const RecMail&mail)=0; 29 virtual RecBody fetchBody(const RecMail&mail)=0;
28 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0; 30 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0;
29 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0; 31 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0;
30 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0; 32 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0;
31 virtual encodedString* fetchRawBody(const RecMail&mail)=0; 33 virtual encodedString* fetchRawBody(const RecMail&mail)=0;
32 34
33 virtual void deleteMail(const RecMail&mail)=0; 35 virtual void deleteMail(const RecMail&mail)=0;
34 virtual void answeredMail(const RecMail&mail)=0; 36 virtual void answeredMail(const RecMail&mail)=0;
35 virtual int deleteAllMail(const Folder*)=0; 37 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&)=0;
36 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 38 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
37 virtual int deleteMbox(const Folder*)=0; 39 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&)=0;
38 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0; 40 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
39 41
40 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 42 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
43 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
41 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 44 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
42 45
43 virtual void cleanMimeCache(){}; 46 virtual void cleanMimeCache(){};
44 /* mail box methods */ 47 /* mail box methods */
45 /* parameter is the box to create. 48 /* parameter is the box to create.
46 * if the implementing subclass has prefixes, 49 * if the implementing subclass has prefixes,
47 * them has to be appended automatic. 50 * them has to be appended automatic.
48 */ 51 */
49 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false); 52 virtual int createMbox(const QString&,const Opie::osmart_pointer<Folder>&parentfolder=0,
53 const QString& delemiter="/",bool getsubfolder=false);
50 virtual void logout()=0; 54 virtual void logout()=0;
51 55
52 static AbstractMail* getWrapper(IMAPaccount *a); 56 static AbstractMail* getWrapper(IMAPaccount *a);
53 static AbstractMail* getWrapper(POP3account *a); 57 static AbstractMail* getWrapper(POP3account *a);
54 static AbstractMail* getWrapper(NNTPaccount *a); 58 static AbstractMail* getWrapper(NNTPaccount *a);
55 /* mbox only! */ 59 /* mbox only! */
56 static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders"); 60 static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders");
57 static AbstractMail* getWrapper(Account*a); 61 static AbstractMail* getWrapper(Account*a);
58 62
59 static QString defaultLocalfolder(); 63 static QString defaultLocalfolder();
60 static QString draftFolder(); 64 static QString draftFolder();
61 65
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.h b/noncore/net/mail/libmailwrapper/genericwrapper.h
index b3cd4fe..d0db45a 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.h
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.h
@@ -29,25 +29,25 @@ struct mailimf_in_reply_to;
29 */ 29 */
30class Genericwrapper : public AbstractMail 30class Genericwrapper : public AbstractMail
31{ 31{
32 Q_OBJECT 32 Q_OBJECT
33public: 33public:
34 Genericwrapper(); 34 Genericwrapper();
35 virtual ~Genericwrapper(); 35 virtual ~Genericwrapper();
36 36
37 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part); 37 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part);
38 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part); 38 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part);
39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part); 39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);
40 virtual void cleanMimeCache(); 40 virtual void cleanMimeCache();
41 virtual int deleteMbox(const Folder*){return 1;} 41 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&){return 1;}
42 virtual void logout(){}; 42 virtual void logout(){};
43 virtual void storeMessage(const char*msg,size_t length, const QString&folder){}; 43 virtual void storeMessage(const char*msg,size_t length, const QString&folder){};
44 44
45protected: 45protected:
46 RecBody parseMail( mailmessage * msg ); 46 RecBody parseMail( mailmessage * msg );
47 QString parseMailboxList( mailimf_mailbox_list *list ); 47 QString parseMailboxList( mailimf_mailbox_list *list );
48 QString parseMailbox( mailimf_mailbox *box ); 48 QString parseMailbox( mailimf_mailbox *box );
49 QString parseGroup( mailimf_group *group ); 49 QString parseGroup( mailimf_group *group );
50 QString parseAddressList( mailimf_address_list *list ); 50 QString parseAddressList( mailimf_address_list *list );
51 QString parseDateTime( mailimf_date_time *date ); 51 QString parseDateTime( mailimf_date_time *date );
52 52
53 void traverseBody(RecBody&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1); 53 void traverseBody(RecBody&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1);
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index e29a0a0..3b3be0f 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -257,35 +257,34 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target )
257 m->setMbox(mailbox); 257 m->setMbox(mailbox);
258 m->setWrapper(this); 258 m->setWrapper(this);
259 target.append(m); 259 target.append(m);
260 } 260 }
261 } 261 }
262 Global::statusMessage(tr("Mailbox has %1 mails").arg(target.count())); 262 Global::statusMessage(tr("Mailbox has %1 mails").arg(target.count()));
263 } else { 263 } else {
264 Global::statusMessage(tr("Error fetching headers: %1").arg(m_imap->imap_response)); 264 Global::statusMessage(tr("Error fetching headers: %1").arg(m_imap->imap_response));
265 } 265 }
266 if (result) mailimap_fetch_list_free(result); 266 if (result) mailimap_fetch_list_free(result);
267} 267}
268 268
269QList<Folder>* IMAPwrapper::listFolders() 269QValueList<Opie::osmart_pointer<Folder> >* IMAPwrapper::listFolders()
270{ 270{
271 const char *path, *mask; 271 const char *path, *mask;
272 int err = MAILIMAP_NO_ERROR; 272 int err = MAILIMAP_NO_ERROR;
273 clist *result = 0; 273 clist *result = 0;
274 clistcell *current = 0; 274 clistcell *current = 0;
275 clistcell*cur_flag = 0; 275 clistcell*cur_flag = 0;
276 mailimap_mbx_list_flags*bflags = 0; 276 mailimap_mbx_list_flags*bflags = 0;
277 277
278 QList<Folder> * folders = new QList<Folder>(); 278 QValueList<FolderP>* folders = new QValueList<FolderP>();
279 folders->setAutoDelete( false );
280 login(); 279 login();
281 if (!m_imap) { 280 if (!m_imap) {
282 return folders; 281 return folders;
283 } 282 }
284 283
285/* 284/*
286 * First we have to check for INBOX 'cause it sometimes it's not inside the path. 285 * First we have to check for INBOX 'cause it sometimes it's not inside the path.
287 * We must not forget to filter them out in next loop! 286 * We must not forget to filter them out in next loop!
288 * it seems like ugly code. and yes - it is ugly code. but the best way. 287 * it seems like ugly code. and yes - it is ugly code. but the best way.
289 */ 288 */
290 QString temp; 289 QString temp;
291 mask = "INBOX" ; 290 mask = "INBOX" ;
@@ -957,25 +956,25 @@ encodedString* IMAPwrapper::fetchDecodedPart(const RecMail&mail,const RecPart&pa
957{ 956{
958 encodedString*res = fetchRawPart(mail,part.Positionlist(),false); 957 encodedString*res = fetchRawPart(mail,part.Positionlist(),false);
959 encodedString*r = decode_String(res,part.Encoding()); 958 encodedString*r = decode_String(res,part.Encoding());
960 delete res; 959 delete res;
961 return r; 960 return r;
962} 961}
963 962
964encodedString* IMAPwrapper::fetchRawPart(const RecMail&mail,const RecPart&part) 963encodedString* IMAPwrapper::fetchRawPart(const RecMail&mail,const RecPart&part)
965{ 964{
966 return fetchRawPart(mail,part.Positionlist(),false); 965 return fetchRawPart(mail,part.Positionlist(),false);
967} 966}
968 967
969int IMAPwrapper::deleteAllMail(const Folder*folder) 968int IMAPwrapper::deleteAllMail(const FolderP&folder)
970{ 969{
971 login(); 970 login();
972 if (!m_imap) { 971 if (!m_imap) {
973 return 0; 972 return 0;
974 } 973 }
975 mailimap_flag_list*flist; 974 mailimap_flag_list*flist;
976 mailimap_set *set; 975 mailimap_set *set;
977 mailimap_store_att_flags * store_flags; 976 mailimap_store_att_flags * store_flags;
978 int err = selectMbox(folder->getName()); 977 int err = selectMbox(folder->getName());
979 if ( err != MAILIMAP_NO_ERROR ) { 978 if ( err != MAILIMAP_NO_ERROR ) {
980 return 0; 979 return 0;
981 } 980 }
@@ -998,25 +997,25 @@ int IMAPwrapper::deleteAllMail(const Folder*folder)
998 } 997 }
999 qDebug("deleting mail: %s",m_imap->imap_response); 998 qDebug("deleting mail: %s",m_imap->imap_response);
1000 /* should we realy do that at this moment? */ 999 /* should we realy do that at this moment? */
1001 err = mailimap_expunge(m_imap); 1000 err = mailimap_expunge(m_imap);
1002 if (err != MAILIMAP_NO_ERROR) { 1001 if (err != MAILIMAP_NO_ERROR) {
1003 Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); 1002 Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response));
1004 return 0; 1003 return 0;
1005 } 1004 }
1006 qDebug("Delete successfull %s",m_imap->imap_response); 1005 qDebug("Delete successfull %s",m_imap->imap_response);
1007 return 1; 1006 return 1;
1008} 1007}
1009 1008
1010int IMAPwrapper::createMbox(const QString&folder,const Folder*parentfolder,const QString& delemiter,bool getsubfolder) 1009int IMAPwrapper::createMbox(const QString&folder,const FolderP&parentfolder,const QString& delemiter,bool getsubfolder)
1011{ 1010{
1012 if (folder.length()==0) return 0; 1011 if (folder.length()==0) return 0;
1013 login(); 1012 login();
1014 if (!m_imap) {return 0;} 1013 if (!m_imap) {return 0;}
1015 QString pre = account->getPrefix(); 1014 QString pre = account->getPrefix();
1016 if (delemiter.length()>0 && pre.findRev(delemiter)!=pre.length()-1) { 1015 if (delemiter.length()>0 && pre.findRev(delemiter)!=pre.length()-1) {
1017 pre+=delemiter; 1016 pre+=delemiter;
1018 } 1017 }
1019 if (parentfolder) { 1018 if (parentfolder) {
1020 pre += parentfolder->getDisplayName()+delemiter; 1019 pre += parentfolder->getDisplayName()+delemiter;
1021 } 1020 }
1022 pre+=folder; 1021 pre+=folder;
@@ -1028,25 +1027,25 @@ int IMAPwrapper::createMbox(const QString&folder,const Folder*parentfolder,const
1028 return 0; 1027 return 0;
1029 } 1028 }
1030 } 1029 }
1031 qDebug("Creating %s",pre.latin1()); 1030 qDebug("Creating %s",pre.latin1());
1032 int res = mailimap_create(m_imap,pre.latin1()); 1031 int res = mailimap_create(m_imap,pre.latin1());
1033 if (res != MAILIMAP_NO_ERROR) { 1032 if (res != MAILIMAP_NO_ERROR) {
1034 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 1033 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
1035 return 0; 1034 return 0;
1036 } 1035 }
1037 return 1; 1036 return 1;
1038} 1037}
1039 1038
1040int IMAPwrapper::deleteMbox(const Folder*folder) 1039int IMAPwrapper::deleteMbox(const FolderP&folder)
1041{ 1040{
1042 if (!folder) return 0; 1041 if (!folder) return 0;
1043 login(); 1042 login();
1044 if (!m_imap) {return 0;} 1043 if (!m_imap) {return 0;}
1045 int res = mailimap_delete(m_imap,folder->getName()); 1044 int res = mailimap_delete(m_imap,folder->getName());
1046 if (res != MAILIMAP_NO_ERROR) { 1045 if (res != MAILIMAP_NO_ERROR) {
1047 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 1046 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
1048 return 0; 1047 return 0;
1049 } 1048 }
1050 return 1; 1049 return 1;
1051} 1050}
1052 1051
@@ -1114,25 +1113,26 @@ const QString&IMAPwrapper::getName()const
1114{ 1113{
1115 qDebug("Get name: %s",account->getAccountName().latin1()); 1114 qDebug("Get name: %s",account->getAccountName().latin1());
1116 return account->getAccountName(); 1115 return account->getAccountName();
1117} 1116}
1118 1117
1119encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail) 1118encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail)
1120{ 1119{
1121 // dummy 1120 // dummy
1122 QValueList<int> path; 1121 QValueList<int> path;
1123 return fetchRawPart(mail,path,false); 1122 return fetchRawPart(mail,path,false);
1124} 1123}
1125 1124
1126void IMAPwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 1125void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder,
1126 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
1127{ 1127{
1128 if (targetWrapper != this) { 1128 if (targetWrapper != this) {
1129 AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); 1129 AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit);
1130 qDebug("Using generic"); 1130 qDebug("Using generic");
1131 return; 1131 return;
1132 } 1132 }
1133 mailimap_set *set = 0; 1133 mailimap_set *set = 0;
1134 login(); 1134 login();
1135 if (!m_imap) { 1135 if (!m_imap) {
1136 return; 1136 return;
1137 } 1137 }
1138 int err = selectMbox(fromFolder->getName()); 1138 int err = selectMbox(fromFolder->getName());
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index 2623725..15f049f 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -14,65 +14,67 @@ struct mailimap_body_type_basic;
14struct mailimap_body_type_msg; 14struct mailimap_body_type_msg;
15struct mailimap_body_type_mpart; 15struct mailimap_body_type_mpart;
16struct mailimap_body_fields; 16struct mailimap_body_fields;
17struct mailimap_msg_att; 17struct mailimap_msg_att;
18class encodedString; 18class encodedString;
19 19
20class IMAPwrapper : public AbstractMail 20class IMAPwrapper : public AbstractMail
21{ 21{
22 Q_OBJECT 22 Q_OBJECT
23public: 23public:
24 IMAPwrapper( IMAPaccount *a ); 24 IMAPwrapper( IMAPaccount *a );
25 virtual ~IMAPwrapper(); 25 virtual ~IMAPwrapper();
26 virtual QList<Folder>* listFolders(); 26 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); 27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target );
28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
29 29
30 virtual void deleteMail(const RecMail&mail); 30 virtual void deleteMail(const RecMail&mail);
31 virtual void answeredMail(const RecMail&mail); 31 virtual void answeredMail(const RecMail&mail);
32 virtual int deleteAllMail(const Folder*folder); 32 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&folder);
33 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 33 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
34 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 34 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
35 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
35 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 36 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
36 37
37 virtual RecBody fetchBody(const RecMail&mail); 38 virtual RecBody fetchBody(const RecMail&mail);
38 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part); 39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);
39 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part); 40 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part);
40 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part); 41 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part);
41 virtual encodedString* fetchRawBody(const RecMail&mail); 42 virtual encodedString* fetchRawBody(const RecMail&mail);
42 43
43 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false); 44 virtual int createMbox(const QString&,const Opie::osmart_pointer<Folder>&parentfolder=0,
44 virtual int deleteMbox(const Folder*folder); 45 const QString& delemiter="/",bool getsubfolder=false);
45 46 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&folder);
47
46 static void imap_progress( size_t current, size_t maximum ); 48 static void imap_progress( size_t current, size_t maximum );
47 49
48 virtual void logout(); 50 virtual void logout();
49 virtual MAILLIB::ATYPE getType()const; 51 virtual MAILLIB::ATYPE getType()const;
50 virtual const QString&getName()const; 52 virtual const QString&getName()const;
51 53
52protected: 54protected:
53 RecMail*parse_list_result(mailimap_msg_att*); 55 RecMail*parse_list_result(mailimap_msg_att*);
54 void login(); 56 void login();
55 bool start_tls(bool force=true); 57 bool start_tls(bool force=true);
56 58
57 virtual QString fetchTextPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc=""); 59 virtual QString fetchTextPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc="");
58 virtual encodedString*fetchRawPart(const RecMail&mail,const QValueList<int>&path,bool internal_call); 60 virtual encodedString*fetchRawPart(const RecMail&mail,const QValueList<int>&path,bool internal_call);
59 int selectMbox(const QString&mbox); 61 int selectMbox(const QString&mbox);
60 62
61 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); 63 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description);
62 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); 64 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which);
63 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); 65 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which);
64 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); 66 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which);
65 void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which); 67 void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which);
66 void traverseBody(const RecMail&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1); 68 void traverseBody(const RecMail&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1);
67 69
68 /* just helpers */ 70 /* just helpers */
69 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which); 71 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which);
70 static QStringList address_list_to_stringlist(clist*list); 72 static QStringList address_list_to_stringlist(clist*list);
71 73
72 74
73 IMAPaccount *account; 75 IMAPaccount *account;
74 mailimap *m_imap; 76 mailimap *m_imap;
75 QString m_Lastmbox; 77 QString m_Lastmbox;
76}; 78};
77 79
78#endif 80#endif
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
index 17c6db9..10d367f 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.h
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -1,23 +1,22 @@
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>
12#include <qbitarray.h> 11#include <qbitarray.h>
13#include <qstring.h> 12#include <qstring.h>
14#include <qstringlist.h> 13#include <qstringlist.h>
15#include <qmap.h> 14#include <qmap.h>
16#include <qvaluelist.h> 15#include <qvaluelist.h>
17 16
18class AbstractMail; 17class AbstractMail;
19/* a class to describe mails in a mailbox */ 18/* a class to describe mails in a mailbox */
20/* Attention! 19/* Attention!
21 From programmers point of view it would make sense to 20 From programmers point of view it would make sense to
22 store the mail body into this class, too. 21 store the mail body into this class, too.
23 But: not from the point of view of the device. 22 But: not from the point of view of the device.
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.cpp b/noncore/net/mail/libmailwrapper/mailwrapper.cpp
index 6bd98f6..c71d69f 100644
--- a/noncore/net/mail/libmailwrapper/mailwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mailwrapper.cpp
@@ -26,46 +26,54 @@ Attachment::Attachment( DocLnk lnk )
26 doc = lnk; 26 doc = lnk;
27 size = QFileInfo( doc.file() ).size(); 27 size = QFileInfo( doc.file() ).size();
28} 28}
29 29
30Folder::Folder(const QString&tmp_name, const QString&sep ) 30Folder::Folder(const QString&tmp_name, const QString&sep )
31{ 31{
32 name = tmp_name; 32 name = tmp_name;
33 nameDisplay = name; 33 nameDisplay = name;
34 separator = sep; 34 separator = sep;
35 prefix = ""; 35 prefix = "";
36} 36}
37 37
38Folder::~Folder()
39{
40}
41
38const QString& Folder::Separator()const 42const QString& Folder::Separator()const
39{ 43{
40 return separator; 44 return separator;
41} 45}
42 46
43IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&aprefix ) 47IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&aprefix )
44 : Folder( name,sep ),m_MaySelect(select),m_NoInferior(no_inf) 48 : Folder( name,sep ),m_MaySelect(select),m_NoInferior(no_inf)
45{ 49{
46 // Decode IMAP foldername 50 // Decode IMAP foldername
47 nameDisplay = IMAPFolder::decodeFolderName( name ); 51 nameDisplay = IMAPFolder::decodeFolderName( name );
48 /* 52 /*
49 qDebug( "folder " + name + " - displayed as " + nameDisplay ); 53 qDebug( "folder " + name + " - displayed as " + nameDisplay );
50 */ 54 */
51 prefix = aprefix; 55 prefix = aprefix;
52 56
53 if (prefix.length()>0) { 57 if (prefix.length()>0) {
54 if (nameDisplay.startsWith(prefix) && nameDisplay.length()>prefix.length()) { 58 if (nameDisplay.startsWith(prefix) && nameDisplay.length()>prefix.length()) {
55 nameDisplay=nameDisplay.right(nameDisplay.length()-prefix.length()); 59 nameDisplay=nameDisplay.right(nameDisplay.length()-prefix.length());
56 } 60 }
57 } 61 }
58} 62}
59 63
64IMAPFolder::~IMAPFolder()
65{
66}
67
60static unsigned char base64chars[] = 68static unsigned char base64chars[] =
61 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,"; 69 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,";
62 70
63/** 71/**
64 * Decodes base64 encoded parts of the imapfolder name 72 * Decodes base64 encoded parts of the imapfolder name
65 * Code taken from kde cvs: kdebase/kioslave/imap4/rfcdecoder.cc 73 * Code taken from kde cvs: kdebase/kioslave/imap4/rfcdecoder.cc
66 */ 74 */
67QString IMAPFolder::decodeFolderName( const QString &name ) 75QString IMAPFolder::decodeFolderName( const QString &name )
68{ 76{
69 unsigned char c, i, bitcount; 77 unsigned char c, i, bitcount;
70 unsigned long ucs4, utf16, bitbuf; 78 unsigned long ucs4, utf16, bitbuf;
71 unsigned char base64[256], utf8[6]; 79 unsigned char base64[256], utf8[6];
@@ -155,12 +163,16 @@ MHFolder::MHFolder(const QString&disp_name,const QString&mbox)
155 : Folder( disp_name,"/" ) 163 : Folder( disp_name,"/" )
156{ 164{
157 separator = "/"; 165 separator = "/";
158 name = mbox; 166 name = mbox;
159 if (!disp_name.startsWith("/") && disp_name.length()>0) 167 if (!disp_name.startsWith("/") && disp_name.length()>0)
160 name+="/"; 168 name+="/";
161 name+=disp_name; 169 name+=disp_name;
162 if (disp_name.length()==0) { 170 if (disp_name.length()==0) {
163 nameDisplay = separator; 171 nameDisplay = separator;
164 } 172 }
165 prefix = mbox; 173 prefix = mbox;
166} 174}
175
176MHFolder::~MHFolder()
177{
178}
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.h b/noncore/net/mail/libmailwrapper/mailwrapper.h
index c66572c..3b3bb32 100644
--- a/noncore/net/mail/libmailwrapper/mailwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mailwrapper.h
@@ -4,52 +4,52 @@
4#include <qpe/applnk.h> 4#include <qpe/applnk.h>
5 5
6#include <qbitarray.h> 6#include <qbitarray.h>
7#include <qdatetime.h> 7#include <qdatetime.h>
8 8
9#include "settings.h" 9#include "settings.h"
10 10
11#include <opie2/osmart_pointer.h> 11#include <opie2/osmart_pointer.h>
12 12
13class Attachment 13class Attachment
14{ 14{
15public: 15public:
16 Attachment( DocLnk lnk ); 16 Attachment( DocLnk lnk );
17 virtual ~Attachment(){} 17 virtual ~Attachment(){}
18 const QString getFileName()const{ return doc.file(); } 18 const QString getFileName()const{ return doc.file(); }
19 const QString getName()const{ return doc.name(); } 19 const QString getName()const{ return doc.name(); }
20 const QString getMimeType()const{ return doc.type(); } 20 const QString getMimeType()const{ return doc.type(); }
21 const QPixmap getPixmap()const{ return doc.pixmap(); } 21 const QPixmap getPixmap()const{ return doc.pixmap(); }
22 const int getSize()const { return size; } 22 const int getSize()const { return size; }
23 DocLnk getDocLnk() { return doc; } 23 DocLnk getDocLnk() { return doc; }
24 24
25protected: 25protected:
26 DocLnk doc; 26 DocLnk doc;
27 int size; 27 int size;
28 28
29}; 29};
30 30
31class Mail:public Opie::oref_count 31class Mail:public Opie::oref_count
32{ 32{
33public: 33public:
34 Mail(); 34 Mail();
35 /* Possible that this destructor must not be declared virtual 35 /* Possible that this destructor must not be declared virtual
36 * 'cause it seems that it will never have some child classes. 36 * 'cause it seems that it will never have some child classes.
37 * in this case this object will not get a virtual table -> memory and 37 * in this case this object will not get a virtual table -> memory and
38 * speed will be a little bit better? 38 * speed will be a little bit better?
39 */ 39 */
40 virtual ~Mail(){} 40 virtual ~Mail(){}
41 void addAttachment( Attachment *att ) { attList.append( att ); } 41 void addAttachment( Attachment *att ) { attList.append( att ); }
42 const QList<Attachment>& getAttachments()const { return attList; } 42 const QList<Attachment>& getAttachments()const { return attList; }
43 void removeAttachment( Attachment *att ) { attList.remove( att ); } 43 void removeAttachment( Attachment *att ) { attList.remove( att ); }
44 const QString&getName()const { return name; } 44 const QString&getName()const { return name; }
45 void setName( QString s ) { name = s; } 45 void setName( QString s ) { name = s; }
46 const QString&getMail()const{ return mail; } 46 const QString&getMail()const{ return mail; }
47 void setMail( const QString&s ) { mail = s; } 47 void setMail( const QString&s ) { mail = s; }
48 const QString&getTo()const{ return to; } 48 const QString&getTo()const{ return to; }
49 void setTo( const QString&s ) { to = s; } 49 void setTo( const QString&s ) { to = s; }
50 const QString&getCC()const{ return cc; } 50 const QString&getCC()const{ return cc; }
51 void setCC( const QString&s ) { cc = s; } 51 void setCC( const QString&s ) { cc = s; }
52 const QString&getBCC()const { return bcc; } 52 const QString&getBCC()const { return bcc; }
53 void setBCC( const QString&s ) { bcc = s; } 53 void setBCC( const QString&s ) { bcc = s; }
54 const QString&getMessage()const { return message; } 54 const QString&getMessage()const { return message; }
55 void setMessage( const QString&s ) { message = s; } 55 void setMessage( const QString&s ) { message = s; }
@@ -57,48 +57,50 @@ public:
57 void setSubject( const QString&s ) { subject = s; } 57 void setSubject( const QString&s ) { subject = s; }
58 const QString&getReply()const{ return reply; } 58 const QString&getReply()const{ return reply; }
59 void setReply( const QString&a ) { reply = a; } 59 void setReply( const QString&a ) { reply = a; }
60 void setInreply(const QStringList&list){m_in_reply_to = list;} 60 void setInreply(const QStringList&list){m_in_reply_to = list;}
61 const QStringList&Inreply()const{return m_in_reply_to;} 61 const QStringList&Inreply()const{return m_in_reply_to;}
62 62
63private: 63private:
64 QList<Attachment> attList; 64 QList<Attachment> attList;
65 QString name, mail, to, cc, bcc, reply, subject, message; 65 QString name, mail, to, cc, bcc, reply, subject, message;
66 QStringList m_in_reply_to; 66 QStringList m_in_reply_to;
67}; 67};
68 68
69class Folder : public QObject 69class Folder:public Opie::oref_count
70{ 70{
71 Q_OBJECT
72
73public: 71public:
74 Folder( const QString&init_name,const QString&sep ); 72 Folder( const QString&init_name,const QString&sep );
73 virtual ~Folder();
75 const QString&getDisplayName()const { return nameDisplay; } 74 const QString&getDisplayName()const { return nameDisplay; }
76 const QString&getName()const { return name; } 75 const QString&getName()const { return name; }
77 const QString&getPrefix()const{return prefix; } 76 const QString&getPrefix()const{return prefix; }
78 virtual bool may_select()const{return true;} 77 virtual bool may_select()const{return true;}
79 virtual bool no_inferior()const{return true;} 78 virtual bool no_inferior()const{return true;}
80 const QString&Separator()const; 79 const QString&Separator()const;
81 80
82protected: 81protected:
83 QString nameDisplay, name, separator,prefix; 82 QString nameDisplay, name, separator,prefix;
84}; 83};
85 84
85typedef Opie::osmart_pointer<Folder> FolderP;
86
86class MHFolder : public Folder 87class MHFolder : public Folder
87{ 88{
88 Q_OBJECT
89public: 89public:
90 MHFolder(const QString&disp_name,const QString&mbox); 90 MHFolder(const QString&disp_name,const QString&mbox);
91 virtual ~MHFolder();
91}; 92};
92 93
93class IMAPFolder : public Folder 94class IMAPFolder : public Folder
94{ 95{
95 public: 96 public:
96 IMAPFolder(const QString&name, const QString&sep, bool select=true,bool noinf=false,const QString&prefix="" ); 97 IMAPFolder(const QString&name, const QString&sep, bool select=true,bool noinf=false,const QString&prefix="" );
98 virtual ~IMAPFolder();
97 virtual bool may_select()const{return m_MaySelect;} 99 virtual bool may_select()const{return m_MaySelect;}
98 virtual bool no_inferior()const{return m_NoInferior;} 100 virtual bool no_inferior()const{return m_NoInferior;}
99 private: 101 private:
100 static QString decodeFolderName( const QString &name ); 102 static QString decodeFolderName( const QString &name );
101 bool m_MaySelect,m_NoInferior; 103 bool m_MaySelect,m_NoInferior;
102}; 104};
103 105
104#endif 106#endif
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
index abe4bb6..9ff3de2 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
@@ -5,78 +5,77 @@
5#include <qdir.h> 5#include <qdir.h>
6#include <stdlib.h> 6#include <stdlib.h>
7#include <qpe/global.h> 7#include <qpe/global.h>
8 8
9MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name) 9MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name)
10 : Genericwrapper(),MBOXPath(mbox_dir),MBOXName(mbox_name) 10 : Genericwrapper(),MBOXPath(mbox_dir),MBOXName(mbox_name)
11{ 11{
12 QDir dir(MBOXPath); 12 QDir dir(MBOXPath);
13 if (!dir.exists()) { 13 if (!dir.exists()) {
14 dir.mkdir(MBOXPath); 14 dir.mkdir(MBOXPath);
15 } 15 }
16} 16}
17 17
18MBOXwrapper::~MBOXwrapper() 18MBOXwrapper::~MBOXwrapper()
19{ 19{
20} 20}
21 21
22void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) 22void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
23{ 23{
24 mailstorage*storage = mailstorage_new(NULL); 24 mailstorage*storage = mailstorage_new(NULL);
25 QString p = MBOXPath+"/"; 25 QString p = MBOXPath+"/";
26 p+=mailbox; 26 p+=mailbox;
27 27
28 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 28 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
29 mailfolder*folder; 29 mailfolder*folder;
30 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 30 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
31 r = mailfolder_connect(folder); 31 r = mailfolder_connect(folder);
32 if (r != MAIL_NO_ERROR) { 32 if (r != MAIL_NO_ERROR) {
33 qDebug("Error initializing mbox"); 33 qDebug("Error initializing mbox");
34 mailfolder_free(folder); 34 mailfolder_free(folder);
35 mailstorage_free(storage); 35 mailstorage_free(storage);
36 return; 36 return;
37 } 37 }
38 38
39 parseList(target,folder->fld_session,mailbox); 39 parseList(target,folder->fld_session,mailbox);
40 40
41 mailfolder_disconnect(folder); 41 mailfolder_disconnect(folder);
42 mailfolder_free(folder); 42 mailfolder_free(folder);
43 mailstorage_free(storage); 43 mailstorage_free(storage);
44 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 44 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
45} 45}
46 46
47QList<Folder>* MBOXwrapper::listFolders() 47QValueList<Opie::osmart_pointer<Folder> >* MBOXwrapper::listFolders()
48{ 48{
49 QList<Folder> * folders = new QList<Folder>(); 49 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
50 folders->setAutoDelete( false );
51 QDir dir(MBOXPath); 50 QDir dir(MBOXPath);
52 if (!dir.exists()) return folders; 51 if (!dir.exists()) return folders;
53 dir.setFilter(QDir::Files|QDir::Writable|QDir::Readable); 52 dir.setFilter(QDir::Files|QDir::Writable|QDir::Readable);
54 QStringList entries = dir.entryList(); 53 QStringList entries = dir.entryList();
55 QStringList::ConstIterator it = entries.begin(); 54 QStringList::ConstIterator it = entries.begin();
56 for (;it!=entries.end();++it) { 55 for (;it!=entries.end();++it) {
57 Folder*inb=new Folder(*it,"/"); 56 FolderP inb=new Folder(*it,"/");
58 folders->append(inb); 57 folders->append(inb);
59 } 58 }
60 return folders; 59 return folders;
61} 60}
62 61
63void MBOXwrapper::deleteMail(const RecMail&mail) 62void MBOXwrapper::deleteMail(const RecMail&mail)
64{ 63{
65 mailstorage*storage = mailstorage_new(NULL); 64 mailstorage*storage = mailstorage_new(NULL);
66 QString p = MBOXPath+"/"; 65 QString p = MBOXPath+"/";
67 p+=mail.getMbox(); 66 p+=mail.getMbox();
68 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 67 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
69 mailfolder*folder; 68 mailfolder*folder;
70 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 69 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
71 r = mailfolder_connect(folder); 70 r = mailfolder_connect(folder);
72 if (r != MAIL_NO_ERROR) { 71 if (r != MAIL_NO_ERROR) {
73 qDebug("Error initializing mbox"); 72 qDebug("Error initializing mbox");
74 mailfolder_free(folder); 73 mailfolder_free(folder);
75 mailstorage_free(storage); 74 mailstorage_free(storage);
76 return; 75 return;
77 } 76 }
78 r = mailsession_remove_message(folder->fld_session,mail.getNumber()); 77 r = mailsession_remove_message(folder->fld_session,mail.getNumber());
79 if (r != MAIL_NO_ERROR) { 78 if (r != MAIL_NO_ERROR) {
80 qDebug("error deleting mail"); 79 qDebug("error deleting mail");
81 } 80 }
82 mailfolder_free(folder); 81 mailfolder_free(folder);
@@ -90,61 +89,61 @@ void MBOXwrapper::answeredMail(const RecMail&)
90RecBody MBOXwrapper::fetchBody( const RecMail &mail ) 89RecBody MBOXwrapper::fetchBody( const RecMail &mail )
91{ 90{
92 RecBody body; 91 RecBody body;
93 mailstorage*storage = mailstorage_new(NULL); 92 mailstorage*storage = mailstorage_new(NULL);
94 QString p = MBOXPath+"/"; 93 QString p = MBOXPath+"/";
95 p+=mail.getMbox(); 94 p+=mail.getMbox();
96 mailmessage * msg; 95 mailmessage * msg;
97 char*data=0; 96 char*data=0;
98 size_t size; 97 size_t size;
99 98
100 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 99 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
101 mailfolder*folder; 100 mailfolder*folder;
102 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 101 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
103 r = mailfolder_connect(folder); 102 r = mailfolder_connect(folder);
104 if (r != MAIL_NO_ERROR) { 103 if (r != MAIL_NO_ERROR) {
105 qDebug("Error initializing mbox"); 104 qDebug("Error initializing mbox");
106 mailfolder_free(folder); 105 mailfolder_free(folder);
107 mailstorage_free(storage); 106 mailstorage_free(storage);
108 return body; 107 return body;
109 } 108 }
110 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg); 109 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg);
111 if (r != MAIL_NO_ERROR) { 110 if (r != MAIL_NO_ERROR) {
112 qDebug("Error fetching mail %i",mail.getNumber()); 111 qDebug("Error fetching mail %i",mail.getNumber());
113 mailfolder_free(folder); 112 mailfolder_free(folder);
114 mailstorage_free(storage); 113 mailstorage_free(storage);
115 return body; 114 return body;
116 } 115 }
117 r = mailmessage_fetch(msg,&data,&size); 116 r = mailmessage_fetch(msg,&data,&size);
118 if (r != MAIL_NO_ERROR) { 117 if (r != MAIL_NO_ERROR) {
119 qDebug("Error fetching mail %i",mail.getNumber()); 118 qDebug("Error fetching mail %i",mail.getNumber());
120 mailfolder_free(folder); 119 mailfolder_free(folder);
121 mailstorage_free(storage); 120 mailstorage_free(storage);
122 mailmessage_free(msg); 121 mailmessage_free(msg);
123 return body; 122 return body;
124 } 123 }
125 body = parseMail(msg); 124 body = parseMail(msg);
126 mailmessage_fetch_result_free(msg,data); 125 mailmessage_fetch_result_free(msg,data);
127 mailfolder_free(folder); 126 mailfolder_free(folder);
128 mailstorage_free(storage); 127 mailstorage_free(storage);
129 128
130 return body; 129 return body;
131} 130}
132 131
133void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) 132void MBOXwrapper::mbox_progress( size_t current, size_t maximum )
134{ 133{
135 qDebug("MBOX %i von %i",current,maximum); 134 qDebug("MBOX %i von %i",current,maximum);
136} 135}
137 136
138int MBOXwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool ) 137int MBOXwrapper::createMbox(const QString&folder,const FolderP&,const QString&,bool )
139{ 138{
140 QString p = MBOXPath+"/"; 139 QString p = MBOXPath+"/";
141 p+=folder; 140 p+=folder;
142 QFileInfo fi(p); 141 QFileInfo fi(p);
143 if (fi.exists()) { 142 if (fi.exists()) {
144 Global::statusMessage(tr("Mailbox exists.")); 143 Global::statusMessage(tr("Mailbox exists."));
145 return 0; 144 return 0;
146 } 145 }
147 mailmbox_folder*f = 0; 146 mailmbox_folder*f = 0;
148 if (mailmbox_init(p.latin1(),0,1,0,&f) != MAIL_NO_ERROR) { 147 if (mailmbox_init(p.latin1(),0,1,0,&f) != MAIL_NO_ERROR) {
149 Global::statusMessage(tr("Error init folder")); 148 Global::statusMessage(tr("Error init folder"));
150 return 0; 149 return 0;
@@ -173,25 +172,25 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde
173encodedString* MBOXwrapper::fetchRawBody(const RecMail&mail) 172encodedString* MBOXwrapper::fetchRawBody(const RecMail&mail)
174{ 173{
175 RecBody body; 174 RecBody body;
176 mailstorage*storage = mailstorage_new(NULL); 175 mailstorage*storage = mailstorage_new(NULL);
177 QString p = MBOXPath+"/"; 176 QString p = MBOXPath+"/";
178 p+=mail.getMbox(); 177 p+=mail.getMbox();
179 mailmessage * msg; 178 mailmessage * msg;
180 char*data=0; 179 char*data=0;
181 size_t size; 180 size_t size;
182 181
183 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 182 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
184 mailfolder*folder; 183 mailfolder*folder;
185 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 184 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
186 r = mailfolder_connect(folder); 185 r = mailfolder_connect(folder);
187 if (r != MAIL_NO_ERROR) { 186 if (r != MAIL_NO_ERROR) {
188 Global::statusMessage(tr("Error initializing mbox")); 187 Global::statusMessage(tr("Error initializing mbox"));
189 mailfolder_free(folder); 188 mailfolder_free(folder);
190 mailstorage_free(storage); 189 mailstorage_free(storage);
191 return 0; 190 return 0;
192 } 191 }
193 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg); 192 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg);
194 if (r != MAIL_NO_ERROR) { 193 if (r != MAIL_NO_ERROR) {
195 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber())); 194 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber()));
196 mailfolder_free(folder); 195 mailfolder_free(folder);
197 mailstorage_free(storage); 196 mailstorage_free(storage);
@@ -234,40 +233,40 @@ void MBOXwrapper::deleteMails(mailmbox_folder*f,QList<RecMail> &target)
234 for (unsigned int i=0; i < target.count();++i) { 233 for (unsigned int i=0; i < target.count();++i) {
235 r = mailmbox_delete_msg(f,target.at(i)->getNumber()); 234 r = mailmbox_delete_msg(f,target.at(i)->getNumber());
236 if (r!=MAILMBOX_NO_ERROR) { 235 if (r!=MAILMBOX_NO_ERROR) {
237 qDebug("error delete mail"); 236 qDebug("error delete mail");
238 } 237 }
239 } 238 }
240 r = mailmbox_expunge(f); 239 r = mailmbox_expunge(f);
241 if (r != MAILMBOX_NO_ERROR) { 240 if (r != MAILMBOX_NO_ERROR) {
242 qDebug("error expunge mailbox"); 241 qDebug("error expunge mailbox");
243 } 242 }
244} 243}
245 244
246int MBOXwrapper::deleteAllMail(const Folder*tfolder) 245int MBOXwrapper::deleteAllMail(const FolderP&tfolder)
247{ 246{
248 if (!tfolder) return 0; 247 if (!tfolder) return 0;
249 QString p = MBOXPath+"/"+tfolder->getDisplayName(); 248 QString p = MBOXPath+"/"+tfolder->getDisplayName();
250 int res = 1; 249 int res = 1;
251 250
252 mailfolder*folder = 0; 251 mailfolder*folder = 0;
253 mailmessage_list*l=0; 252 mailmessage_list*l=0;
254 mailstorage*storage = mailstorage_new(NULL); 253 mailstorage*storage = mailstorage_new(NULL);
255 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 254 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
256 if (r != MAIL_NO_ERROR) { 255 if (r != MAIL_NO_ERROR) {
257 Global::statusMessage(tr("Error initializing mbox")); 256 Global::statusMessage(tr("Error initializing mbox"));
258 res = 0; 257 res = 0;
259 } 258 }
260 if (res) { 259 if (res) {
261 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 260 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
262 r = mailfolder_connect(folder); 261 r = mailfolder_connect(folder);
263 if (r != MAIL_NO_ERROR) { 262 if (r != MAIL_NO_ERROR) {
264 Global::statusMessage(tr("Error initializing mbox")); 263 Global::statusMessage(tr("Error initializing mbox"));
265 res = 0; 264 res = 0;
266 } 265 }
267 } 266 }
268 if (res) { 267 if (res) {
269 r = mailsession_get_messages_list(folder->fld_session,&l); 268 r = mailsession_get_messages_list(folder->fld_session,&l);
270 if (r != MAIL_NO_ERROR) { 269 if (r != MAIL_NO_ERROR) {
271 qDebug("Error message list"); 270 qDebug("Error message list");
272 res=0; 271 res=0;
273 } 272 }
@@ -277,25 +276,25 @@ int MBOXwrapper::deleteAllMail(const Folder*tfolder)
277 if (r != MAIL_NO_ERROR) { 276 if (r != MAIL_NO_ERROR) {
278 Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); 277 Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
279 res = 0; 278 res = 0;
280 break; 279 break;
281 } 280 }
282 } 281 }
283 if (l) mailmessage_list_free(l); 282 if (l) mailmessage_list_free(l);
284 if (folder) mailfolder_free(folder); 283 if (folder) mailfolder_free(folder);
285 if (storage) mailstorage_free(storage); 284 if (storage) mailstorage_free(storage);
286 return res; 285 return res;
287} 286}
288 287
289int MBOXwrapper::deleteMbox(const Folder*tfolder) 288int MBOXwrapper::deleteMbox(const FolderP&tfolder)
290{ 289{
291 if (!tfolder) return 0; 290 if (!tfolder) return 0;
292 QString p = MBOXPath+"/"+tfolder->getDisplayName(); 291 QString p = MBOXPath+"/"+tfolder->getDisplayName();
293 QFile fi(p); 292 QFile fi(p);
294 if (!fi.exists()) { 293 if (!fi.exists()) {
295 Global::statusMessage(tr("Mailbox doesn't exist.")); 294 Global::statusMessage(tr("Mailbox doesn't exist."));
296 return 0; 295 return 0;
297 } 296 }
298 if (!fi.remove()) { 297 if (!fi.remove()) {
299 Global::statusMessage(tr("Error deleting Mailbox.")); 298 Global::statusMessage(tr("Error deleting Mailbox."));
300 return 0; 299 return 0;
301 } 300 }
@@ -307,25 +306,25 @@ void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
307 mailfolder*folder = 0; 306 mailfolder*folder = 0;
308 mailstorage*storage = mailstorage_new(NULL); 307 mailstorage*storage = mailstorage_new(NULL);
309 target_stat.message_count = 0; 308 target_stat.message_count = 0;
310 target_stat.message_unseen = 0; 309 target_stat.message_unseen = 0;
311 target_stat.message_recent = 0; 310 target_stat.message_recent = 0;
312 QString p = MBOXPath+"/"+mailbox; 311 QString p = MBOXPath+"/"+mailbox;
313 QFile fi(p); 312 QFile fi(p);
314 if (!fi.exists()) { 313 if (!fi.exists()) {
315 Global::statusMessage(tr("Mailbox doesn't exist.")); 314 Global::statusMessage(tr("Mailbox doesn't exist."));
316 return; 315 return;
317 } 316 }
318 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 317 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
319 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 318 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
320 r = mailfolder_connect(folder); 319 r = mailfolder_connect(folder);
321 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count, 320 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count,
322 &target_stat.message_recent,&target_stat.message_unseen); 321 &target_stat.message_recent,&target_stat.message_unseen);
323 if (folder) mailfolder_free(folder); 322 if (folder) mailfolder_free(folder);
324 if (storage) mailstorage_free(storage); 323 if (storage) mailstorage_free(storage);
325} 324}
326 325
327MAILLIB::ATYPE MBOXwrapper::getType()const 326MAILLIB::ATYPE MBOXwrapper::getType()const
328{ 327{
329 return MAILLIB::A_MBOX; 328 return MAILLIB::A_MBOX;
330} 329}
331 330
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h
index 7e7f359..c3d9b50 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h
@@ -7,41 +7,42 @@
7class RecMail; 7class RecMail;
8class RecBody; 8class RecBody;
9class encodedString; 9class encodedString;
10struct mailmbox_folder; 10struct mailmbox_folder;
11 11
12class MBOXwrapper : public Genericwrapper 12class MBOXwrapper : public Genericwrapper
13{ 13{
14 Q_OBJECT 14 Q_OBJECT
15 15
16public: 16public:
17 MBOXwrapper(const QString & dir,const QString&name); 17 MBOXwrapper(const QString & dir,const QString&name);
18 virtual ~MBOXwrapper(); 18 virtual ~MBOXwrapper();
19 19
20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
21 virtual QList<Folder>* listFolders(); 21 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
22 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 22 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
23 23
24 virtual void deleteMail(const RecMail&mail); 24 virtual void deleteMail(const RecMail&mail);
25 virtual void answeredMail(const RecMail&mail); 25 virtual void answeredMail(const RecMail&mail);
26 26
27 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 27 virtual int createMbox(const QString&folder,const Opie::osmart_pointer<Folder>&f=0,
28 virtual int deleteMbox(const Folder*); 28 const QString&d="",bool s=false);
29 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&);
29 30
30 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 31 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
31 32
32 virtual RecBody fetchBody( const RecMail &mail ); 33 virtual RecBody fetchBody( const RecMail &mail );
33 static void mbox_progress( size_t current, size_t maximum ); 34 static void mbox_progress( size_t current, size_t maximum );
34 35
35 virtual encodedString* fetchRawBody(const RecMail&mail); 36 virtual encodedString* fetchRawBody(const RecMail&mail);
36 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 37 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
37 virtual int deleteAllMail(const Folder*); 38 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
38 virtual MAILLIB::ATYPE getType()const; 39 virtual MAILLIB::ATYPE getType()const;
39 virtual const QString&getName()const; 40 virtual const QString&getName()const;
40 41
41protected: 42protected:
42 static void deleteMails(mailmbox_folder*f,QList<RecMail> &target); 43 static void deleteMails(mailmbox_folder*f,QList<RecMail> &target);
43 QString MBOXPath; 44 QString MBOXPath;
44 QString MBOXName; 45 QString MBOXName;
45}; 46};
46 47
47#endif 48#endif
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
index 560eab0..aaaa20a 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
@@ -67,28 +67,27 @@ void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
67 return; 67 return;
68 } 68 }
69 QString f = buildPath(mailbox); 69 QString f = buildPath(mailbox);
70 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 70 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
71 if (r!=MAIL_NO_ERROR) { 71 if (r!=MAIL_NO_ERROR) {
72 qDebug("listMessages: error selecting folder!"); 72 qDebug("listMessages: error selecting folder!");
73 return; 73 return;
74 } 74 }
75 parseList(target,m_storage->sto_session,f); 75 parseList(target,m_storage->sto_session,f);
76 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 76 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
77} 77}
78 78
79QList<Folder>* MHwrapper::listFolders() 79QValueList<Opie::osmart_pointer<Folder> >* MHwrapper::listFolders()
80{ 80{
81 QList<Folder> * folders = new QList<Folder>(); 81 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
82 folders->setAutoDelete( false );
83 /* this is needed! */ 82 /* this is needed! */
84 if (m_storage) mailstorage_disconnect(m_storage); 83 if (m_storage) mailstorage_disconnect(m_storage);
85 init_storage(); 84 init_storage();
86 if (!m_storage) { 85 if (!m_storage) {
87 return folders; 86 return folders;
88 } 87 }
89 mail_list*flist = 0; 88 mail_list*flist = 0;
90 clistcell*current=0; 89 clistcell*current=0;
91 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); 90 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist);
92 if (r != MAIL_NO_ERROR || !flist) { 91 if (r != MAIL_NO_ERROR || !flist) {
93 qDebug("error getting folder list"); 92 qDebug("error getting folder list");
94 return folders; 93 return folders;
@@ -135,50 +134,50 @@ RecBody MHwrapper::fetchBody( const RecMail &mail )
135 size_t size; 134 size_t size;
136 135
137 /* mail should hold the complete path! */ 136 /* mail should hold the complete path! */
138 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 137 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
139 if (r != MAIL_NO_ERROR) { 138 if (r != MAIL_NO_ERROR) {
140 return body; 139 return body;
141 } 140 }
142 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); 141 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg);
143 if (r != MAIL_NO_ERROR) { 142 if (r != MAIL_NO_ERROR) {
144 qDebug("Error fetching mail %i",mail.getNumber()); 143 qDebug("Error fetching mail %i",mail.getNumber());
145 return body; 144 return body;
146 } 145 }
147 body = parseMail(msg); 146 body = parseMail(msg);
148 mailmessage_fetch_result_free(msg,data); 147 mailmessage_fetch_result_free(msg,data);
149 return body; 148 return body;
150} 149}
151 150
152void MHwrapper::mbox_progress( size_t current, size_t maximum ) 151void MHwrapper::mbox_progress( size_t current, size_t maximum )
153{ 152{
154 qDebug("MH %i von %i",current,maximum); 153 qDebug("MH %i von %i",current,maximum);
155} 154}
156 155
157QString MHwrapper::buildPath(const QString&p) 156QString MHwrapper::buildPath(const QString&p)
158{ 157{
159 QString f=""; 158 QString f="";
160 if (p.length()==0||p=="/") 159 if (p.length()==0||p=="/")
161 return MHPath; 160 return MHPath;
162 if (!p.startsWith(MHPath)) { 161 if (!p.startsWith(MHPath)) {
163 f+=MHPath; 162 f+=MHPath;
164 } 163 }
165 if (!p.startsWith("/")) { 164 if (!p.startsWith("/")) {
166 f+="/"; 165 f+="/";
167 } 166 }
168 f+=p; 167 f+=p;
169 return f; 168 return f;
170} 169}
171 170
172int MHwrapper::createMbox(const QString&folder,const Folder*pfolder,const QString&,bool ) 171int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool )
173{ 172{
174 init_storage(); 173 init_storage();
175 if (!m_storage) { 174 if (!m_storage) {
176 return 0; 175 return 0;
177 } 176 }
178 QString f; 177 QString f;
179 if (!pfolder) { 178 if (!pfolder) {
180 // toplevel folder 179 // toplevel folder
181 f = buildPath(folder); 180 f = buildPath(folder);
182 } else { 181 } else {
183 f = pfolder->getName(); 182 f = pfolder->getName();
184 f+="/"; 183 f+="/";
@@ -254,25 +253,25 @@ void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target)
254 } 253 }
255 RecMail*c = 0; 254 RecMail*c = 0;
256 for (unsigned int i=0; i < target.count();++i) { 255 for (unsigned int i=0; i < target.count();++i) {
257 c = target.at(i); 256 c = target.at(i);
258 r = mailsession_remove_message(m_storage->sto_session,c->getNumber()); 257 r = mailsession_remove_message(m_storage->sto_session,c->getNumber());
259 if (r != MAIL_NO_ERROR) { 258 if (r != MAIL_NO_ERROR) {
260 qDebug("error deleting mail"); 259 qDebug("error deleting mail");
261 break; 260 break;
262 } 261 }
263 } 262 }
264} 263}
265 264
266int MHwrapper::deleteAllMail(const Folder*tfolder) 265int MHwrapper::deleteAllMail(const FolderP&tfolder)
267{ 266{
268 init_storage(); 267 init_storage();
269 if (!m_storage) { 268 if (!m_storage) {
270 return 0; 269 return 0;
271 } 270 }
272 int res = 1; 271 int res = 1;
273 if (!tfolder) return 0; 272 if (!tfolder) return 0;
274 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 273 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
275 if (r!=MAIL_NO_ERROR) { 274 if (r!=MAIL_NO_ERROR) {
276 qDebug("error selecting folder!"); 275 qDebug("error selecting folder!");
277 return 0; 276 return 0;
278 } 277 }
@@ -289,46 +288,46 @@ int MHwrapper::deleteAllMail(const Folder*tfolder)
289 j = msg->msg_index; 288 j = msg->msg_index;
290 r = mailsession_remove_message(m_storage->sto_session,j); 289 r = mailsession_remove_message(m_storage->sto_session,j);
291 if (r != MAIL_NO_ERROR) { 290 if (r != MAIL_NO_ERROR) {
292 Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); 291 Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
293 res = 0; 292 res = 0;
294 break; 293 break;
295 } 294 }
296 } 295 }
297 if (l) mailmessage_list_free(l); 296 if (l) mailmessage_list_free(l);
298 return res; 297 return res;
299} 298}
300 299
301int MHwrapper::deleteMbox(const Folder*tfolder) 300int MHwrapper::deleteMbox(const FolderP&tfolder)
302{ 301{
303 init_storage(); 302 init_storage();
304 if (!m_storage) { 303 if (!m_storage) {
305 return 0; 304 return 0;
306 } 305 }
307 if (!tfolder) return 0; 306 if (!tfolder) return 0;
308 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; 307 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0;
309 308
310 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 309 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
311 310
312 if (r != MAIL_NO_ERROR) { 311 if (r != MAIL_NO_ERROR) {
313 qDebug("error deleting mail box"); 312 qDebug("error deleting mail box");
314 return 0; 313 return 0;
315 } 314 }
316 QString cmd = "rm -rf "+tfolder->getName(); 315 QString cmd = "rm -rf "+tfolder->getName();
317 QStringList command; 316 QStringList command;
318 command << "/bin/sh"; 317 command << "/bin/sh";
319 command << "-c"; 318 command << "-c";
320 command << cmd.latin1(); 319 command << cmd.latin1();
321 OProcess *process = new OProcess(); 320 OProcess *process = new OProcess();
322 321
323 connect(process, SIGNAL(processExited(OProcess*)), 322 connect(process, SIGNAL(processExited(OProcess*)),
324 this, SLOT( processEnded(OProcess*))); 323 this, SLOT( processEnded(OProcess*)));
325 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)), 324 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)),
326 this, SLOT( oprocessStderr(OProcess*,char*,int))); 325 this, SLOT( oprocessStderr(OProcess*,char*,int)));
327 326
328 *process << command; 327 *process << command;
329 removeMboxfailed = false; 328 removeMboxfailed = false;
330 if(!process->start(OProcess::Block, OProcess::All) ) { 329 if(!process->start(OProcess::Block, OProcess::All) ) {
331 qDebug("could not start process"); 330 qDebug("could not start process");
332 return 0; 331 return 0;
333 } 332 }
334 qDebug("mail box deleted"); 333 qDebug("mail box deleted");
@@ -377,40 +376,41 @@ void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractM
377{ 376{
378 init_storage(); 377 init_storage();
379 if (!m_storage) { 378 if (!m_storage) {
380 return; 379 return;
381 } 380 }
382 if (targetWrapper != this) { 381 if (targetWrapper != this) {
383 qDebug("Using generic"); 382 qDebug("Using generic");
384 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); 383 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit);
385 return; 384 return;
386 } 385 }
387 qDebug("Using internal routines for move/copy"); 386 qDebug("Using internal routines for move/copy");
388 QString tf = buildPath(targetFolder); 387 QString tf = buildPath(targetFolder);
389 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 388 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
390 if (r != MAIL_NO_ERROR) { 389 if (r != MAIL_NO_ERROR) {
391 qDebug("Error selecting source mailbox"); 390 qDebug("Error selecting source mailbox");
392 return; 391 return;
393 } 392 }
394 if (moveit) { 393 if (moveit) {
395 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 394 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
396 } else { 395 } else {
397 r = mailsession_copy_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 396 r = mailsession_copy_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
398 } 397 }
399 if (r != MAIL_NO_ERROR) { 398 if (r != MAIL_NO_ERROR) {
400 qDebug("Error copy/moving mail internal (%i)",r); 399 qDebug("Error copy/moving mail internal (%i)",r);
401 } 400 }
402} 401}
403 402
404void MHwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 403void MHwrapper::mvcpAllMails(const FolderP&fromFolder,
404 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
405{ 405{
406 init_storage(); 406 init_storage();
407 if (!m_storage) { 407 if (!m_storage) {
408 return; 408 return;
409 } 409 }
410 if (targetWrapper != this) { 410 if (targetWrapper != this) {
411 qDebug("Using generic"); 411 qDebug("Using generic");
412 Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); 412 Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit);
413 return; 413 return;
414 } 414 }
415 if (!fromFolder) return; 415 if (!fromFolder) return;
416 int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1()); 416 int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1());
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.h b/noncore/net/mail/libmailwrapper/mhwrapper.h
index b7c23af..c7c8183 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.h
@@ -9,52 +9,54 @@
9class RecMail; 9class RecMail;
10class RecBody; 10class RecBody;
11class encodedString; 11class encodedString;
12struct mailmbox_folder; 12struct mailmbox_folder;
13class OProcess; 13class OProcess;
14 14
15class MHwrapper : public Genericwrapper 15class MHwrapper : public Genericwrapper
16{ 16{
17 Q_OBJECT 17 Q_OBJECT
18public: 18public:
19 MHwrapper(const QString & dir,const QString&name); 19 MHwrapper(const QString & dir,const QString&name);
20 virtual ~MHwrapper(); 20 virtual ~MHwrapper();
21 21
22 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 22 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
23 virtual QList<Folder>* listFolders(); 23 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
25 25
26 virtual void deleteMail(const RecMail&mail); 26 virtual void deleteMail(const RecMail&mail);
27 virtual void answeredMail(const RecMail&mail); 27 virtual void answeredMail(const RecMail&mail);
28 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 28 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
29 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 29 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
30 30 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
31 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 31
32 virtual int deleteMbox(const Folder*); 32 virtual int createMbox(const QString&folder,const Opie::osmart_pointer<Folder>&f=0,
33 const QString&d="",bool s=false);
34 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&);
33 35
34 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 36 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
35 37
36 virtual RecBody fetchBody( const RecMail &mail ); 38 virtual RecBody fetchBody( const RecMail &mail );
37 static void mbox_progress( size_t current, size_t maximum ); 39 static void mbox_progress( size_t current, size_t maximum );
38 40
39 virtual encodedString* fetchRawBody(const RecMail&mail); 41 virtual encodedString* fetchRawBody(const RecMail&mail);
40 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 42 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
41 virtual int deleteAllMail(const Folder*); 43 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
42 virtual MAILLIB::ATYPE getType()const; 44 virtual MAILLIB::ATYPE getType()const;
43 virtual const QString&getName()const; 45 virtual const QString&getName()const;
44 46
45public slots: 47public slots:
46 /* for deleting maildirs we are using a system call */ 48 /* for deleting maildirs we are using a system call */
47 virtual void oprocessStderr(OProcess*, char *buffer, int ); 49 virtual void oprocessStderr(OProcess*, char *buffer, int );
48 virtual void processEnded(OProcess *); 50 virtual void processEnded(OProcess *);
49protected: 51protected:
50 QString buildPath(const QString&p); 52 QString buildPath(const QString&p);
51 QString MHPath; 53 QString MHPath;
52 QString MHName; 54 QString MHName;
53 55
54 void init_storage(); 56 void init_storage();
55 void clean_storage(); 57 void clean_storage();
56 58
57 bool removeMboxfailed; 59 bool removeMboxfailed;
58}; 60};
59 61
60#endif 62#endif
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
index 1956c61..2ec052c 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
@@ -179,41 +179,40 @@ void NNTPwrapper::login()
179 179
180} 180}
181 181
182void NNTPwrapper::logout() 182void NNTPwrapper::logout()
183{ 183{
184 int err = NEWSNNTP_NO_ERROR; 184 int err = NEWSNNTP_NO_ERROR;
185 if ( m_nntp == NULL ) 185 if ( m_nntp == NULL )
186 return; 186 return;
187 mailstorage_free(m_nntp); 187 mailstorage_free(m_nntp);
188 m_nntp = 0; 188 m_nntp = 0;
189} 189}
190 190
191QList<Folder>* NNTPwrapper::listFolders() { 191QValueList<Opie::osmart_pointer<Folder> >* NNTPwrapper::listFolders() {
192 192
193 QList<Folder> * folders = new QList<Folder>(); 193 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
194 folders->setAutoDelete( false );
195 QStringList groups; 194 QStringList groups;
196 if (account) { 195 if (account) {
197 groups = account->getGroups(); 196 groups = account->getGroups();
198 } 197 }
199 for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) { 198 for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) {
200 folders->append(new Folder((*it),".")); 199 folders->append(new Folder((*it),"."));
201 } 200 }
202 return folders; 201 return folders;
203} 202}
204 203
205/* we made this method in raw nntp access of etpan and not via generic interface 204/* we made this method in raw nntp access of etpan and not via generic interface
206 * 'cause in that case there will be doubled copy operations. eg. the etpan would 205 * 'cause in that case there will be doubled copy operations. eg. the etpan would
207 * copy that stuff into its own structures and we must copy it into useable c++ 206 * copy that stuff into its own structures and we must copy it into useable c++
208 * structures for our frontend. this would not make sense, so it is better to reimplement 207 * structures for our frontend. this would not make sense, so it is better to reimplement
209 * the stuff from generic interface of etpan but copy it direct to qt classes. 208 * the stuff from generic interface of etpan but copy it direct to qt classes.
210 */ 209 */
211QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) { 210QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) {
212 login(); 211 login();
213 QStringList res; 212 QStringList res;
214 clist *result = 0; 213 clist *result = 0;
215 clistcell *current = 0; 214 clistcell *current = 0;
216 newsnntp_group_description *group; 215 newsnntp_group_description *group;
217 216
218 if ( m_nntp ) { 217 if ( m_nntp ) {
219 mailsession * session = m_nntp->sto_session; 218 mailsession * session = m_nntp->sto_session;
@@ -271,14 +270,14 @@ encodedString* NNTPwrapper::fetchRawBody(const RecMail&mail) {
271 270
272MAILLIB::ATYPE NNTPwrapper::getType()const { 271MAILLIB::ATYPE NNTPwrapper::getType()const {
273 return account->getType(); 272 return account->getType();
274} 273}
275 274
276const QString&NNTPwrapper::getName()const{ 275const QString&NNTPwrapper::getName()const{
277 return account->getAccountName(); 276 return account->getAccountName();
278} 277}
279 278
280void NNTPwrapper::deleteMail(const RecMail&) { 279void NNTPwrapper::deleteMail(const RecMail&) {
281} 280}
282 281
283int NNTPwrapper::deleteAllMail(const Folder*) { 282int NNTPwrapper::deleteAllMail(const FolderP&) {
284} 283}
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.h b/noncore/net/mail/libmailwrapper/nntpwrapper.h
index 955b9f1..d3a384a 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.h
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.h
@@ -13,31 +13,31 @@ struct mailfolder;
13class NNTPwrapper : public Genericwrapper 13class NNTPwrapper : public Genericwrapper
14{ 14{
15 15
16 Q_OBJECT 16 Q_OBJECT
17 17
18public: 18public:
19 NNTPwrapper( NNTPaccount *a ); 19 NNTPwrapper( NNTPaccount *a );
20 virtual ~NNTPwrapper(); 20 virtual ~NNTPwrapper();
21 21
22 /* mailbox will be ignored */ 22 /* mailbox will be ignored */
23 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 23 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
24 /* should only get the subscribed one */ 24 /* should only get the subscribed one */
25 virtual QList<Folder>* listFolders(); 25 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
26 /* mailbox will be ignored */ 26 /* mailbox will be ignored */
27 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 27 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
28 QStringList listAllNewsgroups(const QString&mask = QString::null); 28 QStringList listAllNewsgroups(const QString&mask = QString::null);
29 virtual void deleteMail(const RecMail&mail); 29 virtual void deleteMail(const RecMail&mail);
30 virtual void answeredMail(const RecMail&mail); 30 virtual void answeredMail(const RecMail&mail);
31 virtual int deleteAllMail(const Folder*); 31 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
32 32
33 virtual RecBody fetchBody( const RecMail &mail ); 33 virtual RecBody fetchBody( const RecMail &mail );
34 virtual encodedString* fetchRawBody(const RecMail&mail); 34 virtual encodedString* fetchRawBody(const RecMail&mail);
35 virtual void logout(); 35 virtual void logout();
36 virtual MAILLIB::ATYPE getType()const; 36 virtual MAILLIB::ATYPE getType()const;
37 virtual const QString&getName()const; 37 virtual const QString&getName()const;
38 static void nntp_progress( size_t current, size_t maximum ); 38 static void nntp_progress( size_t current, size_t maximum );
39 39
40protected: 40protected:
41 void login(); 41 void login();
42 NNTPaccount *account; 42 NNTPaccount *account;
43 mailstorage* m_nntp; 43 mailstorage* m_nntp;
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index 0939b22..7bf7ed2 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -168,45 +168,44 @@ void POP3wrapper::login()
168} 168}
169 169
170void POP3wrapper::logout() 170void POP3wrapper::logout()
171{ 171{
172 int err = MAILPOP3_NO_ERROR; 172 int err = MAILPOP3_NO_ERROR;
173 if ( m_pop3 == NULL ) 173 if ( m_pop3 == NULL )
174 return; 174 return;
175 mailstorage_free(m_pop3); 175 mailstorage_free(m_pop3);
176 m_pop3 = 0; 176 m_pop3 = 0;
177} 177}
178 178
179 179
180QList<Folder>* POP3wrapper::listFolders() { 180QValueList<Opie::osmart_pointer<Folder> >* POP3wrapper::listFolders() {
181 QList<Folder> * folders = new QList<Folder>(); 181 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<FolderP>();
182 folders->setAutoDelete( false ); 182 FolderP inb=new Folder("INBOX","/");
183 Folder*inb=new Folder("INBOX","/");
184 folders->append(inb); 183 folders->append(inb);
185 return folders; 184 return folders;
186} 185}
187 186
188void POP3wrapper::deleteMail(const RecMail&mail) { 187void POP3wrapper::deleteMail(const RecMail&mail) {
189 login(); 188 login();
190 if (!m_pop3) 189 if (!m_pop3)
191 return; 190 return;
192 int err = mailsession_remove_message(m_pop3->sto_session,mail.getNumber()); 191 int err = mailsession_remove_message(m_pop3->sto_session,mail.getNumber());
193 if (err != MAIL_NO_ERROR) { 192 if (err != MAIL_NO_ERROR) {
194 Global::statusMessage(tr("error deleting mail")); 193 Global::statusMessage(tr("error deleting mail"));
195 } 194 }
196} 195}
197 196
198void POP3wrapper::answeredMail(const RecMail&) {} 197void POP3wrapper::answeredMail(const RecMail&) {}
199 198
200int POP3wrapper::deleteAllMail(const Folder*) { 199int POP3wrapper::deleteAllMail(const FolderP&) {
201 login(); 200 login();
202 if (!m_pop3) 201 if (!m_pop3)
203 return 0; 202 return 0;
204 int res = 1; 203 int res = 1;
205 204
206 uint32_t result = 0; 205 uint32_t result = 0;
207 int err = mailsession_messages_number(m_pop3->sto_session,NULL,&result); 206 int err = mailsession_messages_number(m_pop3->sto_session,NULL,&result);
208 if (err != MAIL_NO_ERROR) { 207 if (err != MAIL_NO_ERROR) {
209 Global::statusMessage(tr("Error getting folder info")); 208 Global::statusMessage(tr("Error getting folder info"));
210 return 0; 209 return 0;
211 } 210 }
212 for (unsigned int i = 0; i < result; ++i) { 211 for (unsigned int i = 0; i < result; ++i) {
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index 391c841..e4afb94 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -9,31 +9,31 @@ class encodedString;
9struct mailstorage; 9struct mailstorage;
10struct mailfolder; 10struct mailfolder;
11 11
12class POP3wrapper : public Genericwrapper 12class POP3wrapper : public Genericwrapper
13{ 13{
14 Q_OBJECT 14 Q_OBJECT
15 15
16public: 16public:
17 POP3wrapper( POP3account *a ); 17 POP3wrapper( POP3account *a );
18 virtual ~POP3wrapper(); 18 virtual ~POP3wrapper();
19 /* mailbox will be ignored */ 19 /* mailbox will be ignored */
20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
21 virtual QList<Folder>* listFolders(); 21 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
22 /* mailbox will be ignored */ 22 /* mailbox will be ignored */
23 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 23 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
24 24
25 virtual void deleteMail(const RecMail&mail); 25 virtual void deleteMail(const RecMail&mail);
26 virtual void answeredMail(const RecMail&mail); 26 virtual void answeredMail(const RecMail&mail);
27 virtual int deleteAllMail(const Folder*); 27 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
28 28
29 virtual RecBody fetchBody( const RecMail &mail ); 29 virtual RecBody fetchBody( const RecMail &mail );
30 virtual encodedString* fetchRawBody(const RecMail&mail); 30 virtual encodedString* fetchRawBody(const RecMail&mail);
31 virtual void logout(); 31 virtual void logout();
32 virtual MAILLIB::ATYPE getType()const; 32 virtual MAILLIB::ATYPE getType()const;
33 virtual const QString&getName()const; 33 virtual const QString&getName()const;
34 static void pop3_progress( size_t current, size_t maximum ); 34 static void pop3_progress( size_t current, size_t maximum );
35 35
36protected: 36protected:
37 void login(); 37 void login();
38 POP3account *account; 38 POP3account *account;
39 mailstorage*m_pop3; 39 mailstorage*m_pop3;