summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/libmailwrapper/mboxwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp26
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
8MBOXwrapper::MBOXwrapper(const QString & mbox_dir) 8MBOXwrapper::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
17MBOXwrapper::~MBOXwrapper() 17MBOXwrapper::~MBOXwrapper()
18{ 18{
19} 19}
20 20
21void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) 21void 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
196void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) 195void 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
200void MBOXwrapper::createFolder(const QString&)
201{
202}
203
204void 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}