summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper/mhwrapper.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/libmailwrapper/mhwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
index dfc00d8..df7f773 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
@@ -1,445 +1,445 @@
1#include "mhwrapper.h" 1#include "mhwrapper.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 <qmessagebox.h> 6#include <qmessagebox.h>
7#include <stdlib.h> 7#include <stdlib.h>
8#include <qpe/global.h> 8#include <qpe/global.h>
9#include <opie2/oprocess.h> 9#include <opie2/oprocess.h>
10 10
11const QString MHwrapper::wrapperType="MH"; 11const QString MHwrapper::wrapperType="MH";
12 12
13MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name) 13MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name)
14 : Genericwrapper(),MHPath(mbox_dir),MHName(mbox_name) 14 : Genericwrapper(),MHPath(mbox_dir),MHName(mbox_name)
15{ 15{
16 if (MHPath.length()>0) { 16 if (MHPath.length()>0) {
17 if (MHPath[MHPath.length()-1]=='/') { 17 if (MHPath[MHPath.length()-1]=='/') {
18 MHPath=MHPath.left(MHPath.length()-1); 18 MHPath=MHPath.left(MHPath.length()-1);
19 } 19 }
20 qDebug(MHPath); 20 qDebug(MHPath);
21 QDir dir(MHPath); 21 QDir dir(MHPath);
22 if (!dir.exists()) { 22 if (!dir.exists()) {
23 dir.mkdir(MHPath); 23 dir.mkdir(MHPath);
24 } 24 }
25 init_storage(); 25 init_storage();
26 } 26 }
27} 27}
28 28
29void MHwrapper::init_storage() 29void MHwrapper::init_storage()
30{ 30{
31 int r; 31 int r;
32 QString pre = MHPath; 32 QString pre = MHPath;
33 if (!m_storage) { 33 if (!m_storage) {
34 m_storage = mailstorage_new(NULL); 34 m_storage = mailstorage_new(NULL);
35 r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0); 35 r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0);
36 if (r != MAIL_NO_ERROR) { 36 if (r != MAIL_NO_ERROR) {
37 qDebug("error initializing storage"); 37 qDebug("error initializing storage");
38 mailstorage_free(m_storage); 38 mailstorage_free(m_storage);
39 m_storage = 0; 39 m_storage = 0;
40 return; 40 return;
41 } 41 }
42 } 42 }
43 r = mailstorage_connect(m_storage); 43 r = mailstorage_connect(m_storage);
44 if (r!=MAIL_NO_ERROR) { 44 if (r!=MAIL_NO_ERROR) {
45 qDebug("error connecting storage"); 45 qDebug("error connecting storage");
46 mailstorage_free(m_storage); 46 mailstorage_free(m_storage);
47 m_storage = 0; 47 m_storage = 0;
48 } 48 }
49} 49}
50 50
51void MHwrapper::clean_storage() 51void MHwrapper::clean_storage()
52{ 52{
53 if (m_storage) { 53 if (m_storage) {
54 mailstorage_disconnect(m_storage); 54 mailstorage_disconnect(m_storage);
55 mailstorage_free(m_storage); 55 mailstorage_free(m_storage);
56 m_storage = 0; 56 m_storage = 0;
57 } 57 }
58} 58}
59 59
60MHwrapper::~MHwrapper() 60MHwrapper::~MHwrapper()
61{ 61{
62 clean_storage(); 62 clean_storage();
63} 63}
64 64
65void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) 65void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
66{ 66{
67 init_storage(); 67 init_storage();
68 if (!m_storage) { 68 if (!m_storage) {
69 return; 69 return;
70 } 70 }
71 QString f = buildPath(mailbox); 71 QString f = buildPath(mailbox);
72 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 72 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
73 if (r!=MAIL_NO_ERROR) { 73 if (r!=MAIL_NO_ERROR) {
74 qDebug("listMessages: error selecting folder!"); 74 qDebug("listMessages: error selecting folder!");
75 return; 75 return;
76 } 76 }
77 parseList(target,m_storage->sto_session,f); 77 parseList(target,m_storage->sto_session,f);
78 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 78 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
79} 79}
80 80
81QList<Folder>* MHwrapper::listFolders() 81QList<Folder>* MHwrapper::listFolders()
82{ 82{
83 QList<Folder> * folders = new QList<Folder>(); 83 QList<Folder> * folders = new QList<Folder>();
84 folders->setAutoDelete( false ); 84 folders->setAutoDelete( false );
85 /* this is needed! */ 85 /* this is needed! */
86 if (m_storage) mailstorage_disconnect(m_storage); 86 if (m_storage) mailstorage_disconnect(m_storage);
87 init_storage(); 87 init_storage();
88 if (!m_storage) { 88 if (!m_storage) {
89 return folders; 89 return folders;
90 } 90 }
91 mail_list*flist = 0; 91 mail_list*flist = 0;
92 clistcell*current=0; 92 clistcell*current=0;
93 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); 93 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist);
94 if (r != MAIL_NO_ERROR || !flist) { 94 if (r != MAIL_NO_ERROR || !flist) {
95 qDebug("error getting folder list"); 95 qDebug("error getting folder list");
96 return folders; 96 return folders;
97 } 97 }
98 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)) {
99 QString t = (char*)current->data; 99 QString t = (char*)current->data;
100 t.replace(0,MHPath.length(),""); 100 t.replace(0,MHPath.length(),"");
101 folders->append(new MHFolder(t,MHPath)); 101 folders->append(new MHFolder(t,MHPath));
102 } 102 }
103 mail_list_free(flist); 103 mail_list_free(flist);
104 return folders; 104 return folders;
105} 105}
106 106
107void MHwrapper::deleteMail(const RecMail&mail) 107void MHwrapper::deleteMail(const RecMail&mail)
108{ 108{
109 init_storage(); 109 init_storage();
110 if (!m_storage) { 110 if (!m_storage) {
111 return; 111 return;
112 } 112 }
113 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());
114 if (r!=MAIL_NO_ERROR) { 114 if (r!=MAIL_NO_ERROR) {
115 qDebug("error selecting folder!"); 115 qDebug("error selecting folder!");
116 return; 116 return;
117 } 117 }
118 r = mailsession_remove_message(m_storage->sto_session,mail.getNumber()); 118 r = mailsession_remove_message(m_storage->sto_session,mail.getNumber());
119 if (r != MAIL_NO_ERROR) { 119 if (r != MAIL_NO_ERROR) {
120 qDebug("error deleting mail"); 120 qDebug("error deleting mail");
121 } 121 }
122} 122}
123 123
124void MHwrapper::answeredMail(const RecMail&) 124void MHwrapper::answeredMail(const RecMail&)
125{ 125{
126} 126}
127 127
128RecBody MHwrapper::fetchBody( const RecMail &mail ) 128RecBody MHwrapper::fetchBody( const RecMail &mail )
129{ 129{
130 RecBody body; 130 RecBody body;
131 init_storage(); 131 init_storage();
132 if (!m_storage) { 132 if (!m_storage) {
133 return body; 133 return body;
134 } 134 }
135 mailmessage * msg; 135 mailmessage * msg;
136 char*data=0; 136 char*data=0;
137 size_t size; 137 size_t size;
138 138
139 /* mail should hold the complete path! */ 139 /* mail should hold the complete path! */
140 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 140 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
141 if (r != MAIL_NO_ERROR) { 141 if (r != MAIL_NO_ERROR) {
142 return body; 142 return body;
143 } 143 }
144 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); 144 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg);
145 if (r != MAIL_NO_ERROR) { 145 if (r != MAIL_NO_ERROR) {
146 qDebug("Error fetching mail %i",mail.getNumber()); 146 qDebug("Error fetching mail %i",mail.getNumber());
147 return body; 147 return body;
148 } 148 }
149 body = parseMail(msg); 149 body = parseMail(msg);
150 mailmessage_fetch_result_free(msg,data); 150 mailmessage_fetch_result_free(msg,data);
151 return body; 151 return body;
152} 152}
153 153
154void MHwrapper::mbox_progress( size_t current, size_t maximum ) 154void MHwrapper::mbox_progress( size_t current, size_t maximum )
155{ 155{
156 qDebug("MH %i von %i",current,maximum); 156 qDebug("MH %i von %i",current,maximum);
157} 157}
158 158
159QString MHwrapper::buildPath(const QString&p) 159QString MHwrapper::buildPath(const QString&p)
160{ 160{
161 QString f=""; 161 QString f="";
162 if (p.length()==0||p=="/") 162 if (p.length()==0||p=="/")
163 return MHPath; 163 return MHPath;
164 if (!p.startsWith(MHPath)) { 164 if (!p.startsWith(MHPath)) {
165 f+=MHPath; 165 f+=MHPath;
166 } 166 }
167 if (!p.startsWith("/")) { 167 if (!p.startsWith("/")) {
168 f+="/"; 168 f+="/";
169 } 169 }
170 f+=p; 170 f+=p;
171 return f; 171 return f;
172} 172}
173 173
174int MHwrapper::createMbox(const QString&folder,const Folder*pfolder,const QString&,bool ) 174int MHwrapper::createMbox(const QString&folder,const Folder*pfolder,const QString&,bool )
175{ 175{
176 init_storage(); 176 init_storage();
177 if (!m_storage) { 177 if (!m_storage) {
178 return 0; 178 return 0;
179 } 179 }
180 QString f; 180 QString f;
181 if (!pfolder) { 181 if (!pfolder) {
182 // toplevel folder 182 // toplevel folder
183 f = buildPath(folder); 183 f = buildPath(folder);
184 } else { 184 } else {
185 f = pfolder->getName(); 185 f = pfolder->getName();
186 f+="/"; 186 f+="/";
187 f+=folder; 187 f+=folder;
188 } 188 }
189 qDebug(f); 189 qDebug(f);
190 int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); 190 int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1());
191 if (r != MAIL_NO_ERROR) { 191 if (r != MAIL_NO_ERROR) {
192 qDebug("error creating folder %i",r); 192 qDebug("error creating folder %i",r);
193 return 0; 193 return 0;
194 } 194 }
195 qDebug("Folder created"); 195 qDebug("Folder created");
196 return 1; 196 return 1;
197} 197}
198 198
199void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) 199void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder)
200{ 200{
201 init_storage(); 201 init_storage();
202 if (!m_storage) { 202 if (!m_storage) {
203 return; 203 return;
204 } 204 }
205 QString f = buildPath(Folder); 205 QString f = buildPath(Folder);
206 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());
207 if (r!=MAIL_NO_ERROR) { 207 if (r!=MAIL_NO_ERROR) {
208 qDebug("error selecting folder!"); 208 qDebug("error selecting folder!");
209 return; 209 return;
210 } 210 }
211 r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); 211 r = mailsession_append_message(m_storage->sto_session,(char*)msg,length);
212 if (r!=MAIL_NO_ERROR) { 212 if (r!=MAIL_NO_ERROR) {
213 qDebug("error storing mail"); 213 qDebug("error storing mail");
214 } 214 }
215 return; 215 return;
216} 216}
217 217
218encodedString* MHwrapper::fetchRawBody(const RecMail&mail) 218encodedString* MHwrapper::fetchRawBody(const RecMail&mail)
219{ 219{
220 encodedString*result = 0; 220 encodedString*result = 0;
221 init_storage(); 221 init_storage();
222 if (!m_storage) { 222 if (!m_storage) {
223 return result; 223 return result;
224 } 224 }
225 mailmessage * msg = 0; 225 mailmessage * msg = 0;
226 char*data=0; 226 char*data=0;
227 size_t size; 227 size_t size;
228 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());
229 if (r!=MAIL_NO_ERROR) { 229 if (r!=MAIL_NO_ERROR) {
230 qDebug("error selecting folder!"); 230 qDebug("error selecting folder!");
231 return result; 231 return result;
232 } 232 }
233 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); 233 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg);
234 if (r != MAIL_NO_ERROR) { 234 if (r != MAIL_NO_ERROR) {
235 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber())); 235 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber()));
236 return 0; 236 return 0;
237 } 237 }
238 r = mailmessage_fetch(msg,&data,&size); 238 r = mailmessage_fetch(msg,&data,&size);
239 if (r != MAIL_NO_ERROR) { 239 if (r != MAIL_NO_ERROR) {
240 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber())); 240 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber()));
241 if (msg) mailmessage_free(msg); 241 if (msg) mailmessage_free(msg);
242 return 0; 242 return 0;
243 } 243 }
244 result = new encodedString(data,size); 244 result = new encodedString(data,size);
245 if (msg) mailmessage_free(msg); 245 if (msg) mailmessage_free(msg);
246 return result; 246 return result;
247} 247}
248 248
249void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target) 249void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target)
250{ 250{
251 QString f = buildPath(mailbox); 251 QString f = buildPath(mailbox);
252 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 252 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
253 if (r!=MAIL_NO_ERROR) { 253 if (r!=MAIL_NO_ERROR) {
254 qDebug("deleteMails: error selecting folder!"); 254 qDebug("deleteMails: error selecting folder!");
255 return; 255 return;
256 } 256 }
257 RecMail*c = 0; 257 RecMail*c = 0;
258 for (unsigned int i=0; i < target.count();++i) { 258 for (unsigned int i=0; i < target.count();++i) {
259 c = target.at(i); 259 c = target.at(i);
260 r = mailsession_remove_message(m_storage->sto_session,c->getNumber()); 260 r = mailsession_remove_message(m_storage->sto_session,c->getNumber());
261 if (r != MAIL_NO_ERROR) { 261 if (r != MAIL_NO_ERROR) {
262 qDebug("error deleting mail"); 262 qDebug("error deleting mail");
263 break; 263 break;
264 } 264 }
265 } 265 }
266} 266}
267 267
268int MHwrapper::deleteAllMail(const Folder*tfolder) 268int MHwrapper::deleteAllMail(const Folder*tfolder)
269{ 269{
270 init_storage(); 270 init_storage();
271 if (!m_storage) { 271 if (!m_storage) {
272 return 0; 272 return 0;
273 } 273 }
274 int res = 1; 274 int res = 1;
275 if (!tfolder) return 0; 275 if (!tfolder) return 0;
276 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 276 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
277 if (r!=MAIL_NO_ERROR) { 277 if (r!=MAIL_NO_ERROR) {
278 qDebug("error selecting folder!"); 278 qDebug("error selecting folder!");
279 return 0; 279 return 0;
280 } 280 }
281 mailmessage_list*l=0; 281 mailmessage_list*l=0;
282 r = mailsession_get_messages_list(m_storage->sto_session,&l); 282 r = mailsession_get_messages_list(m_storage->sto_session,&l);
283 if (r != MAIL_NO_ERROR) { 283 if (r != MAIL_NO_ERROR) {
284 qDebug("Error message list"); 284 qDebug("Error message list");
285 res = 0; 285 res = 0;
286 } 286 }
287 unsigned j = 0; 287 unsigned j = 0;
288 for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { 288 for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) {
289 mailmessage * msg; 289 mailmessage * msg;
290 msg = (mailmessage*)carray_get(l->msg_tab, i); 290 msg = (mailmessage*)carray_get(l->msg_tab, i);
291 j = msg->msg_index; 291 j = msg->msg_index;
292 r = mailsession_remove_message(m_storage->sto_session,j); 292 r = mailsession_remove_message(m_storage->sto_session,j);
293 if (r != MAIL_NO_ERROR) { 293 if (r != MAIL_NO_ERROR) {
294 Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); 294 Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
295 res = 0; 295 res = 0;
296 break; 296 break;
297 } 297 }
298 } 298 }
299 if (l) mailmessage_list_free(l); 299 if (l) mailmessage_list_free(l);
300 return res; 300 return res;
301} 301}
302 302
303int MHwrapper::deleteMbox(const Folder*tfolder) 303int MHwrapper::deleteMbox(const Folder*tfolder)
304{ 304{
305 init_storage(); 305 init_storage();
306 if (!m_storage) { 306 if (!m_storage) {
307 return 0; 307 return 0;
308 } 308 }
309 if (!tfolder) return 0; 309 if (!tfolder) return 0;
310 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; 310 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0;
311 311
312 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 312 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
313 313
314 if (r != MAIL_NO_ERROR) { 314 if (r != MAIL_NO_ERROR) {
315 qDebug("error deleting mail box"); 315 qDebug("error deleting mail box");
316 return 0; 316 return 0;
317 } 317 }
318 QString cmd = "rm -rf "+tfolder->getName(); 318 QString cmd = "rm -rf "+tfolder->getName();
319 QStringList command; 319 QStringList command;
320 command << "/bin/sh"; 320 command << "/bin/sh";
321 command << "-c"; 321 command << "-c";
322 command << cmd.latin1(); 322 command << cmd.latin1();
323 OProcess *process = new OProcess(); 323 OProcess *process = new OProcess();
324 324
325 connect(process, SIGNAL(processExited(OProcess *)), 325 connect(process, SIGNAL(processExited(OProcess*)),
326 this, SLOT( processEnded(OProcess *))); 326 this, SLOT( processEnded(OProcess*)));
327 connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)), 327 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)),
328 this, SLOT( oprocessStderr(OProcess *, char *, int))); 328 this, SLOT( oprocessStderr(OProcess*,char*,int)));
329 329
330 *process << command; 330 *process << command;
331 removeMboxfailed = false; 331 removeMboxfailed = false;
332 if(!process->start(OProcess::Block, OProcess::All) ) { 332 if(!process->start(OProcess::Block, OProcess::All) ) {
333 qDebug("could not start process"); 333 qDebug("could not start process");
334 return 0; 334 return 0;
335 } 335 }
336 qDebug("mail box deleted"); 336 qDebug("mail box deleted");
337 return 1; 337 return 1;
338} 338}
339 339
340void MHwrapper::processEnded(OProcess *p) 340void MHwrapper::processEnded(OProcess *p)
341{ 341{
342 if (p) delete p; 342 if (p) delete p;
343} 343}
344 344
345void MHwrapper::oprocessStderr(OProcess*, char *buffer, int ) 345void MHwrapper::oprocessStderr(OProcess*, char *buffer, int )
346{ 346{
347 QString lineStr = buffer; 347 QString lineStr = buffer;
348 QMessageBox::warning( 0, tr("Error"), lineStr ,tr("Ok") ); 348 QMessageBox::warning( 0, tr("Error"), lineStr ,tr("Ok") );
349 removeMboxfailed = true; 349 removeMboxfailed = true;
350} 350}
351 351
352void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) 352void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
353{ 353{
354 init_storage(); 354 init_storage();
355 if (!m_storage) { 355 if (!m_storage) {
356 return; 356 return;
357 } 357 }
358 target_stat.message_count = 0; 358 target_stat.message_count = 0;
359 target_stat.message_unseen = 0; 359 target_stat.message_unseen = 0;
360 target_stat.message_recent = 0; 360 target_stat.message_recent = 0;
361 QString f = buildPath(mailbox); 361 QString f = buildPath(mailbox);
362 int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count, 362 int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count,
363 &target_stat.message_recent,&target_stat.message_unseen); 363 &target_stat.message_recent,&target_stat.message_unseen);
364 if (r != MAIL_NO_ERROR) { 364 if (r != MAIL_NO_ERROR) {
365 Global::statusMessage(tr("Error retrieving status")); 365 Global::statusMessage(tr("Error retrieving status"));
366 } 366 }
367} 367}
368 368
369const QString&MHwrapper::getType()const 369const QString&MHwrapper::getType()const
370{ 370{
371 return wrapperType; 371 return wrapperType;
372} 372}
373 373
374const QString&MHwrapper::getName()const 374const QString&MHwrapper::getName()const
375{ 375{
376 return MHName; 376 return MHName;
377} 377}
378void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 378void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
379{ 379{
380 init_storage(); 380 init_storage();
381 if (!m_storage) { 381 if (!m_storage) {
382 return; 382 return;
383 } 383 }
384 if (targetWrapper != this) { 384 if (targetWrapper != this) {
385 qDebug("Using generic"); 385 qDebug("Using generic");
386 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); 386 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit);
387 return; 387 return;
388 } 388 }
389 qDebug("Using internal routines for move/copy"); 389 qDebug("Using internal routines for move/copy");
390 QString tf = buildPath(targetFolder); 390 QString tf = buildPath(targetFolder);
391 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 391 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
392 if (r != MAIL_NO_ERROR) { 392 if (r != MAIL_NO_ERROR) {
393 qDebug("Error selecting source mailbox"); 393 qDebug("Error selecting source mailbox");
394 return; 394 return;
395 } 395 }
396 if (moveit) { 396 if (moveit) {
397 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 397 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
398 } else { 398 } else {
399 r = mailsession_copy_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 399 r = mailsession_copy_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
400 } 400 }
401 if (r != MAIL_NO_ERROR) { 401 if (r != MAIL_NO_ERROR) {
402 qDebug("Error copy/moving mail internal (%i)",r); 402 qDebug("Error copy/moving mail internal (%i)",r);
403 } 403 }
404} 404}
405 405
406void MHwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 406void MHwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
407{ 407{
408 init_storage(); 408 init_storage();
409 if (!m_storage) { 409 if (!m_storage) {
410 return; 410 return;
411 } 411 }
412 if (targetWrapper != this) { 412 if (targetWrapper != this) {
413 qDebug("Using generic"); 413 qDebug("Using generic");
414 Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); 414 Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit);
415 return; 415 return;
416 } 416 }
417 if (!fromFolder) return; 417 if (!fromFolder) return;
418 int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1()); 418 int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1());
419 if (r!=MAIL_NO_ERROR) { 419 if (r!=MAIL_NO_ERROR) {
420 qDebug("error selecting source folder!"); 420 qDebug("error selecting source folder!");
421 return; 421 return;
422 } 422 }
423 QString tf = buildPath(targetFolder); 423 QString tf = buildPath(targetFolder);
424 mailmessage_list*l=0; 424 mailmessage_list*l=0;
425 r = mailsession_get_messages_list(m_storage->sto_session,&l); 425 r = mailsession_get_messages_list(m_storage->sto_session,&l);
426 if (r != MAIL_NO_ERROR) { 426 if (r != MAIL_NO_ERROR) {
427 qDebug("Error message list"); 427 qDebug("Error message list");
428 } 428 }
429 unsigned j = 0; 429 unsigned j = 0;
430 for(unsigned int i = 0 ; l!= 0 && i < carray_count(l->msg_tab) ; ++i) { 430 for(unsigned int i = 0 ; l!= 0 && i < carray_count(l->msg_tab) ; ++i) {
431 mailmessage * msg; 431 mailmessage * msg;
432 msg = (mailmessage*)carray_get(l->msg_tab, i); 432 msg = (mailmessage*)carray_get(l->msg_tab, i);
433 j = msg->msg_index; 433 j = msg->msg_index;
434 if (moveit) { 434 if (moveit) {
435 r = mailsession_move_message(m_storage->sto_session,j,(char*)tf.latin1()); 435 r = mailsession_move_message(m_storage->sto_session,j,(char*)tf.latin1());
436 } else { 436 } else {
437 r = mailsession_copy_message(m_storage->sto_session,j,(char*)tf.latin1()); 437 r = mailsession_copy_message(m_storage->sto_session,j,(char*)tf.latin1());
438 } 438 }
439 if (r != MAIL_NO_ERROR) { 439 if (r != MAIL_NO_ERROR) {
440 qDebug("Error copy/moving mail internal (%i)",r); 440 qDebug("Error copy/moving mail internal (%i)",r);
441 break; 441 break;
442 } 442 }
443 } 443 }
444 if (l) mailmessage_list_free(l); 444 if (l) mailmessage_list_free(l);
445} 445}