summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper/abstractmail.h
blob: f93bab49add62b137ce4771088e7644663e5da47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef __abstract_mail_
#define __abstract_mail_

#include <qobject.h>
#include "settings.h"

class RecMail;
class RecBody;
class RecPart;
class IMAPwrapper;
class POP3wrapper;
class Folder;
class encodedString;
struct folderStat;

class AbstractMail:public QObject
{
    Q_OBJECT
public:
    AbstractMail(){};
    virtual ~AbstractMail(){}
    virtual QList<Folder>* listFolders()=0;
    virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
    virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
    virtual RecBody fetchBody(const RecMail&mail)=0;
    virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0;
    virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0;
    virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0;
    virtual encodedString* fetchRawBody(const RecMail&mail)=0;

    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;

    virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
    virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);

    virtual void cleanMimeCache(){};    
    /* mail box methods */
    /* parameter is the box to create.
     * if the implementing subclass has prefixes, 
     * them has to be appended automatic.
     */
    virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false);
    virtual void logout()=0;
    
    static AbstractMail* getWrapper(IMAPaccount *a);
    static AbstractMail* getWrapper(POP3account *a);
    /* mbox only! */
    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);
    static QString convert_String(const char*text);
    static QString gen_attachment_id();
};
#endif