summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/mhwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/mhwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/mhwrapper.cpp2
1 files changed, 0 insertions, 2 deletions
diff --git a/kmicromail/libmailwrapper/mhwrapper.cpp b/kmicromail/libmailwrapper/mhwrapper.cpp
index 962dac0..641d4d9 100644
--- a/kmicromail/libmailwrapper/mhwrapper.cpp
+++ b/kmicromail/libmailwrapper/mhwrapper.cpp
@@ -20,97 +20,96 @@ MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name)
20 } 20 }
21 //odebug << MHPath << oendl; 21 //odebug << MHPath << oendl;
22 QDir dir(MHPath); 22 QDir dir(MHPath);
23 if (!dir.exists()) { 23 if (!dir.exists()) {
24 dir.mkdir(MHPath); 24 dir.mkdir(MHPath);
25 } 25 }
26 init_storage(); 26 init_storage();
27 } 27 }
28} 28}
29 29
30void MHwrapper::init_storage() 30void MHwrapper::init_storage()
31{ 31{
32 int r; 32 int r;
33 QString pre = MHPath; 33 QString pre = MHPath;
34 if (!m_storage) { 34 if (!m_storage) {
35 m_storage = mailstorage_new(NULL); 35 m_storage = mailstorage_new(NULL);
36 r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0); 36 r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0);
37 if (r != MAIL_NO_ERROR) { 37 if (r != MAIL_NO_ERROR) {
38 qDebug(" error init storage "); 38 qDebug(" error init storage ");
39 mailstorage_free(m_storage); 39 mailstorage_free(m_storage);
40 m_storage = 0; 40 m_storage = 0;
41 return; 41 return;
42 } 42 }
43 } 43 }
44 r = mailstorage_connect(m_storage); 44 r = mailstorage_connect(m_storage);
45 if (r!=MAIL_NO_ERROR) { 45 if (r!=MAIL_NO_ERROR) {
46 qDebug("error connecting storage "); 46 qDebug("error connecting storage ");
47 mailstorage_free(m_storage); 47 mailstorage_free(m_storage);
48 m_storage = 0; 48 m_storage = 0;
49 } 49 }
50} 50}
51 51
52void MHwrapper::clean_storage() 52void MHwrapper::clean_storage()
53{ 53{
54 if (m_storage) { 54 if (m_storage) {
55 mailstorage_disconnect(m_storage); 55 mailstorage_disconnect(m_storage);
56 mailstorage_free(m_storage); 56 mailstorage_free(m_storage);
57 m_storage = 0; 57 m_storage = 0;
58 } 58 }
59} 59}
60 60
61MHwrapper::~MHwrapper() 61MHwrapper::~MHwrapper()
62{ 62{
63 clean_storage(); 63 clean_storage();
64} 64}
65 65
66void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb ) 66void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb )
67{ 67{
68 qDebug("MHwrapper::listMessages ");
69 init_storage(); 68 init_storage();
70 if (!m_storage) { 69 if (!m_storage) {
71 return; 70 return;
72 } 71 }
73 QString f = buildPath(mailbox); 72 QString f = buildPath(mailbox);
74 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 73 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
75 if (r!=MAIL_NO_ERROR) { 74 if (r!=MAIL_NO_ERROR) {
76 qDebug("listMessages: error selecting folder! "); 75 qDebug("listMessages: error selecting folder! ");
77 return; 76 return;
78 } 77 }
79 parseList(target,m_storage->sto_session,f, false, maxSizeInKb ); 78 parseList(target,m_storage->sto_session,f, false, maxSizeInKb );
80 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 79 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
81} 80}
82 81
83QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders() 82QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders()
84{ 83{
85 QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >(); 84 QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >();
86 /* this is needed! */ 85 /* this is needed! */
87 if (m_storage) mailstorage_disconnect(m_storage); 86 if (m_storage) mailstorage_disconnect(m_storage);
88 init_storage(); 87 init_storage();
89 if (!m_storage) { 88 if (!m_storage) {
90 return folders; 89 return folders;
91 } 90 }
92 mail_list*flist = 0; 91 mail_list*flist = 0;
93 clistcell*current=0; 92 clistcell*current=0;
94 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); 93 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist);
95 if (r != MAIL_NO_ERROR || !flist) { 94 if (r != MAIL_NO_ERROR || !flist) {
96 qDebug("error getting folder list "); 95 qDebug("error getting folder list ");
97 return folders; 96 return folders;
98 } 97 }
99 for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { 98 for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) {
100 QString t = (char*)current->data; 99 QString t = (char*)current->data;
101 t.replace(0,MHPath.length(),""); 100 t.replace(0,MHPath.length(),"");
102 folders->append(new MHFolder(t,MHPath)); 101 folders->append(new MHFolder(t,MHPath));
103 } 102 }
104 mail_list_free(flist); 103 mail_list_free(flist);
105 return folders; 104 return folders;
106} 105}
107 106
108void MHwrapper::deleteMail(const RecMailP&mail) 107void MHwrapper::deleteMail(const RecMailP&mail)
109{ 108{
110 init_storage(); 109 init_storage();
111 if (!m_storage) { 110 if (!m_storage) {
112 return; 111 return;
113 } 112 }
114 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); 113 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1());
115 if (r!=MAIL_NO_ERROR) { 114 if (r!=MAIL_NO_ERROR) {
116 qDebug("error selecting folder! "); 115 qDebug("error selecting folder! ");
@@ -149,97 +148,96 @@ RecBodyP MHwrapper::fetchBody( const RecMailP &mail )
149 } 148 }
150 body = parseMail(msg); 149 body = parseMail(msg);
151 mailmessage_fetch_result_free(msg,data); 150 mailmessage_fetch_result_free(msg,data);
152 return body; 151 return body;
153} 152}
154 153
155void MHwrapper::mbox_progress( size_t current, size_t maximum ) 154void MHwrapper::mbox_progress( size_t current, size_t maximum )
156{ 155{
157 qDebug("MBox Progress %d of %d",current,maximum ); 156 qDebug("MBox Progress %d of %d",current,maximum );
158 //odebug << "MH " << current << " von " << maximum << "" << oendl; 157 //odebug << "MH " << current << " von " << maximum << "" << oendl;
159} 158}
160 159
161QString MHwrapper::buildPath(const QString&p) 160QString MHwrapper::buildPath(const QString&p)
162{ 161{
163 QString f=""; 162 QString f="";
164 if (p.length()==0||p=="/") 163 if (p.length()==0||p=="/")
165 return MHPath; 164 return MHPath;
166 if (!p.startsWith(MHPath)) { 165 if (!p.startsWith(MHPath)) {
167 f+=MHPath; 166 f+=MHPath;
168 } 167 }
169 if (!p.startsWith("/")) { 168 if (!p.startsWith("/")) {
170 f+="/"; 169 f+="/";
171 } 170 }
172 f+=p; 171 f+=p;
173 return f; 172 return f;
174} 173}
175 174
176int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool ) 175int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool )
177{ 176{
178 init_storage(); 177 init_storage();
179 if (!m_storage) { 178 if (!m_storage) {
180 return 0; 179 return 0;
181 } 180 }
182 QString f; 181 QString f;
183 if (!pfolder) { 182 if (!pfolder) {
184 // toplevel folder 183 // toplevel folder
185 f = buildPath(folder); 184 f = buildPath(folder);
186 } else { 185 } else {
187 f = pfolder->getName(); 186 f = pfolder->getName();
188 f+="/"; 187 f+="/";
189 f+=folder; 188 f+=folder;
190 } 189 }
191 190
192 int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); 191 int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1());
193 if (r != MAIL_NO_ERROR) { 192 if (r != MAIL_NO_ERROR) {
194 qDebug("error creating folder "); 193 qDebug("error creating folder ");
195 return 0; 194 return 0;
196 } 195 }
197 qDebug("Folder created ");
198 return 1; 196 return 1;
199} 197}
200 198
201void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) 199void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder)
202{ 200{
203 init_storage(); 201 init_storage();
204 if (!m_storage) { 202 if (!m_storage) {
205 return; 203 return;
206 } 204 }
207 QString f = buildPath(Folder); 205 QString f = buildPath(Folder);
208 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 206 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
209 if (r!=MAIL_NO_ERROR) { 207 if (r!=MAIL_NO_ERROR) {
210 qDebug("error selecting folder! "); 208 qDebug("error selecting folder! ");
211 return; 209 return;
212 } 210 }
213 r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); 211 r = mailsession_append_message(m_storage->sto_session,(char*)msg,length);
214 if (r!=MAIL_NO_ERROR) { 212 if (r!=MAIL_NO_ERROR) {
215 qDebug("error storing mail "); 213 qDebug("error storing mail ");
216 } 214 }
217 return; 215 return;
218} 216}
219 217
220encodedString* MHwrapper::fetchRawBody(const RecMailP&mail) 218encodedString* MHwrapper::fetchRawBody(const RecMailP&mail)
221{ 219{
222 encodedString*result = 0; 220 encodedString*result = 0;
223 init_storage(); 221 init_storage();
224 if (!m_storage) { 222 if (!m_storage) {
225 return result; 223 return result;
226 } 224 }
227 mailmessage * msg = 0; 225 mailmessage * msg = 0;
228 char*data=0; 226 char*data=0;
229 size_t size; 227 size_t size;
230 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); 228 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1());
231 if (r!=MAIL_NO_ERROR) { 229 if (r!=MAIL_NO_ERROR) {
232 qDebug("error selecting folder! "); 230 qDebug("error selecting folder! ");
233 return result; 231 return result;
234 } 232 }
235 r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); 233 r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg);
236 if (r != MAIL_NO_ERROR) { 234 if (r != MAIL_NO_ERROR) {
237 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); 235 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber()));
238 return 0; 236 return 0;
239 } 237 }
240 r = mailmessage_fetch(msg,&data,&size); 238 r = mailmessage_fetch(msg,&data,&size);
241 if (r != MAIL_NO_ERROR) { 239 if (r != MAIL_NO_ERROR) {
242 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); 240 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber()));
243 if (msg) mailmessage_free(msg); 241 if (msg) mailmessage_free(msg);
244 return 0; 242 return 0;
245 } 243 }