summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/abstractmail.cpp
Side-by-side diff
Diffstat (limited to 'kmicromail/libmailwrapper/abstractmail.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/abstractmail.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/kmicromail/libmailwrapper/abstractmail.cpp b/kmicromail/libmailwrapper/abstractmail.cpp
index f876235..374d606 100644
--- a/kmicromail/libmailwrapper/abstractmail.cpp
+++ b/kmicromail/libmailwrapper/abstractmail.cpp
@@ -1,36 +1,37 @@
// CHANGED 2004-09-31 Lutz Rogowski
#include "abstractmail.h"
#include "imapwrapper.h"
#include "pop3wrapper.h"
#include "nntpwrapper.h"
#include "mhwrapper.h"
#include "mailtypes.h"
#include <qpe/global.h>
#include <qprogressbar.h>
#include <qapplication.h>
+#include <qmessagebox.h>
#include <kdecore/kstandarddirs.h>
#include <qfile.h>
#include <qtextstream.h>
#include <stdlib.h>
#include <libetpan/mailmime_content.h>
#include <libetpan/mailmime.h>
using namespace Opie::Core;
AbstractMail* AbstractMail::getWrapper(IMAPaccount *a)
{
return new IMAPwrapper(a);
}
AbstractMail* AbstractMail::getWrapper(POP3account *a)
{
return new POP3wrapper(a);
}
AbstractMail* AbstractMail::getWrapper(NNTPaccount *a)
{
return new NNTPwrapper(a);
}
@@ -137,48 +138,114 @@ QString AbstractMail::draftFolder()
return QString("Drafts");
}
/* temporary - will be removed when implemented in all classes */
void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &)
{
}
void AbstractMail::deleteMailList(const QValueList<RecMailP>&target)
{
//qDebug("AbstractMail::deleteMailList:: Please reimplement! ");
// this is currently re-implemented in pop3wrapper and imapwrapper
int iii = 0;
int count = target.count();
QWidget wid;
wid.show();
while (iii < count ) {
Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count));
wid.raise();
qApp->processEvents();
RecMailP mail = (*target.at( iii ));
deleteMail(mail);
++iii;
}
}
+
+void AbstractMail::downloadNewMails(const FolderP&fromFolder, AbstractMail*targetMail )
+{
+ qDebug("AbstractMail::downloadNewMails %s ", fromFolder->getName().latin1());
+ // get local folder
+ Account * acc = getAccount();
+ if ( !acc ) return;
+ QString lfName = acc->getLocalFolder();
+ if ( lfName.isEmpty() )
+ lfName = acc->getAccountName();
+ // create local folder
+ if ( !targetMail->createMbox(lfName))
+ {
+ QMessageBox::critical(0,tr("Error creating new Folder"),
+ tr("Error while creating new folder\n%1\n\nCancelling action.").arg(lfName));
+ return;
+ }
+ QValueList<RecMailP> t;
+ listMessages(fromFolder->getName(),t,acc->getMaxMailSize() );
+ if ( t.count() == 0 ) {
+ Global::statusMessage(tr("There are no new messages"));
+ return;
+ }
+ QValueList<RecMailP> e;
+ targetMail->listMessages(lfName,e,acc->getMaxMailSize() );
+ qDebug("target has mails %d ", e.count());
+ QValueList<RecMailP> n;
+ int iii = 0;
+ int count = t.count();
+ while (iii < count ) {
+ RecMailP r = (*t.at( iii ));
+ bool found = false;
+ int jjj = 0;
+ int countE = e.count();
+ while (jjj < countE ) {
+ RecMailP re = (*e.at( jjj ));
+ if ( re->isEqual(r) ) {
+ found = true;
+ break;
+ }
+ ++jjj;
+ }
+ if ( found )
+ qDebug("found ");
+ else
+ qDebug("NOT found ");
+
+ if ( !found ) {
+ n.append( r );
+ }
+ ++iii;
+ }
+ if ( n.count() == 0 ) {
+ Global::statusMessage(tr("There are no new messages"));
+ return;
+ }
+ mvcpMailList( n,lfName,targetMail,!acc->getLeaveOnServer());
+
+
+#if 0
+ QValueList<RecMailP> t;
+ listMessages(fromFolder->getName(),t, maxSizeInKb);
+ mvcpMailList( t,targetFolder,targetWrapper,moveit);
+#endif
+
+}
void AbstractMail::mvcpAllMails(const FolderP&fromFolder,
const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb)
{
QValueList<RecMailP> t;
listMessages(fromFolder->getName(),t, maxSizeInKb);
mvcpMailList( t,targetFolder,targetWrapper,moveit);
}
void AbstractMail::mvcpMailList(const QValueList<RecMailP>& t,
const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
{
encodedString*st = 0;
int iii = 0;
int count = t.count();
if ( count == 0 )
return;
// wel, processevents is qite strange, we need a widget for getting
// Global::statusMessage(tr("Copy2 message %1").arg(iii)); displayed
QWidget wid;
wid.show();
while (iii < count ) {
Global::statusMessage(tr("Copy message %1 of %2").arg(iii).arg(count));
wid.raise();
qApp->processEvents();