Diffstat (limited to 'noncore/net/mail/libmailwrapper/mboxwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/mail/libmailwrapper/mboxwrapper.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp index 7581715..8117cef 100644 --- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp | |||
@@ -1,29 +1,29 @@ | |||
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 "libetpan/mailstorage.h" | 5 | #include <libetpan/mailstorage.h> |
6 | #include <qdir.h> | 6 | #include <qdir.h> |
7 | 7 | ||
8 | MBOXwrapper::MBOXwrapper(const QString & mbox_dir) | 8 | MBOXwrapper::MBOXwrapper(const QString & mbox_dir) |
9 | : Genericwrapper(),MBOXPath(mbox_dir) | 9 | : Genericwrapper(),MBOXPath(mbox_dir) |
10 | { | 10 | { |
11 | QDir dir(MBOXPath); | 11 | QDir dir(MBOXPath); |
12 | if (!dir.exists()) { | 12 | if (!dir.exists()) { |
13 | dir.mkdir(MBOXPath); | 13 | dir.mkdir(MBOXPath); |
14 | } | 14 | } |
15 | } | 15 | } |
16 | 16 | ||
17 | MBOXwrapper::~MBOXwrapper() | 17 | MBOXwrapper::~MBOXwrapper() |
18 | { | 18 | { |
19 | } | 19 | } |
20 | 20 | ||
21 | void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) | 21 | void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) |
22 | { | 22 | { |
23 | mailstorage*storage = mailstorage_new(NULL); | 23 | mailstorage*storage = mailstorage_new(NULL); |
24 | QString p = MBOXPath+"/"; | 24 | QString p = MBOXPath+"/"; |
25 | p+=mailbox; | 25 | p+=mailbox; |
26 | 26 | ||
27 | int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0); | 27 | int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0); |
28 | mailfolder*folder; | 28 | mailfolder*folder; |
29 | folder = mailfolder_new( storage,strdup(p.latin1()),NULL); | 29 | folder = mailfolder_new( storage,strdup(p.latin1()),NULL); |
@@ -46,49 +46,48 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) | |||
46 | if (r != MAIL_NO_ERROR) { | 46 | if (r != MAIL_NO_ERROR) { |
47 | qDebug("Error filling message list"); | 47 | qDebug("Error filling message list"); |
48 | if (env_list) { | 48 | if (env_list) { |
49 | mailmessage_list_free(env_list); | 49 | mailmessage_list_free(env_list); |
50 | } | 50 | } |
51 | mailfolder_free(folder); | 51 | mailfolder_free(folder); |
52 | mailstorage_free(storage); | 52 | mailstorage_free(storage); |
53 | return; | 53 | return; |
54 | } | 54 | } |
55 | mailimf_references * refs; | 55 | mailimf_references * refs; |
56 | 56 | ||
57 | for(int i = 0 ; i < carray_count(env_list->msg_tab) ; ++i) { | 57 | for(int i = 0 ; i < carray_count(env_list->msg_tab) ; ++i) { |
58 | mailmessage * msg; | 58 | mailmessage * msg; |
59 | QBitArray mFlags(7); | 59 | QBitArray mFlags(7); |
60 | msg = (mailmessage*)carray_get(env_list->msg_tab, i); | 60 | msg = (mailmessage*)carray_get(env_list->msg_tab, i); |
61 | if (msg->msg_fields == NULL) { | 61 | if (msg->msg_fields == NULL) { |
62 | qDebug("could not fetch envelope of message %i", i); | 62 | qDebug("could not fetch envelope of message %i", i); |
63 | continue; | 63 | continue; |
64 | } | 64 | } |
65 | RecMail * mail = new RecMail(); | 65 | RecMail * mail = new RecMail(); |
66 | mail->setWrapper(this); | 66 | mail->setWrapper(this); |
67 | mail_flags * flag_result = 0; | 67 | mail_flags * flag_result = 0; |
68 | r = mailmessage_get_flags(msg,&flag_result); | 68 | r = mailmessage_get_flags(msg,&flag_result); |
69 | if (r == MAIL_ERROR_NOT_IMPLEMENTED) { | 69 | if (r == MAIL_ERROR_NOT_IMPLEMENTED) { |
70 | qDebug("flag fetching not implemented"); | ||
71 | mFlags.setBit(FLAG_SEEN); | 70 | mFlags.setBit(FLAG_SEEN); |
72 | } | 71 | } |
73 | mailimf_single_fields single_fields; | 72 | mailimf_single_fields single_fields; |
74 | mailimf_single_fields_init(&single_fields, msg->msg_fields); | 73 | mailimf_single_fields_init(&single_fields, msg->msg_fields); |
75 | mail->setMsgsize(msg->msg_size); | 74 | mail->setMsgsize(msg->msg_size); |
76 | mail->setFlags(mFlags); | 75 | mail->setFlags(mFlags); |
77 | mail->setMbox(mailbox); | 76 | mail->setMbox(mailbox); |
78 | mail->setNumber(i+1); | 77 | mail->setNumber(i+1); |
79 | if (single_fields.fld_subject) | 78 | if (single_fields.fld_subject) |
80 | mail->setSubject( convert_String(single_fields.fld_subject->sbj_value)); | 79 | mail->setSubject( convert_String(single_fields.fld_subject->sbj_value)); |
81 | if (single_fields.fld_from) | 80 | if (single_fields.fld_from) |
82 | mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list)); | 81 | mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list)); |
83 | if (single_fields.fld_to) | 82 | if (single_fields.fld_to) |
84 | mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) ); | 83 | mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) ); |
85 | if (single_fields.fld_cc) | 84 | if (single_fields.fld_cc) |
86 | mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); | 85 | mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); |
87 | if (single_fields.fld_bcc) | 86 | if (single_fields.fld_bcc) |
88 | mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); | 87 | mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); |
89 | if (single_fields.fld_orig_date) | 88 | if (single_fields.fld_orig_date) |
90 | mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); | 89 | mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); |
91 | if (single_fields.fld_message_id->mid_value) | 90 | if (single_fields.fld_message_id->mid_value) |
92 | mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); | 91 | mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); |
93 | refs = single_fields.fld_references; | 92 | refs = single_fields.fld_references; |
94 | if (refs && refs->mid_list && clist_count(refs->mid_list)) { | 93 | if (refs && refs->mid_list && clist_count(refs->mid_list)) { |
@@ -176,24 +175,45 @@ RecBody MBOXwrapper::fetchBody( const RecMail &mail ) | |||
176 | mailfolder_free(folder); | 175 | mailfolder_free(folder); |
177 | mailstorage_free(storage); | 176 | mailstorage_free(storage); |
178 | return body; | 177 | return body; |
179 | } | 178 | } |
180 | r = mailmessage_fetch(msg,&data,&size); | 179 | r = mailmessage_fetch(msg,&data,&size); |
181 | if (r != MAIL_NO_ERROR) { | 180 | if (r != MAIL_NO_ERROR) { |
182 | qDebug("Error fetching mail %i",mail.getNumber()); | 181 | qDebug("Error fetching mail %i",mail.getNumber()); |
183 | mailfolder_free(folder); | 182 | mailfolder_free(folder); |
184 | mailstorage_free(storage); | 183 | mailstorage_free(storage); |
185 | mailmessage_free(msg); | 184 | mailmessage_free(msg); |
186 | return body; | 185 | return body; |
187 | } | 186 | } |
188 | body = parseMail(msg); | 187 | body = parseMail(msg); |
189 | mailmessage_fetch_result_free(msg,data); | 188 | mailmessage_fetch_result_free(msg,data); |
190 | mailfolder_free(folder); | 189 | mailfolder_free(folder); |
191 | mailstorage_free(storage); | 190 | mailstorage_free(storage); |
192 | 191 | ||
193 | return body; | 192 | return body; |
194 | } | 193 | } |
195 | 194 | ||
196 | void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) | 195 | void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) |
197 | { | 196 | { |
198 | qDebug("MBOX %i von %i",current,maximum); | 197 | qDebug("MBOX %i von %i",current,maximum); |
199 | } | 198 | } |
199 | |||
200 | void MBOXwrapper::createFolder(const QString&) | ||
201 | { | ||
202 | } | ||
203 | |||
204 | void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folder) | ||
205 | { | ||
206 | QString p = MBOXPath+"/"; | ||
207 | p+=folder; | ||
208 | mailmbox_folder*f = 0; | ||
209 | int r = mailmbox_init(p.latin1(),0,1,0,&f); | ||
210 | if (r != MAIL_NO_ERROR) { | ||
211 | qDebug("Error init folder"); | ||
212 | return; | ||
213 | } | ||
214 | r = mailmbox_append_message(f,msg,length); | ||
215 | if (r != MAIL_NO_ERROR) { | ||
216 | qDebug("Error writing message folder"); | ||
217 | } | ||
218 | mailmbox_done(f); | ||
219 | } | ||