summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper
authoralwin <alwin>2004-01-08 02:52:13 (UTC)
committer alwin <alwin>2004-01-08 02:52:13 (UTC)
commit05d47b2603adfab0e16f7395e34b7aa56ce6d8de (patch) (side-by-side diff)
tree4253654acb70b859fd0d32981132dffd35092b9f /noncore/net/mail/libmailwrapper
parentdfa1477a28ecd90e08cf09aeecbe816e94bec0b5 (diff)
downloadopie-05d47b2603adfab0e16f7395e34b7aa56ce6d8de.zip
opie-05d47b2603adfab0e16f7395e34b7aa56ce6d8de.tar.gz
opie-05d47b2603adfab0e16f7395e34b7aa56ce6d8de.tar.bz2
move/copy mails to another folder resides inside wrappers so we can
use special funs of libetpan and/or mailserver itself (eg. imap) libetpan 0.32 requires for that feature a patch! (see libetpanstuff/) accounts marked as "offline" get a new icon TODO: - when creating a new folder while copy/move on imap-server, get the real resulting foldername when using prefix - implement usage of copy/move inside one mbox using special etpan funs
Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp19
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h2
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp31
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h1
4 files changed, 53 insertions, 0 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index 3dd2fce..4b4c728 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -104,3 +104,22 @@ QString AbstractMail::defaultLocalfolder()
void AbstractMail::deleteMails(const QString &,QList<RecMail> &)
{
}
+
+void AbstractMail::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
+{
+ QList<RecMail> t;
+ listMessages(fromFolder->getName(),t);
+ encodedString*st = 0;
+ while (t.count()>0) {
+ RecMail*r = t.at(0);
+ st = fetchRawBody(*r);
+ if (st) {
+ targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder);
+ delete st;
+ }
+ t.removeFirst();
+ }
+ if (moveit) {
+ deleteAllMail(fromFolder);
+ }
+}
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index 15d83cb..8debaae 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -35,6 +35,8 @@ public:
virtual int deleteMbox(const Folder*)=0;
virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
+ virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
+
virtual void cleanMimeCache(){};
/* mail box methods */
/* parameter is the box to create.
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index bb74de9..23c678b 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -1009,6 +1009,7 @@ const QString&IMAPwrapper::getType()const
const QString&IMAPwrapper::getName()const
{
+ qDebug("Get name: %s",account->getAccountName().latin1());
return account->getAccountName();
}
@@ -1018,3 +1019,33 @@ encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail)
QValueList<int> path;
return fetchRawPart(mail,path,false);
}
+
+void IMAPwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
+{
+ qDebug("mvcp mail imap");
+ if (targetWrapper != this) {
+ AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit);
+ qDebug("Using generic");
+ return;
+ }
+ qDebug("Using internal");
+ mailimap_set *set = 0;
+
+ int err = mailimap_select( m_imap, fromFolder->getName().latin1());
+ if ( err != MAILIMAP_NO_ERROR ) {
+ Global::statusMessage(tr("error selecting mailbox: %1").arg(m_imap->imap_response));
+ return;
+ }
+
+ int last = m_imap->imap_selection_info->sel_exists;
+ set = mailimap_set_new_interval( 1, last );
+ err = mailimap_copy(m_imap,set,targetFolder.latin1());
+ if ( err != MAILIMAP_NO_ERROR ) {
+ Global::statusMessage(tr("error copy mails: %1").arg(m_imap->imap_response));
+ return;
+ }
+ mailimap_set_free( set );
+ if (moveit) {
+ deleteAllMail(fromFolder);
+ }
+}
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index b2bd7e9..07c6210 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -31,6 +31,7 @@ public:
virtual void answeredMail(const RecMail&mail);
virtual int deleteAllMail(const Folder*folder);
virtual void storeMessage(const char*msg,size_t length, const QString&folder);
+ virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
virtual RecBody fetchBody(const RecMail&mail);
virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);