Diffstat (limited to 'kmicromail/libmailwrapper/mhwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libmailwrapper/mhwrapper.cpp | 57 |
1 files changed, 33 insertions, 24 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 @@ -290,64 +290,73 @@ int MHwrapper::deleteAllMail(const FolderP&tfolder) msg = (mailmessage*)carray_get(l->msg_tab, i); j = msg->msg_index; r = mailsession_remove_message(m_storage->sto_session,j); if (r != MAIL_NO_ERROR) { Global::statusMessage(i18n("Error deleting mail %1").arg(i+1)); res = 0; break; } } if (l) mailmessage_list_free(l); return res; } - +bool MHwrapper::rmDir(QString folder) // absolute path! +{ + QDir dir ( folder ); + if ( !dir.exists() ) + return false; + int i; + // qDebug("rmdir %s ",folder.latin1()); + QStringList list = dir.entryList(QDir::Dirs|QDir::Files|QDir::NoSymLinks|QDir::Hidden ); + for (i=0; i<list.count(); i++ ) { + bool result = true; + QString entry = folder+"/"+ list[i] ; + //qDebug("entry %s ",entry.latin1() ); + + QFileInfo fi ( entry ); + if ( fi.isFile() ) { + //qDebug("file %s ",entry.latin1() ); + result = QFile::remove ( entry ) ; + } else { + //qDebug("dir %s ",entry.latin1()); + if ( list[i] != "." && list[i] != ".." ) + result = rmDir( entry ); + } + if ( ! result ) + return false; + } + //qDebug("removing... "); + return QDir::root().rmdir ( folder, true ); +} int MHwrapper::deleteMbox(const FolderP&tfolder) { init_storage(); if (!m_storage) { return 0; } if (!tfolder) return 0; if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); if (r != MAIL_NO_ERROR) { qDebug("error deleting mail box "); return 0; } - QString delDir = locateLocal( "apps", "kopiemail")+ "localmail"; - qDebug("*****************\ndel %s %s ", delDir.latin1(),tfolder->getName().latin1() ); -#if 0 - QString cmd = "rm -rf "+tfolder->getName(); - QStringList command; - command << "/bin/sh"; - command << "-c"; - command << cmd.latin1(); - OProcess *process = new OProcess(); - - /* - connect(process, SIGNAL(processExited(Opie::Core::OProcess*)), - this, SLOT( processEnded(Opie::Core::OProcess*))); - connect(process, SIGNAL( receivedStderr(Opie::Core::OProcess*,char*,int)), - this, SLOT( oprocessStderr(Opie::Core::OProcess*,char*,int))); - */ - *process << command; - removeMboxfailed = false; - if(!process->start(OProcess::Block, OProcess::All) ) { - qDebug("could not start process "); - return 0; + //qDebug("*****************\ndel %s %s ", delDir.latin1(),tfolder->getName().latin1() ); + if ( !rmDir( tfolder->getName() )) { + qDebug("error deleteing folder %s ",tfolder->getName().latin1()); } -#endif - qDebug("mail box deleted "); + else + qDebug("mail box deleted %s ", tfolder->getName().latin1()); return 1; } void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) { init_storage(); if (!m_storage) { return; } target_stat.message_count = 0; target_stat.message_unseen = 0; |