00001 #ifndef __abstract_mail_
00002 #define __abstract_mail_
00003
00004 #include "maildefines.h"
00005
00006 #include "settings.h"
00007
00008 #include <qobject.h>
00009 #include <opie2/osmartpointer.h>
00010 #include "mailtypes.h"
00011
00012 class IMAPwrapper;
00013 class POP3wrapper;
00014 class Folder;
00015 class encodedString;
00016 struct folderStat;
00017
00018 class AbstractMail:public QObject
00019 {
00020 Q_OBJECT
00021 public:
00022 AbstractMail(){};
00023 virtual ~AbstractMail(){}
00024 virtual QValueList<Opie::Core::OSmartPointer<Folder> >* listFolders()=0;
00025 virtual void listMessages(const QString & mailbox,QValueList<RecMailP>&target )=0;
00026 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
00027 virtual RecBodyP fetchBody(const RecMailP&mail)=0;
00028 virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part)=0;
00029 virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part)=0;
00030 virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part)=0;
00031 virtual encodedString* fetchRawBody(const RecMailP&mail)=0;
00032
00033 virtual void deleteMail(const RecMailP&mail)=0;
00034 virtual void answeredMail(const RecMailP&mail)=0;
00035 virtual int deleteAllMail(const Opie::Core::OSmartPointer<Folder>&)=0;
00036 virtual void deleteMails(const QString & FolderName,const QValueList<Opie::Core::OSmartPointer<RecMail> >&target);
00037 virtual int deleteMbox(const Opie::Core::OSmartPointer<Folder>&)=0;
00038 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
00039
00040 virtual void mvcpAllMails(const Opie::Core::OSmartPointer<Folder>&fromFolder,
00041 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
00042 virtual void mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
00043
00044 virtual void cleanMimeCache(){};
00045
00046
00047
00048
00049
00050 virtual int createMbox(const QString&,const Opie::Core::OSmartPointer<Folder>&parentfolder=0,
00051 const QString& delemiter="/",bool getsubfolder=false);
00052 virtual void logout()=0;
00053
00054 static AbstractMail* getWrapper(IMAPaccount *a);
00055 static AbstractMail* getWrapper(POP3account *a);
00056 static AbstractMail* getWrapper(NNTPaccount *a);
00057
00058 static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders");
00059 static AbstractMail* getWrapper(Account*a);
00060
00061 static QString defaultLocalfolder();
00062 static QString draftFolder();
00063
00064 virtual MAILLIB::ATYPE getType()const=0;
00065 virtual const QString&getName()const=0;
00066
00067 protected:
00068 static encodedString*decode_String(const encodedString*text,const QString&enc);
00069 static QString convert_String(const char*text);
00070 static QString gen_attachment_id();
00071 };
00072 #endif