summaryrefslogtreecommitdiff
path: root/noncore
authoralwin <alwin>2004-01-10 03:20:04 (UTC)
committer alwin <alwin>2004-01-10 03:20:04 (UTC)
commit6248e82bf1b077c54e3e2b85801a99fa0f86434d (patch) (side-by-side diff)
treed223c9984c9e0d296ba4ae57654c1b15795c1e70 /noncore
parentdcfd6e5e2e2021bc5ed0bcf42b1b0a7002c59a17 (diff)
downloadopie-6248e82bf1b077c54e3e2b85801a99fa0f86434d.zip
opie-6248e82bf1b077c54e3e2b85801a99fa0f86434d.tar.gz
opie-6248e82bf1b077c54e3e2b85801a99fa0f86434d.tar.bz2
mh wrapper fully functional.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp54
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.h7
2 files changed, 56 insertions, 5 deletions
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
index 512f778..5090f4a 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
@@ -1,13 +1,15 @@
#include "mhwrapper.h"
#include "mailtypes.h"
#include "mailwrapper.h"
#include <libetpan/libetpan.h>
#include <qdir.h>
+#include <qmessagebox.h>
#include <stdlib.h>
#include <qpe/global.h>
+#include <opie/oprocess.h>
const QString MHwrapper::wrapperType="MH";
MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name)
: Genericwrapper(),MHPath(mbox_dir),MHName(mbox_name)
{
@@ -77,12 +79,14 @@ void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
}
QList<Folder>* MHwrapper::listFolders()
{
QList<Folder> * folders = new QList<Folder>();
folders->setAutoDelete( false );
+ /* this is needed! */
+ if (m_storage) mailstorage_disconnect(m_storage);
init_storage();
if (!m_storage) {
return folders;
}
mail_list*flist = 0;
clistcell*current=0;
@@ -164,26 +168,34 @@ QString MHwrapper::buildPath(const QString&p)
f+="/";
}
f+=p;
return f;
}
-int MHwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool )
+int MHwrapper::createMbox(const QString&folder,const Folder*pfolder,const QString&,bool )
{
init_storage();
if (!m_storage) {
return 0;
}
- QString f = buildPath(folder);
+ QString f;
+ if (!pfolder) {
+ // toplevel folder
+ f = buildPath(folder);
+ } else {
+ f = pfolder->getName();
+ f+="/";
+ f+=folder;
+ }
+ qDebug(f);
int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1());
if (r != MAIL_NO_ERROR) {
- qDebug("error creating folder");
+ qDebug("error creating folder %i",r);
return 0;
}
qDebug("Folder created");
- mailstorage_disconnect(m_storage);
return 1;
}
void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder)
{
init_storage();
@@ -292,22 +304,54 @@ int MHwrapper::deleteMbox(const Folder*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 cmd = "rm -rf "+tfolder->getName();
+ QStringList command;
+ command << "/bin/sh";
+ command << "-c";
+ command << cmd.latin1();
+ OProcess *process = new OProcess();
+
+ connect(process, SIGNAL(processExited(OProcess *)),
+ this, SLOT( processEnded(OProcess *)));
+ connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)),
+ this, SLOT( oprocessStderr(OProcess *, char *, int)));
+
+ *process << command;
+ removeMboxfailed = false;
+ if(!process->start(OProcess::Block, OProcess::All) ) {
+ qDebug("could not start process");
+ return 0;
+ }
qDebug("mail box deleted");
- mailstorage_disconnect(m_storage);
return 1;
}
+void MHwrapper::processEnded(OProcess *p)
+{
+ if (p) delete p;
+}
+
+void MHwrapper::oprocessStderr(OProcess*, char *buffer, int )
+{
+ QString lineStr = buffer;
+ QMessageBox::warning( 0, tr("Error"), lineStr ,tr("Ok") );
+ removeMboxfailed = true;
+}
+
void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
{
init_storage();
if (!m_storage) {
return;
}
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.h b/noncore/net/mail/libmailwrapper/mhwrapper.h
index 79dec30..b8e380c 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.h
@@ -5,12 +5,13 @@
#include <qstring.h>
class RecMail;
class RecBody;
class encodedString;
struct mailmbox_folder;
+class OProcess;
class MHwrapper : public Genericwrapper
{
Q_OBJECT
public:
MHwrapper(const QString & dir,const QString&name);
@@ -36,17 +37,23 @@ public:
virtual encodedString* fetchRawBody(const RecMail&mail);
virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
virtual int deleteAllMail(const Folder*);
virtual const QString&getType()const;
virtual const QString&getName()const;
+public slots:
+ /* for deleting maildirs we are using a system call */
+ virtual void oprocessStderr(OProcess*, char *buffer, int );
+ virtual void processEnded(OProcess *);
protected:
QString buildPath(const QString&p);
QString MHPath;
QString MHName;
static const QString wrapperType;
void init_storage();
void clean_storage();
+
+ bool removeMboxfailed;
};
#endif