summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper
authoralwin <alwin>2004-01-07 19:27:47 (UTC)
committer alwin <alwin>2004-01-07 19:27:47 (UTC)
commit24a62e8789083f446138aebfa11409b73886aa88 (patch) (side-by-side diff)
tree177bd3de4ad46fd29e93b87c6a0423a4ca132682 /noncore/net/mail/libmailwrapper
parent7fdc50c5ff3fe42aba6d940165e99ed7150df4f1 (diff)
downloadopie-24a62e8789083f446138aebfa11409b73886aa88.zip
opie-24a62e8789083f446138aebfa11409b73886aa88.tar.gz
opie-24a62e8789083f446138aebfa11409b73886aa88.tar.bz2
download mail mostly finished
accounts can be switched "offline"
Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h4
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp6
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h6
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp6
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h1
-rw-r--r--noncore/net/mail/libmailwrapper/settings.cpp12
-rw-r--r--noncore/net/mail/libmailwrapper/settings.h5
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.cpp10
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.h4
12 files changed, 58 insertions, 16 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index 80d0b52..3dd2fce 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -21,9 +21,9 @@ AbstractMail* AbstractMail::getWrapper(POP3account *a)
return new POP3wrapper(a);
}
-AbstractMail* AbstractMail::getWrapper(const QString&a)
+AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name)
{
- return new MBOXwrapper(a);
+ return new MBOXwrapper(a,name);
}
encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc)
@@ -99,3 +99,8 @@ QString AbstractMail::defaultLocalfolder()
f += "/Applications/opiemail/localmail";
return f;
}
+
+/* temporary - will be removed when implemented in all classes */
+void AbstractMail::deleteMails(const QString &,QList<RecMail> &)
+{
+}
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index 9770991..15d83cb 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -31,6 +31,7 @@ public:
virtual void deleteMail(const RecMail&mail)=0;
virtual void answeredMail(const RecMail&mail)=0;
virtual int deleteAllMail(const Folder*)=0;
+ virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
virtual int deleteMbox(const Folder*)=0;
virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
@@ -46,11 +47,12 @@ public:
static AbstractMail* getWrapper(IMAPaccount *a);
static AbstractMail* getWrapper(POP3account *a);
/* mbox only! */
- static AbstractMail* getWrapper(const QString&a);
+ static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders");
static QString defaultLocalfolder();
virtual const QString&getType()const=0;
+ virtual const QString&getName()const=0;
protected:
static encodedString*decode_String(const encodedString*text,const QString&enc);
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index d252159..bb74de9 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -29,6 +29,7 @@ void IMAPwrapper::login()
uint16_t port;
int err = MAILIMAP_NO_ERROR;
+ if (account->getOffline()) return;
/* we are connected this moment */
/* TODO: setup a timer holding the line or if connection closed - delete the value */
if (m_imap) {
@@ -1006,6 +1007,11 @@ const QString&IMAPwrapper::getType()const
return account->getType();
}
+const QString&IMAPwrapper::getName()const
+{
+ return account->getAccountName();
+}
+
encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail)
{
// dummy
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index b246f58..b2bd7e9 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -45,6 +45,8 @@ public:
virtual void logout();
virtual const QString&getType()const;
+ virtual const QString&getName()const;
+
protected:
RecMail*parse_list_result(mailimap_msg_att*);
void login();
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
index bc496f7..97f301e 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
@@ -8,8 +8,8 @@
const QString MBOXwrapper::wrapperType="MBOX";
-MBOXwrapper::MBOXwrapper(const QString & mbox_dir)
- : Genericwrapper(),MBOXPath(mbox_dir)
+MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name)
+ : Genericwrapper(),MBOXPath(mbox_dir),MBOXName(mbox_name)
{
QDir dir(MBOXPath);
if (!dir.exists()) {
@@ -330,3 +330,8 @@ const QString&MBOXwrapper::getType()const
{
return wrapperType;
}
+
+const QString&MBOXwrapper::getName()const
+{
+ return MBOXName;
+}
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h
index 2794014..194ff86 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h
@@ -13,7 +13,7 @@ class MBOXwrapper : public Genericwrapper
{
Q_OBJECT
public:
- MBOXwrapper(const QString & dir);
+ MBOXwrapper(const QString & dir,const QString&name);
virtual ~MBOXwrapper();
virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
@@ -32,13 +32,15 @@ public:
static void mbox_progress( size_t current, size_t maximum );
virtual encodedString* fetchRawBody(const RecMail&mail);
- virtual void deleteMails(const QString & mailbox,QList<RecMail> &target);
+ virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
virtual int deleteAllMail(const Folder*);
virtual const QString&getType()const;
+ virtual const QString&getName()const;
protected:
static void deleteMails(mailmbox_folder*f,QList<RecMail> &target);
QString MBOXPath;
+ QString MBOXName;
static const QString wrapperType;
};
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index cceb22e..67bde38 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -108,6 +108,7 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
void POP3wrapper::login()
{
+ if (account->getOffline()) return;
/* we'll hold the line */
if ( m_pop3 != NULL ) return;
@@ -249,3 +250,8 @@ const QString&POP3wrapper::getType()const
{
return account->getType();
}
+
+const QString&POP3wrapper::getName()const
+{
+ return account->getAccountName();
+}
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index f0307b6..d2b708d 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -30,6 +30,7 @@ public:
virtual encodedString* fetchRawBody(const RecMail&mail);
virtual void logout();
virtual const QString&getType()const;
+ virtual const QString&getName()const;
static void pop3_progress( size_t current, size_t maximum );
protected:
diff --git a/noncore/net/mail/libmailwrapper/settings.cpp b/noncore/net/mail/libmailwrapper/settings.cpp
index c5187f5..02a80a3 100644
--- a/noncore/net/mail/libmailwrapper/settings.cpp
+++ b/noncore/net/mail/libmailwrapper/settings.cpp
@@ -168,6 +168,8 @@ void IMAPaccount::read()
if (password.isNull()) password = "";
prefix = conf->readEntry("MailPrefix","");
if (prefix.isNull()) prefix = "";
+ offline = conf->readBoolEntry("Offline",false);
+ delete conf;
}
void IMAPaccount::save()
@@ -184,7 +186,9 @@ void IMAPaccount::save()
conf->writeEntry( "User", user );
conf->writeEntryCrypt( "Password", password );
conf->writeEntry( "MailPrefix",prefix);
+ conf->writeEntry( "Offline",offline);
conf->write();
+ delete conf;
}
@@ -238,6 +242,8 @@ void POP3account::read()
ssl = conf->readBoolEntry( "SSL" );
user = conf->readEntry( "User" );
password = conf->readEntryCrypt( "Password" );
+ offline = conf->readBoolEntry("Offline",false);
+ delete conf;
}
void POP3account::save()
@@ -253,7 +259,9 @@ void POP3account::save()
conf->writeEntry( "SSL", ssl );
conf->writeEntry( "User", user );
conf->writeEntryCrypt( "Password", password );
+ conf->writeEntry( "Offline",offline);
conf->write();
+ delete conf;
}
@@ -313,6 +321,7 @@ void SMTPaccount::read()
login = conf->readBoolEntry( "Login" );
user = conf->readEntry( "User" );
password = conf->readEntryCrypt( "Password" );
+ delete conf;
}
void SMTPaccount::save()
@@ -330,6 +339,7 @@ void SMTPaccount::save()
conf->writeEntry( "User", user );
conf->writeEntryCrypt( "Password", password );
conf->write();
+ delete conf;
}
@@ -386,6 +396,7 @@ void NNTPaccount::read()
login = conf->readBoolEntry( "Login" );
user = conf->readEntry( "User" );
password = conf->readEntryCrypt( "Password" );
+ delete conf;
}
void NNTPaccount::save()
@@ -403,6 +414,7 @@ void NNTPaccount::save()
conf->writeEntry( "User", user );
conf->writeEntryCrypt( "Password", password );
conf->write();
+ delete conf;
}
diff --git a/noncore/net/mail/libmailwrapper/settings.h b/noncore/net/mail/libmailwrapper/settings.h
index caa5dfc..2104997 100644
--- a/noncore/net/mail/libmailwrapper/settings.h
+++ b/noncore/net/mail/libmailwrapper/settings.h
@@ -31,6 +31,9 @@ public:
void setSSL( bool b ) { ssl = b; }
bool getSSL() { return ssl; }
+ void setOffline(bool b) {offline = b;}
+ bool getOffline()const{return offline;}
+
virtual QString getFileName() { return accountName; }
virtual void read() { qDebug( "base reading..." ); }
virtual void save() { qDebug( "base saving..." ); }
@@ -38,7 +41,7 @@ public:
protected:
QString accountName, type, server, port, user, password;
bool ssl;
-
+ bool offline;
};
class IMAPaccount : public Account
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
index 4764b77..281b88e 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
@@ -489,7 +489,7 @@ void SMTPwrapper::storeMail(const char*mail, size_t length, const QString&box)
{
if (!mail) return;
QString localfolders = AbstractMail::defaultLocalfolder();
- MBOXwrapper*wrap = new MBOXwrapper(localfolders);
+ AbstractMail*wrap = AbstractMail::getWrapper(localfolders);
wrap->storeMessage(mail,length,box);
delete wrap;
}
@@ -516,11 +516,9 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp )
qDebug("Error fetching mime...");
return;
}
- QString tmp = data;
- tmp.replace(QRegExp("\r+",true,false),"");
msg = 0;
if (later) {
- storeMail((char*)tmp.data(),tmp.length(),"Outgoing");
+ storeMail(data,size,"Outgoing");
if (data) free( data );
Config cfg( "mail" );
cfg.setGroup( "Status" );
@@ -636,7 +634,7 @@ void SMTPwrapper::sendMail(const Mail&mail,SMTPaccount*aSmtp,bool later )
}
}
-int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which)
+int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which)
{
size_t curTok = 0;
mailimf_fields *fields = 0;
@@ -685,7 +683,7 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp)
if (!smtp) return false;
QString localfolders = AbstractMail::defaultLocalfolder();
- MBOXwrapper*wrap = new MBOXwrapper(localfolders);
+ AbstractMail*wrap = AbstractMail::getWrapper(localfolders);
if (!wrap) {
qDebug("memory error");
return false;
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.h b/noncore/net/mail/libmailwrapper/smtpwrapper.h
index 04fc4b0..7dcdbfd 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.h
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.h
@@ -10,7 +10,7 @@
#include "settings.h"
class Mail;
-class MBOXwrapper;
+class AbstractMail;
class RecMail;
class Attachment;
struct mailimf_fields;
@@ -59,7 +59,7 @@ protected:
void storeMail(mailmime*mail, const QString&box);
Settings *settings;
- int sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which);
+ int sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which);
int m_queuedMail;
static const char* USER_AGENT;