From 85444223acfafd9d7955032b2cbdad3279ba27ad Mon Sep 17 00:00:00 2001 From: alwin Date: Sat, 13 Dec 2003 20:39:07 +0000 Subject: imap/pop3 wrapper uses base virtual class so we can forward the pointer independend of its later use. ToDo: find a more general interface for it --- (limited to 'noncore/net/mail/libmailwrapper') diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp new file mode 100644 index 0000000..7380c31 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp @@ -0,0 +1,13 @@ +#include "abstractmail.h" +#include "imapwrapper.h" +#include "pop3wrapper.h" + +AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) +{ + return new IMAPwrapper(a); +} + +AbstractMail* AbstractMail::getWrapper(POP3account *a) +{ + return new POP3wrapper(a); +} diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h new file mode 100644 index 0000000..bc8938f --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/abstractmail.h @@ -0,0 +1,30 @@ +#ifndef __abstract_mail_ +#define __abstract_mail_ + +#include +#include "settings.h" + +class RecMail; +class RecBody; +class RecPart; +class IMAPwrapper; +class POP3wrapper; +class Folder; + +class AbstractMail:public QObject +{ + Q_OBJECT +public: + AbstractMail(){}; + virtual ~AbstractMail(){} + virtual QList* listFolders()=0; + virtual void listMessages(const QString & mailbox,QList&target )=0; + virtual RecBody fetchBody(const RecMail&mail)=0; + virtual QString fetchPart(const RecMail&mail,const QValueList&path,bool internal_call=false)=0; + virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0; + + static AbstractMail* getWrapper(IMAPaccount *a); + static AbstractMail* getWrapper(POP3account *a); +}; + +#endif diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp index 48e476b..e5eb335 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp @@ -6,6 +6,7 @@ #include IMAPwrapper::IMAPwrapper( IMAPaccount *a ) + : AbstractMail() { account = a; m_imap = 0; @@ -139,14 +140,14 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList &target ) mailimap_fetch_list_free(result); } -QList* IMAPwrapper::listFolders() +QList* IMAPwrapper::listFolders() { const char *path, *mask; int err = MAILIMAP_NO_ERROR; clist *result; clistcell *current; - QList * folders = new QList(); + QList * folders = new QList(); folders->setAutoDelete( true ); login(); if (!m_imap) { diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h index 95de215..f88457a 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.h +++ b/noncore/net/mail/libmailwrapper/imapwrapper.h @@ -3,6 +3,7 @@ #include #include "mailwrapper.h" +#include "abstractmail.h" struct mailimap; struct mailimap_body_type_1part; @@ -12,22 +13,18 @@ struct mailimap_body_type_msg; struct mailimap_body_type_mpart; struct mailimap_body_fields; struct mailimap_msg_att; -class RecMail; -class RecBody; -class RecPart; -class IMAPwrapper : public QObject +class IMAPwrapper : public AbstractMail { Q_OBJECT - public: IMAPwrapper( IMAPaccount *a ); virtual ~IMAPwrapper(); - QList* listFolders(); - void listMessages(const QString & mailbox,QList&target ); - RecBody fetchBody(const RecMail&mail); - QString fetchPart(const RecMail&mail,const QValueList&path,bool internal_call=false); - QString fetchPart(const RecMail&mail,const RecPart&part); + virtual QList* listFolders(); + virtual void listMessages(const QString & mailbox,QList&target ); + virtual RecBody fetchBody(const RecMail&mail); + virtual QString fetchPart(const RecMail&mail,const QValueList&path,bool internal_call=false); + virtual QString fetchPart(const RecMail&mail,const RecPart&part); static void imap_progress( size_t current, size_t maximum ); protected: diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index abb5a42..49c3b7a 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp @@ -59,7 +59,7 @@ RecBody POP3wrapper::parseBody( const char *message ) return body; } -void POP3wrapper::listMessages( QList &target ) +void POP3wrapper::listMessages(const QString &, QList &target ) { int err = MAILPOP3_NO_ERROR; char *header; @@ -268,3 +268,22 @@ void POP3wrapper::logout() m_pop3 = NULL; } + +QList* POP3wrapper::listFolders() +{ + QList * folders = new QList(); + folders->setAutoDelete( true ); + Folder*inb=new Folder("INBOX"); + folders->append(inb); + return folders; +} + +QString POP3wrapper::fetchPart(const RecMail&,const QValueList&,bool) +{ + return ""; +} + +QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) +{ + return ""; +} diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h index 995bed0..3b24564 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.h +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h @@ -2,19 +2,25 @@ #define __POP3WRAPPER #include "mailwrapper.h" +#include "abstractmail.h" class RecMail; class RecBody; struct mailpop3; -class POP3wrapper : public QObject +class POP3wrapper : public AbstractMail { Q_OBJECT public: POP3wrapper( POP3account *a ); virtual ~POP3wrapper(); - void listMessages( QList &target ); + /* mailbox will be ignored */ + virtual void listMessages(const QString & mailbox, QList &target ); + virtual QList* listFolders(); + virtual QString fetchPart(const RecMail&mail,const QValueList&path,bool internal_call=false); + virtual QString fetchPart(const RecMail&mail,const RecPart&part); + RecBody fetchBody( const RecMail &mail ); static void pop3_progress( size_t current, size_t maximum ); @@ -32,7 +38,6 @@ private: QString parseDateTime( mailimf_date_time *date ); POP3account *account; mailpop3 *m_pop3; - }; #endif -- cgit v0.9.0.2