Diffstat (limited to 'kmicromail/libmailwrapper/mhwrapper.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | kmicromail/libmailwrapper/mhwrapper.cpp | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/kmicromail/libmailwrapper/mhwrapper.cpp b/kmicromail/libmailwrapper/mhwrapper.cpp index de6d220..90b5d23 100644 --- a/kmicromail/libmailwrapper/mhwrapper.cpp +++ b/kmicromail/libmailwrapper/mhwrapper.cpp | |||
@@ -254,136 +254,145 @@ void MHwrapper::deleteMails(const QString & mailbox,const QValueList<RecMailP> & | |||
254 | if (r!=MAIL_NO_ERROR) { | 254 | if (r!=MAIL_NO_ERROR) { |
255 | qDebug("deleteMails: error selecting folder! "); | 255 | qDebug("deleteMails: error selecting folder! "); |
256 | return; | 256 | return; |
257 | } | 257 | } |
258 | QValueList<RecMailP>::ConstIterator it; | 258 | QValueList<RecMailP>::ConstIterator it; |
259 | for (it=target.begin(); it!=target.end();++it) { | 259 | for (it=target.begin(); it!=target.end();++it) { |
260 | r = mailsession_remove_message(m_storage->sto_session,(*it)->getNumber()); | 260 | r = mailsession_remove_message(m_storage->sto_session,(*it)->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 | ||
268 | int MHwrapper::deleteAllMail(const FolderP&tfolder) | 268 | int MHwrapper::deleteAllMail(const FolderP&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(i18n("Error deleting mail %1").arg(i+1)); | 294 | Global::statusMessage(i18n("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 | bool MHwrapper::rmDir(QString folder) // absolute path! | ||
303 | { | ||
304 | QDir dir ( folder ); | ||
305 | if ( !dir.exists() ) | ||
306 | return false; | ||
307 | int i; | ||
308 | // qDebug("rmdir %s ",folder.latin1()); | ||
309 | QStringList list = dir.entryList(QDir::Dirs|QDir::Files|QDir::NoSymLinks|QDir::Hidden ); | ||
310 | for (i=0; i<list.count(); i++ ) { | ||
311 | bool result = true; | ||
312 | QString entry = folder+"/"+ list[i] ; | ||
313 | //qDebug("entry %s ",entry.latin1() ); | ||
302 | 314 | ||
315 | QFileInfo fi ( entry ); | ||
316 | if ( fi.isFile() ) { | ||
317 | //qDebug("file %s ",entry.latin1() ); | ||
318 | result = QFile::remove ( entry ) ; | ||
319 | } else { | ||
320 | //qDebug("dir %s ",entry.latin1()); | ||
321 | if ( list[i] != "." && list[i] != ".." ) | ||
322 | result = rmDir( entry ); | ||
323 | } | ||
324 | if ( ! result ) | ||
325 | return false; | ||
326 | } | ||
327 | //qDebug("removing... "); | ||
328 | return QDir::root().rmdir ( folder, true ); | ||
329 | } | ||
303 | int MHwrapper::deleteMbox(const FolderP&tfolder) | 330 | int MHwrapper::deleteMbox(const FolderP&tfolder) |
304 | { | 331 | { |
305 | init_storage(); | 332 | init_storage(); |
306 | if (!m_storage) { | 333 | if (!m_storage) { |
307 | return 0; | 334 | return 0; |
308 | } | 335 | } |
309 | if (!tfolder) return 0; | 336 | if (!tfolder) return 0; |
310 | if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; | 337 | if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; |
311 | 338 | ||
312 | int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); | 339 | int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); |
313 | 340 | ||
314 | if (r != MAIL_NO_ERROR) { | 341 | if (r != MAIL_NO_ERROR) { |
315 | qDebug("error deleting mail box "); | 342 | qDebug("error deleting mail box "); |
316 | return 0; | 343 | return 0; |
317 | } | 344 | } |
318 | QString delDir = locateLocal( "apps", "kopiemail")+ "localmail"; | 345 | //qDebug("*****************\ndel %s %s ", delDir.latin1(),tfolder->getName().latin1() ); |
319 | qDebug("*****************\ndel %s %s ", delDir.latin1(),tfolder->getName().latin1() ); | 346 | if ( !rmDir( tfolder->getName() )) { |
320 | #if 0 | 347 | qDebug("error deleteing folder %s ",tfolder->getName().latin1()); |
321 | QString cmd = "rm -rf "+tfolder->getName(); | ||
322 | QStringList command; | ||
323 | command << "/bin/sh"; | ||
324 | command << "-c"; | ||
325 | command << cmd.latin1(); | ||
326 | OProcess *process = new OProcess(); | ||
327 | |||
328 | /* | ||
329 | connect(process, SIGNAL(processExited(Opie::Core::OProcess*)), | ||
330 | this, SLOT( processEnded(Opie::Core::OProcess*))); | ||
331 | connect(process, SIGNAL( receivedStderr(Opie::Core::OProcess*,char*,int)), | ||
332 | this, SLOT( oprocessStderr(Opie::Core::OProcess*,char*,int))); | ||
333 | */ | ||
334 | *process << command; | ||
335 | removeMboxfailed = false; | ||
336 | if(!process->start(OProcess::Block, OProcess::All) ) { | ||
337 | qDebug("could not start process "); | ||
338 | return 0; | ||
339 | } | 348 | } |
340 | #endif | 349 | else |
341 | qDebug("mail box deleted "); | 350 | qDebug("mail box deleted %s ", tfolder->getName().latin1()); |
342 | return 1; | 351 | return 1; |
343 | } | 352 | } |
344 | 353 | ||
345 | 354 | ||
346 | void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) | 355 | void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) |
347 | { | 356 | { |
348 | init_storage(); | 357 | init_storage(); |
349 | if (!m_storage) { | 358 | if (!m_storage) { |
350 | return; | 359 | return; |
351 | } | 360 | } |
352 | target_stat.message_count = 0; | 361 | target_stat.message_count = 0; |
353 | target_stat.message_unseen = 0; | 362 | target_stat.message_unseen = 0; |
354 | target_stat.message_recent = 0; | 363 | target_stat.message_recent = 0; |
355 | QString f = buildPath(mailbox); | 364 | QString f = buildPath(mailbox); |
356 | int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count, | 365 | int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count, |
357 | &target_stat.message_recent,&target_stat.message_unseen); | 366 | &target_stat.message_recent,&target_stat.message_unseen); |
358 | if (r != MAIL_NO_ERROR) { | 367 | if (r != MAIL_NO_ERROR) { |
359 | Global::statusMessage(i18n("Error retrieving status")); | 368 | Global::statusMessage(i18n("Error retrieving status")); |
360 | } | 369 | } |
361 | } | 370 | } |
362 | 371 | ||
363 | MAILLIB::ATYPE MHwrapper::getType()const | 372 | MAILLIB::ATYPE MHwrapper::getType()const |
364 | { | 373 | { |
365 | return MAILLIB::A_MH; | 374 | return MAILLIB::A_MH; |
366 | } | 375 | } |
367 | 376 | ||
368 | const QString&MHwrapper::getName()const | 377 | const QString&MHwrapper::getName()const |
369 | { | 378 | { |
370 | return MHName; | 379 | return MHName; |
371 | } | 380 | } |
372 | void MHwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 381 | void MHwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) |
373 | { | 382 | { |
374 | init_storage(); | 383 | init_storage(); |
375 | if (!m_storage) { | 384 | if (!m_storage) { |
376 | return; | 385 | return; |
377 | } | 386 | } |
378 | if (targetWrapper != this) { | 387 | if (targetWrapper != this) { |
379 | qDebug("Using generic "); | 388 | qDebug("Using generic "); |
380 | Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); | 389 | Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); |
381 | return; | 390 | return; |
382 | } | 391 | } |
383 | qDebug("Using internal routines for move/copy "); | 392 | qDebug("Using internal routines for move/copy "); |
384 | QString tf = buildPath(targetFolder); | 393 | QString tf = buildPath(targetFolder); |
385 | int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); | 394 | int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); |
386 | if (r != MAIL_NO_ERROR) { | 395 | if (r != MAIL_NO_ERROR) { |
387 | qDebug("Error selecting source mailbox "); | 396 | qDebug("Error selecting source mailbox "); |
388 | return; | 397 | return; |
389 | } | 398 | } |