summaryrefslogtreecommitdiff
path: root/noncore/net/mail/mboxwrapper.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/mail/mboxwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/mboxwrapper.cpp126
1 files changed, 100 insertions, 26 deletions
diff --git a/noncore/net/mail/mboxwrapper.cpp b/noncore/net/mail/mboxwrapper.cpp
index 6d69263..162a0c9 100644
--- a/noncore/net/mail/mboxwrapper.cpp
+++ b/noncore/net/mail/mboxwrapper.cpp
@@ -4,5 +4,5 @@
#include <libetpan/libetpan.h>
-#include <libetpan/mailstorage.h>
#include <qdir.h>
#include <stdlib.h>
+#include <qpe/global.h>
@@ -26,9 +26,6 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
p+=mailbox;
- char*fname = 0;
-
- fname = strdup(p.latin1());
-
- int r = mbox_mailstorage_init(storage,fname,0,0,0);
+
+ int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
mailfolder*folder;
- folder = mailfolder_new( storage,fname,NULL);
+ folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
r = mailfolder_connect(folder);
@@ -38,3 +35,2 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
mailstorage_free(storage);
- free(fname);
return;
@@ -47,3 +43,2 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
mailstorage_free(storage);
- free(fname);
return;
@@ -58,3 +53,2 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
mailstorage_free(storage);
- free(fname);
return;
@@ -63,3 +57,4 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
- for(int i = 0 ; i < carray_count(env_list->msg_tab) ; ++i) {
+ uint32_t i = 0;
+ for(; i < carray_count(env_list->msg_tab) ; ++i) {
mailmessage * msg;
@@ -112,3 +107,3 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
mailstorage_free(storage);
- free(fname);
+ Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(i));
}
@@ -136,6 +131,5 @@ void MBOXwrapper::deleteMail(const RecMail&mail)
p+=mail.getMbox();
- mailmessage * msg;
- int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0);
+ int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
mailfolder*folder;
- folder = mailfolder_new( storage,strdup(p.latin1()),NULL);
+ folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
r = mailfolder_connect(folder);
@@ -169,5 +163,5 @@ RecBody MBOXwrapper::fetchBody( const RecMail &mail )
- int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0);
+ int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
mailfolder*folder;
- folder = mailfolder_new( storage,strdup(p.latin1()),NULL);
+ folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
r = mailfolder_connect(folder);
@@ -207,4 +201,18 @@ void MBOXwrapper::mbox_progress( size_t current, size_t maximum )
-void MBOXwrapper::createFolder(const QString&)
+int MBOXwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool )
{
+ QString p = MBOXPath+"/";
+ p+=folder;
+ QFileInfo fi(p);
+ if (fi.exists()) {
+ Global::statusMessage(tr("Mailbox exists."));
+ return 0;
+ }
+ mailmbox_folder*f = 0;
+ if (mailmbox_init(p.latin1(),0,1,0,&f) != MAIL_NO_ERROR) {
+ Global::statusMessage(tr("Error init folder"));
+ return 0;
+ }
+ if (f) mailmbox_done(f);
+ return 1;
}
@@ -218,3 +226,3 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde
if (r != MAIL_NO_ERROR) {
- qDebug("Error init folder");
+ Global::statusMessage(tr("Error init folder"));
return;
@@ -223,3 +231,3 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde
if (r != MAIL_NO_ERROR) {
- qDebug("Error writing message folder");
+ Global::statusMessage(tr("Error writing to message folder"));
}
@@ -238,8 +246,8 @@ void MBOXwrapper::fetchRawBody(const RecMail&mail,char**target,size_t*length)
- int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0);
+ int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
mailfolder*folder;
- folder = mailfolder_new( storage,strdup(p.latin1()),NULL);
+ folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
r = mailfolder_connect(folder);
if (r != MAIL_NO_ERROR) {
- qDebug("Error initializing mbox");
+ Global::statusMessage(tr("Error initializing mbox"));
mailfolder_free(folder);
@@ -250,3 +258,3 @@ void MBOXwrapper::fetchRawBody(const RecMail&mail,char**target,size_t*length)
if (r != MAIL_NO_ERROR) {
- qDebug("Error fetching mail %i",mail.getNumber());
+ Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber()));
mailfolder_free(folder);
@@ -257,3 +265,3 @@ void MBOXwrapper::fetchRawBody(const RecMail&mail,char**target,size_t*length)
if (r != MAIL_NO_ERROR) {
- qDebug("Error fetching mail %i",mail.getNumber());
+ Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber()));
mailfolder_free(folder);
@@ -280,2 +288,10 @@ void MBOXwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target)
}
+ deleteMails(f,target);
+ mailmbox_done(f);
+}
+
+void MBOXwrapper::deleteMails(mailmbox_folder*f,QList<RecMail> &target)
+{
+ if (!f) return;
+ int r;
for (unsigned int i=0; i < target.count();++i) {
@@ -290,3 +306,61 @@ void MBOXwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target)
}
- mailmbox_done(f);
+}
+
+int MBOXwrapper::deleteAllMail(const Folder*tfolder)
+{
+ if (!tfolder) return 0;
+ QString p = MBOXPath+tfolder->getDisplayName();
+ int res = 1;
+
+ mailfolder*folder = 0;
+ mailmessage_list*l=0;
+ mailstorage*storage = mailstorage_new(NULL);
+ int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
+ if (r != MAIL_NO_ERROR) {
+ Global::statusMessage(tr("Error initializing mbox"));
+ res = 0;
+ }
+ if (res) {
+ folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
+ r = mailfolder_connect(folder);
+ if (r != MAIL_NO_ERROR) {
+ Global::statusMessage(tr("Error initializing mbox"));
+ res = 0;
+ }
+ }
+ if (res) {
+ r = mailsession_get_messages_list(folder->fld_session,&l);
+ if (r != MAIL_NO_ERROR) {
+ qDebug("Error message list");
+ res=0;
+ }
+ }
+ for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) {
+ r = mailsession_remove_message(folder->fld_session,i+1);
+ if (r != MAIL_NO_ERROR) {
+ Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
+ res = 0;
+ break;
+ }
+ }
+ if (l) mailmessage_list_free(l);
+ if (folder) mailfolder_free(folder);
+ if (storage) mailstorage_free(storage);
+ return res;
+}
+
+int MBOXwrapper::deleteMbox(const Folder*tfolder)
+{
+ if (!tfolder) return 0;
+ QString p = MBOXPath+tfolder->getDisplayName();
+ QFile fi(p);
+ if (!fi.exists()) {
+ Global::statusMessage(tr("Mailbox doesn't exist."));
+ return 0;
+ }
+ if (!fi.remove()) {
+ Global::statusMessage(tr("Error deleting Mailbox."));
+ return 0;
+ }
+ return 1;
}