00001 #ifndef __GENERIC_WRAPPER_H
00002 #define __GENERIC_WRAPPER_H
00003
00004 #include "abstractmail.h"
00005 #include "mailstatics.h"
00006 #include <qmap.h>
00007 #include <qstring.h>
00008 #include <libetpan/clist.h>
00009
00010 class RecMail;
00011 class RecBody;
00012 class encodedString;
00013 struct mailpop3;
00014 struct mailmessage;
00015 struct mailmime;
00016 struct mailmime_mechanism;
00017 struct mailimf_mailbox_list;
00018 struct mailimf_mailbox;
00019 struct mailimf_group;
00020 struct mailimf_address_list;
00021 struct mailsession;
00022 struct mailstorage;
00023 struct mailfolder;
00024 struct mailimf_in_reply_to;
00025
00026
00027
00028
00029
00030 class Genericwrapper : public AbstractMail,public MailStatics
00031 {
00032 Q_OBJECT
00033 public:
00034 Genericwrapper();
00035 virtual ~Genericwrapper();
00036
00037 virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part);
00038 virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part);
00039 virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part);
00040 virtual void cleanMimeCache();
00041 virtual int deleteMbox(const Opie::Core::OSmartPointer<Folder>&){return 1;}
00042 virtual void logout(){};
00043 virtual void storeMessage(const char*msg,size_t length, const QString&folder){};
00044
00045 protected:
00046 RecBodyP parseMail( mailmessage * msg );
00047 QString parseMailboxList( mailimf_mailbox_list *list );
00048 QString parseMailbox( mailimf_mailbox *box );
00049 QString parseGroup( mailimf_group *group );
00050 QString parseAddressList( mailimf_address_list *list );
00051
00052 void traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1);
00053 static void fillSingleBody(RecPartP&target,mailmessage*message,mailmime*mime);
00054 static void fillParameters(RecPartP&target,clist*parameters);
00055 static QString getencoding(mailmime_mechanism*aEnc);
00056 virtual void parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to=false);
00057 QStringList parseInreplies(mailimf_in_reply_to * in_replies);
00058
00059 QString msgTempName;
00060 unsigned int last_msg_id;
00061 QMap<QString,encodedString*> bodyCache;
00062 mailstorage * m_storage;
00063 mailfolder*m_folder;
00064 };
00065
00066 #endif