author | alwin <alwin> | 2004-03-12 14:12:00 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-03-12 14:12:00 (UTC) |
commit | d1929ef43f0eaaa17aa42196384d1ed925132873 (patch) (unidiff) | |
tree | eff911f93fe7919d7820e5a2e68b72f2f76143da /noncore/net/mail/libmailwrapper | |
parent | d38384a6edb0110117e0297864f813b379d52789 (diff) | |
download | opie-d1929ef43f0eaaa17aa42196384d1ed925132873.zip opie-d1929ef43f0eaaa17aa42196384d1ed925132873.tar.gz opie-d1929ef43f0eaaa17aa42196384d1ed925132873.tar.bz2 |
some pointers embedded into osmart_pointer handling
Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.cpp | 5 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.h | 16 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/genericwrapper.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 14 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.h | 20 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailtypes.h | 1 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailwrapper.cpp | 12 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailwrapper.h | 16 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mboxwrapper.cpp | 39 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mboxwrapper.h | 13 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mhwrapper.cpp | 24 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mhwrapper.h | 20 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/nntpwrapper.cpp | 9 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/nntpwrapper.h | 4 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 9 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.h | 4 |
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 | |||
@@ -98,55 +98,56 @@ QString AbstractMail::convert_String(const char*text) | |||
98 | if (res) free(res); | 98 | if (res) free(res); |
99 | return result; | 99 | return result; |
100 | } | 100 | } |
101 | 101 | ||
102 | /* cp & paste from launcher */ | 102 | /* cp & paste from launcher */ |
103 | QString AbstractMail::gen_attachment_id() | 103 | QString 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 | ||
114 | int AbstractMail::createMbox(const QString&,const Folder*,const QString& delemiter,bool) | 114 | int AbstractMail::createMbox(const QString&,const FolderP&,const QString& delemiter,bool) |
115 | { | 115 | { |
116 | return 0; | 116 | return 0; |
117 | } | 117 | } |
118 | 118 | ||
119 | QString AbstractMail::defaultLocalfolder() | 119 | QString 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 | ||
126 | QString AbstractMail::draftFolder() | 126 | QString 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 */ |
132 | void AbstractMail::deleteMails(const QString &,QList<RecMail> &) | 132 | void AbstractMail::deleteMails(const QString &,QList<RecMail> &) |
133 | { | 133 | { |
134 | } | 134 | } |
135 | 135 | ||
136 | void AbstractMail::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 136 | void 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(); |
149 | } | 150 | } |
150 | if (moveit) { | 151 | if (moveit) { |
151 | deleteAllMail(fromFolder); | 152 | deleteAllMail(fromFolder); |
152 | } | 153 | } |
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,65 +1,69 @@ | |||
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 | |||
9 | class RecMail; | 11 | class RecMail; |
10 | class RecBody; | 12 | class RecBody; |
11 | class RecPart; | 13 | class RecPart; |
12 | class IMAPwrapper; | 14 | class IMAPwrapper; |
13 | class POP3wrapper; | 15 | class POP3wrapper; |
14 | class Folder; | 16 | class Folder; |
15 | class encodedString; | 17 | class encodedString; |
16 | struct folderStat; | 18 | struct folderStat; |
17 | 19 | ||
18 | class AbstractMail:public QObject | 20 | class AbstractMail:public QObject |
19 | { | 21 | { |
20 | Q_OBJECT | 22 | Q_OBJECT |
21 | public: | 23 | public: |
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 | ||
62 | virtual MAILLIB::ATYPE getType()const=0; | 66 | virtual MAILLIB::ATYPE getType()const=0; |
63 | virtual const QString&getName()const=0; | 67 | virtual const QString&getName()const=0; |
64 | 68 | ||
65 | protected: | 69 | protected: |
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 | |||
@@ -25,33 +25,33 @@ struct mailimf_in_reply_to; | |||
25 | 25 | ||
26 | /* this class hold just the funs shared between | 26 | /* this class hold just the funs shared between |
27 | * mbox and pop3 (later mh, too) mail access. | 27 | * mbox and pop3 (later mh, too) mail access. |
28 | * it is not desigend to make a instance of it! | 28 | * it is not desigend to make a instance of it! |
29 | */ | 29 | */ |
30 | class Genericwrapper : public AbstractMail | 30 | class Genericwrapper : public AbstractMail |
31 | { | 31 | { |
32 | Q_OBJECT | 32 | Q_OBJECT |
33 | public: | 33 | public: |
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 | ||
45 | protected: | 45 | protected: |
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); |
54 | static void fillSingleBody(RecPart&target,mailmessage*message,mailmime*mime); | 54 | static void fillSingleBody(RecPart&target,mailmessage*message,mailmime*mime); |
55 | static void fillParameters(RecPart&target,clist*parameters); | 55 | static void fillParameters(RecPart&target,clist*parameters); |
56 | static QString getencoding(mailmime_mechanism*aEnc); | 56 | static QString getencoding(mailmime_mechanism*aEnc); |
57 | virtual void parseList(QList<RecMail> &target,mailsession*session,const QString&mailbox,bool mbox_as_to=false); | 57 | virtual void parseList(QList<RecMail> &target,mailsession*session,const QString&mailbox,bool mbox_as_to=false); |
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 | |||
@@ -253,43 +253,42 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) | |||
253 | msg_att = (mailimap_msg_att*)current->data; | 253 | msg_att = (mailimap_msg_att*)current->data; |
254 | RecMail*m = parse_list_result(msg_att); | 254 | RecMail*m = parse_list_result(msg_att); |
255 | if (m) { | 255 | if (m) { |
256 | m->setNumber(i); | 256 | m->setNumber(i); |
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 | ||
269 | QList<Folder>* IMAPwrapper::listFolders() | 269 | QValueList<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" ; |
292 | mailimap_mailbox_list *list; | 291 | mailimap_mailbox_list *list; |
293 | err = mailimap_list( m_imap, (char*)"", (char*)mask, &result ); | 292 | err = mailimap_list( m_imap, (char*)"", (char*)mask, &result ); |
294 | QString del; | 293 | QString del; |
295 | bool selectable = true; | 294 | bool selectable = true; |
@@ -953,33 +952,33 @@ QString IMAPwrapper::fetchTextPart(const RecMail&mail,const RecPart&part) | |||
953 | return fetchTextPart(mail,part.Positionlist(),false,part.Encoding()); | 952 | return fetchTextPart(mail,part.Positionlist(),false,part.Encoding()); |
954 | } | 953 | } |
955 | 954 | ||
956 | encodedString* IMAPwrapper::fetchDecodedPart(const RecMail&mail,const RecPart&part) | 955 | encodedString* IMAPwrapper::fetchDecodedPart(const RecMail&mail,const RecPart&part) |
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 | ||
964 | encodedString* IMAPwrapper::fetchRawPart(const RecMail&mail,const RecPart&part) | 963 | encodedString* 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 | ||
969 | int IMAPwrapper::deleteAllMail(const Folder*folder) | 968 | int 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 | } |
982 | 981 | ||
983 | int last = m_imap->imap_selection_info->sel_exists; | 982 | int last = m_imap->imap_selection_info->sel_exists; |
984 | if (last == 0) { | 983 | if (last == 0) { |
985 | Global::statusMessage(tr("Mailbox has no mails!")); | 984 | Global::statusMessage(tr("Mailbox has no mails!")); |
@@ -994,63 +993,63 @@ int IMAPwrapper::deleteAllMail(const Folder*folder) | |||
994 | mailimap_store_att_flags_free(store_flags); | 993 | mailimap_store_att_flags_free(store_flags); |
995 | if (err != MAILIMAP_NO_ERROR) { | 994 | if (err != MAILIMAP_NO_ERROR) { |
996 | Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); | 995 | Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); |
997 | return 0; | 996 | return 0; |
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 | ||
1010 | int IMAPwrapper::createMbox(const QString&folder,const Folder*parentfolder,const QString& delemiter,bool getsubfolder) | 1009 | int 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; |
1023 | if (getsubfolder) { | 1022 | if (getsubfolder) { |
1024 | if (delemiter.length()>0) { | 1023 | if (delemiter.length()>0) { |
1025 | pre+=delemiter; | 1024 | pre+=delemiter; |
1026 | } else { | 1025 | } else { |
1027 | Global::statusMessage(tr("Cannot create folder %1 for holding subfolders").arg(pre)); | 1026 | Global::statusMessage(tr("Cannot create folder %1 for holding subfolders").arg(pre)); |
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 | ||
1040 | int IMAPwrapper::deleteMbox(const Folder*folder) | 1039 | int 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 | ||
1053 | void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) | 1052 | void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) |
1054 | { | 1053 | { |
1055 | mailimap_status_att_list * att_list =0; | 1054 | mailimap_status_att_list * att_list =0; |
1056 | mailimap_mailbox_data_status * status=0; | 1055 | mailimap_mailbox_data_status * status=0; |
@@ -1110,33 +1109,34 @@ MAILLIB::ATYPE IMAPwrapper::getType()const | |||
1110 | return account->getType(); | 1109 | return account->getType(); |
1111 | } | 1110 | } |
1112 | 1111 | ||
1113 | const QString&IMAPwrapper::getName()const | 1112 | 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 | ||
1119 | encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail) | 1118 | encodedString* 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 | ||
1126 | void IMAPwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 1125 | void 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()); |
1139 | if ( err != MAILIMAP_NO_ERROR ) { | 1139 | if ( err != MAILIMAP_NO_ERROR ) { |
1140 | return; | 1140 | return; |
1141 | } | 1141 | } |
1142 | int last = m_imap->imap_selection_info->sel_exists; | 1142 | int last = m_imap->imap_selection_info->sel_exists; |
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 | |||
@@ -10,69 +10,71 @@ struct mailimap; | |||
10 | struct mailimap_body; | 10 | struct mailimap_body; |
11 | struct mailimap_body_type_1part; | 11 | struct mailimap_body_type_1part; |
12 | struct mailimap_body_type_text; | 12 | struct mailimap_body_type_text; |
13 | struct mailimap_body_type_basic; | 13 | struct mailimap_body_type_basic; |
14 | struct mailimap_body_type_msg; | 14 | struct mailimap_body_type_msg; |
15 | struct mailimap_body_type_mpart; | 15 | struct mailimap_body_type_mpart; |
16 | struct mailimap_body_fields; | 16 | struct mailimap_body_fields; |
17 | struct mailimap_msg_att; | 17 | struct mailimap_msg_att; |
18 | class encodedString; | 18 | class encodedString; |
19 | 19 | ||
20 | class IMAPwrapper : public AbstractMail | 20 | class IMAPwrapper : public AbstractMail |
21 | { | 21 | { |
22 | Q_OBJECT | 22 | Q_OBJECT |
23 | public: | 23 | public: |
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 | ||
52 | protected: | 54 | protected: |
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,27 +1,26 @@ | |||
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 | ||
18 | class AbstractMail; | 17 | class 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. |
24 | Mailbodies can be real large. So we request them when | 23 | Mailbodies can be real large. So we request them when |
25 | needed from the mail-wrapper class direct from the server itself | 24 | needed from the mail-wrapper class direct from the server itself |
26 | (imap) or from a file-based cache (pop3?) | 25 | (imap) or from a file-based cache (pop3?) |
27 | So there is no interface "const QString&body()" but you should | 26 | So there is no interface "const QString&body()" but you should |
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 | |||
@@ -22,54 +22,62 @@ | |||
22 | 22 | ||
23 | 23 | ||
24 | Attachment::Attachment( DocLnk lnk ) | 24 | Attachment::Attachment( DocLnk lnk ) |
25 | { | 25 | { |
26 | doc = lnk; | 26 | doc = lnk; |
27 | size = QFileInfo( doc.file() ).size(); | 27 | size = QFileInfo( doc.file() ).size(); |
28 | } | 28 | } |
29 | 29 | ||
30 | Folder::Folder(const QString&tmp_name, const QString&sep ) | 30 | Folder::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 | ||
38 | Folder::~Folder() | ||
39 | { | ||
40 | } | ||
41 | |||
38 | const QString& Folder::Separator()const | 42 | const QString& Folder::Separator()const |
39 | { | 43 | { |
40 | return separator; | 44 | return separator; |
41 | } | 45 | } |
42 | 46 | ||
43 | IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&aprefix ) | 47 | IMAPFolder::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 | ||
64 | IMAPFolder::~IMAPFolder() | ||
65 | { | ||
66 | } | ||
67 | |||
60 | static unsigned char base64chars[] = | 68 | static 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 | */ |
67 | QString IMAPFolder::decodeFolderName( const QString &name ) | 75 | QString 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]; |
72 | unsigned long srcPtr = 0; | 80 | unsigned long srcPtr = 0; |
73 | QCString dst = ""; | 81 | QCString dst = ""; |
74 | QCString src = name.ascii(); | 82 | QCString src = name.ascii(); |
75 | 83 | ||
@@ -151,16 +159,20 @@ Mail::Mail() | |||
151 | { | 159 | { |
152 | } | 160 | } |
153 | 161 | ||
154 | MHFolder::MHFolder(const QString&disp_name,const QString&mbox) | 162 | 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 | |||
176 | MHFolder::~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 | |||
@@ -1,104 +1,106 @@ | |||
1 | #ifndef MAILWRAPPER_H | 1 | #ifndef MAILWRAPPER_H |
2 | #define MAILWRAPPER_H | 2 | #define MAILWRAPPER_H |
3 | 3 | ||
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 | ||
13 | class Attachment | 13 | class Attachment |
14 | { | 14 | { |
15 | public: | 15 | public: |
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 | ||
25 | protected: | 25 | protected: |
26 | DocLnk doc; | 26 | DocLnk doc; |
27 | int size; | 27 | int size; |
28 | 28 | ||
29 | }; | 29 | }; |
30 | 30 | ||
31 | class Mail:public Opie::oref_count | 31 | class Mail:public Opie::oref_count |
32 | { | 32 | { |
33 | public: | 33 | public: |
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; } |
56 | const QString&getSubject()const { return subject; } | 56 | const QString&getSubject()const { return subject; } |
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 | ||
63 | private: | 63 | private: |
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 | ||
69 | class Folder : public QObject | 69 | class Folder:public Opie::oref_count |
70 | { | 70 | { |
71 | Q_OBJECT | ||
72 | |||
73 | public: | 71 | public: |
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 | ||
82 | protected: | 81 | protected: |
83 | QString nameDisplay, name, separator,prefix; | 82 | QString nameDisplay, name, separator,prefix; |
84 | }; | 83 | }; |
85 | 84 | ||
85 | typedef Opie::osmart_pointer<Folder> FolderP; | ||
86 | |||
86 | class MHFolder : public Folder | 87 | class MHFolder : public Folder |
87 | { | 88 | { |
88 | Q_OBJECT | ||
89 | public: | 89 | public: |
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 | ||
93 | class IMAPFolder : public Folder | 94 | class 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 | |||
@@ -1,154 +1,153 @@ | |||
1 | #include "mboxwrapper.h" | 1 | #include "mboxwrapper.h" |
2 | #include "mailtypes.h" | 2 | #include "mailtypes.h" |
3 | #include "mailwrapper.h" | 3 | #include "mailwrapper.h" |
4 | #include <libetpan/libetpan.h> | 4 | #include <libetpan/libetpan.h> |
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 | ||
9 | MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name) | 9 | MBOXwrapper::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 | ||
18 | MBOXwrapper::~MBOXwrapper() | 18 | MBOXwrapper::~MBOXwrapper() |
19 | { | 19 | { |
20 | } | 20 | } |
21 | 21 | ||
22 | void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) | 22 | void 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 | ||
47 | QList<Folder>* MBOXwrapper::listFolders() | 47 | QValueList<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 | ||
63 | void MBOXwrapper::deleteMail(const RecMail&mail) | 62 | void 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); |
83 | mailstorage_free(storage); | 82 | mailstorage_free(storage); |
84 | } | 83 | } |
85 | 84 | ||
86 | void MBOXwrapper::answeredMail(const RecMail&) | 85 | void MBOXwrapper::answeredMail(const RecMail&) |
87 | { | 86 | { |
88 | } | 87 | } |
89 | 88 | ||
90 | RecBody MBOXwrapper::fetchBody( const RecMail &mail ) | 89 | RecBody 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 | ||
133 | void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) | 132 | void 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 | ||
138 | int MBOXwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool ) | 137 | int 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; |
151 | } | 150 | } |
152 | if (f) mailmbox_done(f); | 151 | if (f) mailmbox_done(f); |
153 | return 1; | 152 | return 1; |
154 | } | 153 | } |
@@ -169,33 +168,33 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde | |||
169 | } | 168 | } |
170 | mailmbox_done(f); | 169 | mailmbox_done(f); |
171 | } | 170 | } |
172 | 171 | ||
173 | encodedString* MBOXwrapper::fetchRawBody(const RecMail&mail) | 172 | encodedString* 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); |
198 | return 0; | 197 | return 0; |
199 | } | 198 | } |
200 | r = mailmessage_fetch(msg,&data,&size); | 199 | r = mailmessage_fetch(msg,&data,&size); |
201 | if (r != MAIL_NO_ERROR) { | 200 | if (r != MAIL_NO_ERROR) { |
@@ -230,106 +229,106 @@ void MBOXwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target) | |||
230 | void MBOXwrapper::deleteMails(mailmbox_folder*f,QList<RecMail> &target) | 229 | void MBOXwrapper::deleteMails(mailmbox_folder*f,QList<RecMail> &target) |
231 | { | 230 | { |
232 | if (!f) return; | 231 | if (!f) return; |
233 | int r; | 232 | int r; |
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 | ||
246 | int MBOXwrapper::deleteAllMail(const Folder*tfolder) | 245 | int 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 | } |
274 | } | 273 | } |
275 | for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { | 274 | for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { |
276 | r = mailsession_remove_message(folder->fld_session,i+1); | 275 | r = mailsession_remove_message(folder->fld_session,i+1); |
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 | ||
289 | int MBOXwrapper::deleteMbox(const Folder*tfolder) | 288 | int 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 | } |
302 | return 1; | 301 | return 1; |
303 | } | 302 | } |
304 | 303 | ||
305 | void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) | 304 | void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) |
306 | { | 305 | { |
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 | ||
327 | MAILLIB::ATYPE MBOXwrapper::getType()const | 326 | MAILLIB::ATYPE MBOXwrapper::getType()const |
328 | { | 327 | { |
329 | return MAILLIB::A_MBOX; | 328 | return MAILLIB::A_MBOX; |
330 | } | 329 | } |
331 | 330 | ||
332 | const QString&MBOXwrapper::getName()const | 331 | const QString&MBOXwrapper::getName()const |
333 | { | 332 | { |
334 | return MBOXName; | 333 | return MBOXName; |
335 | } | 334 | } |
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 | |||
@@ -3,45 +3,46 @@ | |||
3 | 3 | ||
4 | #include "genericwrapper.h" | 4 | #include "genericwrapper.h" |
5 | #include <qstring.h> | 5 | #include <qstring.h> |
6 | 6 | ||
7 | class RecMail; | 7 | class RecMail; |
8 | class RecBody; | 8 | class RecBody; |
9 | class encodedString; | 9 | class encodedString; |
10 | struct mailmbox_folder; | 10 | struct mailmbox_folder; |
11 | 11 | ||
12 | class MBOXwrapper : public Genericwrapper | 12 | class MBOXwrapper : public Genericwrapper |
13 | { | 13 | { |
14 | Q_OBJECT | 14 | Q_OBJECT |
15 | 15 | ||
16 | public: | 16 | public: |
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 | ||
41 | protected: | 42 | protected: |
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 | |||
@@ -63,36 +63,35 @@ MHwrapper::~MHwrapper() | |||
63 | void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) | 63 | void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) |
64 | { | 64 | { |
65 | init_storage(); | 65 | init_storage(); |
66 | if (!m_storage) { | 66 | if (!m_storage) { |
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 | ||
79 | QList<Folder>* MHwrapper::listFolders() | 79 | QValueList<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; |
95 | } | 94 | } |
96 | for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { | 95 | for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { |
97 | QString t = (char*)current->data; | 96 | QString t = (char*)current->data; |
98 | t.replace(0,MHPath.length(),""); | 97 | t.replace(0,MHPath.length(),""); |
@@ -131,58 +130,58 @@ RecBody MHwrapper::fetchBody( const RecMail &mail ) | |||
131 | return body; | 130 | return body; |
132 | } | 131 | } |
133 | mailmessage * msg; | 132 | mailmessage * msg; |
134 | char*data=0; | 133 | char*data=0; |
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 | ||
152 | void MHwrapper::mbox_progress( size_t current, size_t maximum ) | 151 | void 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 | ||
157 | QString MHwrapper::buildPath(const QString&p) | 156 | QString 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 | ||
172 | int MHwrapper::createMbox(const QString&folder,const Folder*pfolder,const QString&,bool ) | 171 | int 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+="/"; |
185 | f+=folder; | 184 | f+=folder; |
186 | } | 185 | } |
187 | qDebug(f); | 186 | qDebug(f); |
188 | int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); | 187 | int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); |
@@ -250,33 +249,33 @@ void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target) | |||
250 | int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); | 249 | int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); |
251 | if (r!=MAIL_NO_ERROR) { | 250 | if (r!=MAIL_NO_ERROR) { |
252 | qDebug("deleteMails: error selecting folder!"); | 251 | qDebug("deleteMails: error selecting folder!"); |
253 | return; | 252 | return; |
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 | ||
266 | int MHwrapper::deleteAllMail(const Folder*tfolder) | 265 | int 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 | } |
279 | mailmessage_list*l=0; | 278 | mailmessage_list*l=0; |
280 | r = mailsession_get_messages_list(m_storage->sto_session,&l); | 279 | r = mailsession_get_messages_list(m_storage->sto_session,&l); |
281 | if (r != MAIL_NO_ERROR) { | 280 | if (r != MAIL_NO_ERROR) { |
282 | qDebug("Error message list"); | 281 | qDebug("Error message list"); |
@@ -285,54 +284,54 @@ int MHwrapper::deleteAllMail(const Folder*tfolder) | |||
285 | unsigned j = 0; | 284 | unsigned j = 0; |
286 | for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { | 285 | for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { |
287 | mailmessage * msg; | 286 | mailmessage * msg; |
288 | msg = (mailmessage*)carray_get(l->msg_tab, i); | 287 | msg = (mailmessage*)carray_get(l->msg_tab, i); |
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 | ||
301 | int MHwrapper::deleteMbox(const Folder*tfolder) | 300 | int 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"); |
335 | return 1; | 334 | return 1; |
336 | } | 335 | } |
337 | 336 | ||
338 | void MHwrapper::processEnded(OProcess *p) | 337 | void MHwrapper::processEnded(OProcess *p) |
@@ -373,48 +372,49 @@ const QString&MHwrapper::getName()const | |||
373 | { | 372 | { |
374 | return MHName; | 373 | return MHName; |
375 | } | 374 | } |
376 | void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 375 | void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) |
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 | ||
404 | void MHwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 403 | void 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()); |
417 | if (r!=MAIL_NO_ERROR) { | 417 | if (r!=MAIL_NO_ERROR) { |
418 | qDebug("error selecting source folder!"); | 418 | qDebug("error selecting source folder!"); |
419 | return; | 419 | return; |
420 | } | 420 | } |
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 | |||
@@ -5,56 +5,58 @@ | |||
5 | 5 | ||
6 | #include "genericwrapper.h" | 6 | #include "genericwrapper.h" |
7 | #include <qstring.h> | 7 | #include <qstring.h> |
8 | 8 | ||
9 | class RecMail; | 9 | class RecMail; |
10 | class RecBody; | 10 | class RecBody; |
11 | class encodedString; | 11 | class encodedString; |
12 | struct mailmbox_folder; | 12 | struct mailmbox_folder; |
13 | class OProcess; | 13 | class OProcess; |
14 | 14 | ||
15 | class MHwrapper : public Genericwrapper | 15 | class MHwrapper : public Genericwrapper |
16 | { | 16 | { |
17 | Q_OBJECT | 17 | Q_OBJECT |
18 | public: | 18 | public: |
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 | ||
45 | public slots: | 47 | public 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 *); |
49 | protected: | 51 | protected: |
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 | |||
@@ -175,49 +175,48 @@ void NNTPwrapper::login() | |||
175 | mailstorage_free(m_nntp); | 175 | mailstorage_free(m_nntp); |
176 | m_nntp = 0; | 176 | m_nntp = 0; |
177 | 177 | ||
178 | } | 178 | } |
179 | 179 | ||
180 | } | 180 | } |
181 | 181 | ||
182 | void NNTPwrapper::logout() | 182 | void 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 | ||
191 | QList<Folder>* NNTPwrapper::listFolders() { | 191 | QValueList<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 | */ |
211 | QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) { | 210 | QStringList 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; |
220 | newsnntp * news = ( ( nntp_session_state_data * )session->sess_data )->nntp_session; | 219 | newsnntp * news = ( ( nntp_session_state_data * )session->sess_data )->nntp_session; |
221 | int err = NEWSNNTP_NO_ERROR; | 220 | int err = NEWSNNTP_NO_ERROR; |
222 | if (mask.isEmpty()) { | 221 | if (mask.isEmpty()) { |
223 | err = newsnntp_list(news, &result); | 222 | err = newsnntp_list(news, &result); |
@@ -267,18 +266,18 @@ encodedString* NNTPwrapper::fetchRawBody(const RecMail&mail) { | |||
267 | res = new encodedString(target,length); | 266 | res = new encodedString(target,length); |
268 | } | 267 | } |
269 | return res; | 268 | return res; |
270 | } | 269 | } |
271 | 270 | ||
272 | MAILLIB::ATYPE NNTPwrapper::getType()const { | 271 | MAILLIB::ATYPE NNTPwrapper::getType()const { |
273 | return account->getType(); | 272 | return account->getType(); |
274 | } | 273 | } |
275 | 274 | ||
276 | const QString&NNTPwrapper::getName()const{ | 275 | const QString&NNTPwrapper::getName()const{ |
277 | return account->getAccountName(); | 276 | return account->getAccountName(); |
278 | } | 277 | } |
279 | 278 | ||
280 | void NNTPwrapper::deleteMail(const RecMail&) { | 279 | void NNTPwrapper::deleteMail(const RecMail&) { |
281 | } | 280 | } |
282 | 281 | ||
283 | int NNTPwrapper::deleteAllMail(const Folder*) { | 282 | int 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 | |||
@@ -9,39 +9,39 @@ | |||
9 | class encodedString; | 9 | class encodedString; |
10 | struct mailstorage; | 10 | struct mailstorage; |
11 | struct mailfolder; | 11 | struct mailfolder; |
12 | 12 | ||
13 | class NNTPwrapper : public Genericwrapper | 13 | class NNTPwrapper : public Genericwrapper |
14 | { | 14 | { |
15 | 15 | ||
16 | Q_OBJECT | 16 | Q_OBJECT |
17 | 17 | ||
18 | public: | 18 | public: |
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 | ||
40 | protected: | 40 | protected: |
41 | void login(); | 41 | void login(); |
42 | NNTPaccount *account; | 42 | NNTPaccount *account; |
43 | mailstorage* m_nntp; | 43 | mailstorage* m_nntp; |
44 | 44 | ||
45 | 45 | ||
46 | }; | 46 | }; |
47 | 47 | ||
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 | |||
@@ -164,53 +164,52 @@ void POP3wrapper::login() | |||
164 | Global::statusMessage(tr("Error initializing folder")); | 164 | Global::statusMessage(tr("Error initializing folder")); |
165 | mailstorage_free(m_pop3); | 165 | mailstorage_free(m_pop3); |
166 | m_pop3 = 0; | 166 | m_pop3 = 0; |
167 | } | 167 | } |
168 | } | 168 | } |
169 | 169 | ||
170 | void POP3wrapper::logout() | 170 | void 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 | ||
180 | QList<Folder>* POP3wrapper::listFolders() { | 180 | QValueList<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 | ||
188 | void POP3wrapper::deleteMail(const RecMail&mail) { | 187 | void 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 | ||
198 | void POP3wrapper::answeredMail(const RecMail&) {} | 197 | void POP3wrapper::answeredMail(const RecMail&) {} |
199 | 198 | ||
200 | int POP3wrapper::deleteAllMail(const Folder*) { | 199 | int 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) { |
213 | err = mailsession_remove_message(m_pop3->sto_session,i+1); | 212 | err = mailsession_remove_message(m_pop3->sto_session,i+1); |
214 | if (err != MAIL_NO_ERROR) { | 213 | if (err != MAIL_NO_ERROR) { |
215 | Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); | 214 | Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); |
216 | res=0; | 215 | res=0; |
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 | |||
@@ -5,38 +5,38 @@ | |||
5 | #include "genericwrapper.h" | 5 | #include "genericwrapper.h" |
6 | #include <qstring.h> | 6 | #include <qstring.h> |
7 | 7 | ||
8 | class encodedString; | 8 | class encodedString; |
9 | struct mailstorage; | 9 | struct mailstorage; |
10 | struct mailfolder; | 10 | struct mailfolder; |
11 | 11 | ||
12 | class POP3wrapper : public Genericwrapper | 12 | class POP3wrapper : public Genericwrapper |
13 | { | 13 | { |
14 | Q_OBJECT | 14 | Q_OBJECT |
15 | 15 | ||
16 | public: | 16 | public: |
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 | ||
36 | protected: | 36 | protected: |
37 | void login(); | 37 | void login(); |
38 | POP3account *account; | 38 | POP3account *account; |
39 | mailstorage*m_pop3; | 39 | mailstorage*m_pop3; |
40 | }; | 40 | }; |
41 | 41 | ||
42 | #endif | 42 | #endif |