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 | |||
@@ -278,88 +278,97 @@ int MHwrapper::deleteAllMail(const FolderP&tfolder) | |||
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; |