summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/mhwrapper.cpp
Side-by-side diff
Diffstat (limited to 'kmicromail/libmailwrapper/mhwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/mhwrapper.cpp57
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;