author | alwin <alwin> | 2003-12-13 21:03:45 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-13 21:03:45 (UTC) |
commit | c0e86973b0cd2d01163ccf60340c8d295aa645f4 (patch) (unidiff) | |
tree | 4ccb0f7b8071711bf7ebc5320ea5c2f6974d6fb4 /noncore/net | |
parent | 85444223acfafd9d7955032b2cbdad3279ba27ad (diff) | |
download | opie-c0e86973b0cd2d01163ccf60340c8d295aa645f4.zip opie-c0e86973b0cd2d01163ccf60340c8d295aa645f4.tar.gz opie-c0e86973b0cd2d01163ccf60340c8d295aa645f4.tar.bz2 |
the RecMail class get on creation a mailwrapper assigened
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 1 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 1 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailtypes.cpp | 17 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailtypes.h | 7 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 1 | ||||
-rw-r--r-- | noncore/net/mail/mailtypes.cpp | 17 | ||||
-rw-r--r-- | noncore/net/mail/mailtypes.h | 7 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.cpp | 1 |
8 files changed, 50 insertions, 2 deletions
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp index e5eb335..3222c7e 100644 --- a/noncore/net/mail/imapwrapper.cpp +++ b/noncore/net/mail/imapwrapper.cpp | |||
@@ -110,48 +110,49 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) | |||
110 | set = mailimap_set_new_interval( 1, last ); | 110 | set = mailimap_set_new_interval( 1, last ); |
111 | fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); | 111 | fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); |
112 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); | 112 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); |
113 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); | 113 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); |
114 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); | 114 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); |
115 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); | 115 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); |
116 | 116 | ||
117 | err = mailimap_fetch( m_imap, set, fetchType, &result ); | 117 | err = mailimap_fetch( m_imap, set, fetchType, &result ); |
118 | mailimap_set_free( set ); | 118 | mailimap_set_free( set ); |
119 | mailimap_fetch_type_free( fetchType ); | 119 | mailimap_fetch_type_free( fetchType ); |
120 | 120 | ||
121 | QString date,subject,from; | 121 | QString date,subject,from; |
122 | 122 | ||
123 | if ( err == MAILIMAP_NO_ERROR ) { | 123 | if ( err == MAILIMAP_NO_ERROR ) { |
124 | 124 | ||
125 | mailimap_msg_att * msg_att; | 125 | mailimap_msg_att * msg_att; |
126 | int i = 0; | 126 | int i = 0; |
127 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { | 127 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { |
128 | ++i; | 128 | ++i; |
129 | msg_att = (mailimap_msg_att*)current->data; | 129 | msg_att = (mailimap_msg_att*)current->data; |
130 | RecMail*m = parse_list_result(msg_att); | 130 | RecMail*m = parse_list_result(msg_att); |
131 | if (m) { | 131 | if (m) { |
132 | m->setNumber(i); | 132 | m->setNumber(i); |
133 | m->setMbox(mailbox); | 133 | m->setMbox(mailbox); |
134 | m->setWrapper(this); | ||
134 | target.append(m); | 135 | target.append(m); |
135 | } | 136 | } |
136 | } | 137 | } |
137 | } else { | 138 | } else { |
138 | qDebug("Error fetching headers: %s",m_imap->imap_response); | 139 | qDebug("Error fetching headers: %s",m_imap->imap_response); |
139 | } | 140 | } |
140 | mailimap_fetch_list_free(result); | 141 | mailimap_fetch_list_free(result); |
141 | } | 142 | } |
142 | 143 | ||
143 | QList<Folder>* IMAPwrapper::listFolders() | 144 | QList<Folder>* IMAPwrapper::listFolders() |
144 | { | 145 | { |
145 | const char *path, *mask; | 146 | const char *path, *mask; |
146 | int err = MAILIMAP_NO_ERROR; | 147 | int err = MAILIMAP_NO_ERROR; |
147 | clist *result; | 148 | clist *result; |
148 | clistcell *current; | 149 | clistcell *current; |
149 | 150 | ||
150 | QList<Folder> * folders = new QList<Folder>(); | 151 | QList<Folder> * folders = new QList<Folder>(); |
151 | folders->setAutoDelete( true ); | 152 | folders->setAutoDelete( true ); |
152 | login(); | 153 | login(); |
153 | if (!m_imap) { | 154 | if (!m_imap) { |
154 | return folders; | 155 | return folders; |
155 | } | 156 | } |
156 | 157 | ||
157 | /* | 158 | /* |
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp index e5eb335..3222c7e 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp | |||
@@ -110,48 +110,49 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) | |||
110 | set = mailimap_set_new_interval( 1, last ); | 110 | set = mailimap_set_new_interval( 1, last ); |
111 | fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); | 111 | fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); |
112 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); | 112 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); |
113 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); | 113 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); |
114 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); | 114 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); |
115 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); | 115 | mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); |
116 | 116 | ||
117 | err = mailimap_fetch( m_imap, set, fetchType, &result ); | 117 | err = mailimap_fetch( m_imap, set, fetchType, &result ); |
118 | mailimap_set_free( set ); | 118 | mailimap_set_free( set ); |
119 | mailimap_fetch_type_free( fetchType ); | 119 | mailimap_fetch_type_free( fetchType ); |
120 | 120 | ||
121 | QString date,subject,from; | 121 | QString date,subject,from; |
122 | 122 | ||
123 | if ( err == MAILIMAP_NO_ERROR ) { | 123 | if ( err == MAILIMAP_NO_ERROR ) { |
124 | 124 | ||
125 | mailimap_msg_att * msg_att; | 125 | mailimap_msg_att * msg_att; |
126 | int i = 0; | 126 | int i = 0; |
127 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { | 127 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { |
128 | ++i; | 128 | ++i; |
129 | msg_att = (mailimap_msg_att*)current->data; | 129 | msg_att = (mailimap_msg_att*)current->data; |
130 | RecMail*m = parse_list_result(msg_att); | 130 | RecMail*m = parse_list_result(msg_att); |
131 | if (m) { | 131 | if (m) { |
132 | m->setNumber(i); | 132 | m->setNumber(i); |
133 | m->setMbox(mailbox); | 133 | m->setMbox(mailbox); |
134 | m->setWrapper(this); | ||
134 | target.append(m); | 135 | target.append(m); |
135 | } | 136 | } |
136 | } | 137 | } |
137 | } else { | 138 | } else { |
138 | qDebug("Error fetching headers: %s",m_imap->imap_response); | 139 | qDebug("Error fetching headers: %s",m_imap->imap_response); |
139 | } | 140 | } |
140 | mailimap_fetch_list_free(result); | 141 | mailimap_fetch_list_free(result); |
141 | } | 142 | } |
142 | 143 | ||
143 | QList<Folder>* IMAPwrapper::listFolders() | 144 | QList<Folder>* IMAPwrapper::listFolders() |
144 | { | 145 | { |
145 | const char *path, *mask; | 146 | const char *path, *mask; |
146 | int err = MAILIMAP_NO_ERROR; | 147 | int err = MAILIMAP_NO_ERROR; |
147 | clist *result; | 148 | clist *result; |
148 | clistcell *current; | 149 | clistcell *current; |
149 | 150 | ||
150 | QList<Folder> * folders = new QList<Folder>(); | 151 | QList<Folder> * folders = new QList<Folder>(); |
151 | folders->setAutoDelete( true ); | 152 | folders->setAutoDelete( true ); |
152 | login(); | 153 | login(); |
153 | if (!m_imap) { | 154 | if (!m_imap) { |
154 | return folders; | 155 | return folders; |
155 | } | 156 | } |
156 | 157 | ||
157 | /* | 158 | /* |
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.cpp b/noncore/net/mail/libmailwrapper/mailtypes.cpp index 5cd45ed..94f5d6f 100644 --- a/noncore/net/mail/libmailwrapper/mailtypes.cpp +++ b/noncore/net/mail/libmailwrapper/mailtypes.cpp | |||
@@ -1,61 +1,78 @@ | |||
1 | #include "mailtypes.h" | 1 | #include "mailtypes.h" |
2 | 2 | ||
3 | 3 | ||
4 | RecMail::RecMail() | 4 | RecMail::RecMail() |
5 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7) | 5 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7) |
6 | { | 6 | { |
7 | init(); | 7 | init(); |
8 | } | 8 | } |
9 | 9 | ||
10 | RecMail::RecMail(const RecMail&old) | 10 | RecMail::RecMail(const RecMail&old) |
11 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7) | 11 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7) |
12 | { | 12 | { |
13 | init(); | 13 | init(); |
14 | copy_old(old); | 14 | copy_old(old); |
15 | qDebug("Copy constructor RecMail"); | 15 | qDebug("Copy constructor RecMail"); |
16 | } | 16 | } |
17 | 17 | ||
18 | RecMail::~RecMail() | ||
19 | { | ||
20 | wrapper = 0; | ||
21 | } | ||
22 | |||
18 | void RecMail::copy_old(const RecMail&old) | 23 | void RecMail::copy_old(const RecMail&old) |
19 | { | 24 | { |
20 | subject = old.subject; | 25 | subject = old.subject; |
21 | date = old.date; | 26 | date = old.date; |
22 | mbox = old.mbox; | 27 | mbox = old.mbox; |
23 | msg_id = old.msg_id; | 28 | msg_id = old.msg_id; |
24 | msg_size = old.msg_size; | 29 | msg_size = old.msg_size; |
25 | msg_number = old.msg_number; | 30 | msg_number = old.msg_number; |
26 | from = old.from; | 31 | from = old.from; |
27 | msg_flags = old.msg_flags; | 32 | msg_flags = old.msg_flags; |
28 | to = old.to; | 33 | to = old.to; |
29 | cc = old.cc; | 34 | cc = old.cc; |
30 | bcc = old.bcc; | 35 | bcc = old.bcc; |
36 | wrapper = old.wrapper; | ||
31 | } | 37 | } |
32 | 38 | ||
33 | void RecMail::init() | 39 | void RecMail::init() |
34 | { | 40 | { |
35 | to.clear(); | 41 | to.clear(); |
36 | cc.clear(); | 42 | cc.clear(); |
37 | bcc.clear(); | 43 | bcc.clear(); |
44 | wrapper = 0; | ||
45 | } | ||
46 | |||
47 | void RecMail::setWrapper(AbstractMail*awrapper) | ||
48 | { | ||
49 | wrapper = awrapper; | ||
50 | } | ||
51 | |||
52 | AbstractMail* RecMail::Wrapper() | ||
53 | { | ||
54 | return wrapper; | ||
38 | } | 55 | } |
39 | 56 | ||
40 | void RecMail::setTo(const QStringList&list) | 57 | void RecMail::setTo(const QStringList&list) |
41 | { | 58 | { |
42 | to = list; | 59 | to = list; |
43 | } | 60 | } |
44 | 61 | ||
45 | const QStringList&RecMail::To()const | 62 | const QStringList&RecMail::To()const |
46 | { | 63 | { |
47 | return to; | 64 | return to; |
48 | } | 65 | } |
49 | 66 | ||
50 | void RecMail::setCC(const QStringList&list) | 67 | void RecMail::setCC(const QStringList&list) |
51 | { | 68 | { |
52 | cc = list; | 69 | cc = list; |
53 | } | 70 | } |
54 | 71 | ||
55 | const QStringList&RecMail::CC()const | 72 | const QStringList&RecMail::CC()const |
56 | { | 73 | { |
57 | return cc; | 74 | return cc; |
58 | } | 75 | } |
59 | 76 | ||
60 | void RecMail::setBcc(const QStringList&list) | 77 | void RecMail::setBcc(const QStringList&list) |
61 | { | 78 | { |
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h index 24518cf..9ef762d 100644 --- a/noncore/net/mail/libmailwrapper/mailtypes.h +++ b/noncore/net/mail/libmailwrapper/mailtypes.h | |||
@@ -1,92 +1,97 @@ | |||
1 | #ifndef __MAIL_TYPES_H | 1 | #ifndef __MAIL_TYPES_H |
2 | #define __MAIL_TYPES_H | 2 | #define __MAIL_TYPES_H |
3 | 3 | ||
4 | #define FLAG_ANSWERED 0 | 4 | #define FLAG_ANSWERED 0 |
5 | #define FLAG_FLAGGED 1 | 5 | #define FLAG_FLAGGED 1 |
6 | #define FLAG_DELETED 2 | 6 | #define FLAG_DELETED 2 |
7 | #define FLAG_SEEN 3 | 7 | #define FLAG_SEEN 3 |
8 | #define FLAG_DRAFT 4 | 8 | #define FLAG_DRAFT 4 |
9 | #define FLAG_RECENT 5 | 9 | #define FLAG_RECENT 5 |
10 | 10 | ||
11 | #include <qlist.h> | 11 | #include <qlist.h> |
12 | #include <qbitarray.h> | 12 | #include <qbitarray.h> |
13 | #include <qstring.h> | 13 | #include <qstring.h> |
14 | #include <qstringlist.h> | 14 | #include <qstringlist.h> |
15 | #include <qmap.h> | 15 | #include <qmap.h> |
16 | #include <qvaluelist.h> | 16 | #include <qvaluelist.h> |
17 | 17 | ||
18 | class AbstractMail; | ||
18 | /* a class to describe mails in a mailbox */ | 19 | /* a class to describe mails in a mailbox */ |
19 | /* Attention! | 20 | /* Attention! |
20 | From programmers point of view it would make sense to | 21 | From programmers point of view it would make sense to |
21 | store the mail body into this class, too. | 22 | store the mail body into this class, too. |
22 | But: not from the point of view of the device. | 23 | But: not from the point of view of the device. |
23 | Mailbodies can be real large. So we request them when | 24 | Mailbodies can be real large. So we request them when |
24 | needed from the mail-wrapper class direct from the server itself | 25 | needed from the mail-wrapper class direct from the server itself |
25 | (imap) or from a file-based cache (pop3?) | 26 | (imap) or from a file-based cache (pop3?) |
26 | So there is no interface "const QString&body()" but you should | 27 | So there is no interface "const QString&body()" but you should |
27 | make a request to the mailwrapper with this class as parameter to | 28 | make a request to the mailwrapper with this class as parameter to |
28 | get the body. Same words for the attachments. | 29 | get the body. Same words for the attachments. |
29 | */ | 30 | */ |
30 | class RecMail | 31 | class RecMail |
31 | { | 32 | { |
32 | public: | 33 | public: |
33 | RecMail(); | 34 | RecMail(); |
34 | RecMail(const RecMail&old); | 35 | RecMail(const RecMail&old); |
35 | virtual ~RecMail(){} | 36 | virtual ~RecMail(); |
36 | 37 | ||
37 | const int getNumber()const{return msg_number;} | 38 | const int getNumber()const{return msg_number;} |
38 | void setNumber(int number){msg_number=number;} | 39 | void setNumber(int number){msg_number=number;} |
39 | const QString&getDate()const{ return date; } | 40 | const QString&getDate()const{ return date; } |
40 | void setDate( const QString&a ) { date = a; } | 41 | void setDate( const QString&a ) { date = a; } |
41 | const QString&getFrom()const{ return from; } | 42 | const QString&getFrom()const{ return from; } |
42 | void setFrom( const QString&a ) { from = a; } | 43 | void setFrom( const QString&a ) { from = a; } |
43 | const QString&getSubject()const { return subject; } | 44 | const QString&getSubject()const { return subject; } |
44 | void setSubject( const QString&s ) { subject = s; } | 45 | void setSubject( const QString&s ) { subject = s; } |
45 | const QString&getMbox()const{return mbox;} | 46 | const QString&getMbox()const{return mbox;} |
46 | void setMbox(const QString&box){mbox = box;} | 47 | void setMbox(const QString&box){mbox = box;} |
47 | void setMsgid(const QString&id){msg_id=id;} | 48 | void setMsgid(const QString&id){msg_id=id;} |
48 | const QString&Msgid()const{return msg_id;} | 49 | const QString&Msgid()const{return msg_id;} |
49 | void setReplyto(const QString&reply){replyto=reply;} | 50 | void setReplyto(const QString&reply){replyto=reply;} |
50 | const QString&Replyto()const{return replyto;} | 51 | const QString&Replyto()const{return replyto;} |
51 | void setMsgsize(int size){msg_size = size;} | 52 | void setMsgsize(int size){msg_size = size;} |
52 | const int Msgsize()const{return msg_size;} | 53 | const int Msgsize()const{return msg_size;} |
53 | 54 | ||
54 | 55 | ||
55 | void setTo(const QStringList&list); | 56 | void setTo(const QStringList&list); |
56 | const QStringList&To()const; | 57 | const QStringList&To()const; |
57 | void setCC(const QStringList&list); | 58 | void setCC(const QStringList&list); |
58 | const QStringList&CC()const; | 59 | const QStringList&CC()const; |
59 | void setBcc(const QStringList&list); | 60 | void setBcc(const QStringList&list); |
60 | const QStringList&Bcc()const; | 61 | const QStringList&Bcc()const; |
61 | const QBitArray&getFlags()const{return msg_flags;} | 62 | const QBitArray&getFlags()const{return msg_flags;} |
62 | void setFlags(const QBitArray&flags){msg_flags = flags;} | 63 | void setFlags(const QBitArray&flags){msg_flags = flags;} |
64 | |||
65 | void setWrapper(AbstractMail*wrapper); | ||
66 | AbstractMail* Wrapper(); | ||
63 | 67 | ||
64 | protected: | 68 | protected: |
65 | QString subject,date,from,mbox,msg_id,replyto; | 69 | QString subject,date,from,mbox,msg_id,replyto; |
66 | int msg_number,msg_size; | 70 | int msg_number,msg_size; |
67 | QBitArray msg_flags; | 71 | QBitArray msg_flags; |
68 | QStringList to,cc,bcc; | 72 | QStringList to,cc,bcc; |
73 | AbstractMail*wrapper; | ||
69 | void init(); | 74 | void init(); |
70 | void copy_old(const RecMail&old); | 75 | void copy_old(const RecMail&old); |
71 | }; | 76 | }; |
72 | 77 | ||
73 | typedef QMap<QString,QString> part_plist_t; | 78 | typedef QMap<QString,QString> part_plist_t; |
74 | 79 | ||
75 | class RecPart | 80 | class RecPart |
76 | { | 81 | { |
77 | protected: | 82 | protected: |
78 | QString m_type,m_subtype,m_identifier,m_encoding; | 83 | QString m_type,m_subtype,m_identifier,m_encoding; |
79 | unsigned int m_lines,m_size; | 84 | unsigned int m_lines,m_size; |
80 | part_plist_t m_Parameters; | 85 | part_plist_t m_Parameters; |
81 | /* describes the position in the mail */ | 86 | /* describes the position in the mail */ |
82 | QValueList<int> m_poslist; | 87 | QValueList<int> m_poslist; |
83 | 88 | ||
84 | public: | 89 | public: |
85 | RecPart(); | 90 | RecPart(); |
86 | virtual ~RecPart(); | 91 | virtual ~RecPart(); |
87 | 92 | ||
88 | const QString&Type()const; | 93 | const QString&Type()const; |
89 | void setType(const QString&type); | 94 | void setType(const QString&type); |
90 | const QString&Subtype()const; | 95 | const QString&Subtype()const; |
91 | void setSubtype(const QString&subtype); | 96 | void setSubtype(const QString&subtype); |
92 | const QString&Identifier()const; | 97 | const QString&Identifier()const; |
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index 49c3b7a..903ef4d 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp | |||
@@ -60,48 +60,49 @@ RecBody POP3wrapper::parseBody( const char *message ) | |||
60 | } | 60 | } |
61 | 61 | ||
62 | void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | 62 | void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) |
63 | { | 63 | { |
64 | int err = MAILPOP3_NO_ERROR; | 64 | int err = MAILPOP3_NO_ERROR; |
65 | char *header; | 65 | char *header; |
66 | size_t length; | 66 | size_t length; |
67 | carray *messages; | 67 | carray *messages; |
68 | 68 | ||
69 | login(); | 69 | login(); |
70 | if (!m_pop3) return; | 70 | if (!m_pop3) return; |
71 | mailpop3_list( m_pop3, &messages ); | 71 | mailpop3_list( m_pop3, &messages ); |
72 | 72 | ||
73 | for ( int i = carray_count( messages ); i > 0; i-- ) { | 73 | for ( int i = carray_count( messages ); i > 0; i-- ) { |
74 | mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); | 74 | mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); |
75 | 75 | ||
76 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); | 76 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); |
77 | if ( err != MAILPOP3_NO_ERROR ) { | 77 | if ( err != MAILPOP3_NO_ERROR ) { |
78 | qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); | 78 | qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); |
79 | logout(); | 79 | logout(); |
80 | return; | 80 | return; |
81 | } | 81 | } |
82 | RecMail *mail = parseHeader( header ); | 82 | RecMail *mail = parseHeader( header ); |
83 | mail->setNumber( info->msg_index ); | 83 | mail->setNumber( info->msg_index ); |
84 | mail->setWrapper(this); | ||
84 | target.append( mail ); | 85 | target.append( mail ); |
85 | } | 86 | } |
86 | 87 | ||
87 | logout(); | 88 | logout(); |
88 | } | 89 | } |
89 | 90 | ||
90 | RecMail *POP3wrapper::parseHeader( const char *header ) | 91 | RecMail *POP3wrapper::parseHeader( const char *header ) |
91 | { | 92 | { |
92 | int err = MAILIMF_NO_ERROR; | 93 | int err = MAILIMF_NO_ERROR; |
93 | size_t curTok; | 94 | size_t curTok; |
94 | RecMail *mail = new RecMail(); | 95 | RecMail *mail = new RecMail(); |
95 | mailimf_fields *fields; | 96 | mailimf_fields *fields; |
96 | 97 | ||
97 | err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); | 98 | err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); |
98 | for ( clistiter *current = clist_begin( fields->fld_list ); current != NULL; current = current->next ) { | 99 | for ( clistiter *current = clist_begin( fields->fld_list ); current != NULL; current = current->next ) { |
99 | mailimf_field *field = (mailimf_field *) current->data; | 100 | mailimf_field *field = (mailimf_field *) current->data; |
100 | switch ( field->fld_type ) { | 101 | switch ( field->fld_type ) { |
101 | case MAILIMF_FIELD_FROM: | 102 | case MAILIMF_FIELD_FROM: |
102 | mail->setFrom( parseMailboxList( field->fld_data.fld_from->frm_mb_list ) ); | 103 | mail->setFrom( parseMailboxList( field->fld_data.fld_from->frm_mb_list ) ); |
103 | break; | 104 | break; |
104 | case MAILIMF_FIELD_TO: | 105 | case MAILIMF_FIELD_TO: |
105 | mail->setTo( parseAddressList( field->fld_data.fld_to->to_addr_list ) ); | 106 | mail->setTo( parseAddressList( field->fld_data.fld_to->to_addr_list ) ); |
106 | break; | 107 | break; |
107 | case MAILIMF_FIELD_CC: | 108 | case MAILIMF_FIELD_CC: |
diff --git a/noncore/net/mail/mailtypes.cpp b/noncore/net/mail/mailtypes.cpp index 5cd45ed..94f5d6f 100644 --- a/noncore/net/mail/mailtypes.cpp +++ b/noncore/net/mail/mailtypes.cpp | |||
@@ -1,61 +1,78 @@ | |||
1 | #include "mailtypes.h" | 1 | #include "mailtypes.h" |
2 | 2 | ||
3 | 3 | ||
4 | RecMail::RecMail() | 4 | RecMail::RecMail() |
5 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7) | 5 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7) |
6 | { | 6 | { |
7 | init(); | 7 | init(); |
8 | } | 8 | } |
9 | 9 | ||
10 | RecMail::RecMail(const RecMail&old) | 10 | RecMail::RecMail(const RecMail&old) |
11 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7) | 11 | :subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7) |
12 | { | 12 | { |
13 | init(); | 13 | init(); |
14 | copy_old(old); | 14 | copy_old(old); |
15 | qDebug("Copy constructor RecMail"); | 15 | qDebug("Copy constructor RecMail"); |
16 | } | 16 | } |
17 | 17 | ||
18 | RecMail::~RecMail() | ||
19 | { | ||
20 | wrapper = 0; | ||
21 | } | ||
22 | |||
18 | void RecMail::copy_old(const RecMail&old) | 23 | void RecMail::copy_old(const RecMail&old) |
19 | { | 24 | { |
20 | subject = old.subject; | 25 | subject = old.subject; |
21 | date = old.date; | 26 | date = old.date; |
22 | mbox = old.mbox; | 27 | mbox = old.mbox; |
23 | msg_id = old.msg_id; | 28 | msg_id = old.msg_id; |
24 | msg_size = old.msg_size; | 29 | msg_size = old.msg_size; |
25 | msg_number = old.msg_number; | 30 | msg_number = old.msg_number; |
26 | from = old.from; | 31 | from = old.from; |
27 | msg_flags = old.msg_flags; | 32 | msg_flags = old.msg_flags; |
28 | to = old.to; | 33 | to = old.to; |
29 | cc = old.cc; | 34 | cc = old.cc; |
30 | bcc = old.bcc; | 35 | bcc = old.bcc; |
36 | wrapper = old.wrapper; | ||
31 | } | 37 | } |
32 | 38 | ||
33 | void RecMail::init() | 39 | void RecMail::init() |
34 | { | 40 | { |
35 | to.clear(); | 41 | to.clear(); |
36 | cc.clear(); | 42 | cc.clear(); |
37 | bcc.clear(); | 43 | bcc.clear(); |
44 | wrapper = 0; | ||
45 | } | ||
46 | |||
47 | void RecMail::setWrapper(AbstractMail*awrapper) | ||
48 | { | ||
49 | wrapper = awrapper; | ||
50 | } | ||
51 | |||
52 | AbstractMail* RecMail::Wrapper() | ||
53 | { | ||
54 | return wrapper; | ||
38 | } | 55 | } |
39 | 56 | ||
40 | void RecMail::setTo(const QStringList&list) | 57 | void RecMail::setTo(const QStringList&list) |
41 | { | 58 | { |
42 | to = list; | 59 | to = list; |
43 | } | 60 | } |
44 | 61 | ||
45 | const QStringList&RecMail::To()const | 62 | const QStringList&RecMail::To()const |
46 | { | 63 | { |
47 | return to; | 64 | return to; |
48 | } | 65 | } |
49 | 66 | ||
50 | void RecMail::setCC(const QStringList&list) | 67 | void RecMail::setCC(const QStringList&list) |
51 | { | 68 | { |
52 | cc = list; | 69 | cc = list; |
53 | } | 70 | } |
54 | 71 | ||
55 | const QStringList&RecMail::CC()const | 72 | const QStringList&RecMail::CC()const |
56 | { | 73 | { |
57 | return cc; | 74 | return cc; |
58 | } | 75 | } |
59 | 76 | ||
60 | void RecMail::setBcc(const QStringList&list) | 77 | void RecMail::setBcc(const QStringList&list) |
61 | { | 78 | { |
diff --git a/noncore/net/mail/mailtypes.h b/noncore/net/mail/mailtypes.h index 24518cf..9ef762d 100644 --- a/noncore/net/mail/mailtypes.h +++ b/noncore/net/mail/mailtypes.h | |||
@@ -1,92 +1,97 @@ | |||
1 | #ifndef __MAIL_TYPES_H | 1 | #ifndef __MAIL_TYPES_H |
2 | #define __MAIL_TYPES_H | 2 | #define __MAIL_TYPES_H |
3 | 3 | ||
4 | #define FLAG_ANSWERED 0 | 4 | #define FLAG_ANSWERED 0 |
5 | #define FLAG_FLAGGED 1 | 5 | #define FLAG_FLAGGED 1 |
6 | #define FLAG_DELETED 2 | 6 | #define FLAG_DELETED 2 |
7 | #define FLAG_SEEN 3 | 7 | #define FLAG_SEEN 3 |
8 | #define FLAG_DRAFT 4 | 8 | #define FLAG_DRAFT 4 |
9 | #define FLAG_RECENT 5 | 9 | #define FLAG_RECENT 5 |
10 | 10 | ||
11 | #include <qlist.h> | 11 | #include <qlist.h> |
12 | #include <qbitarray.h> | 12 | #include <qbitarray.h> |
13 | #include <qstring.h> | 13 | #include <qstring.h> |
14 | #include <qstringlist.h> | 14 | #include <qstringlist.h> |
15 | #include <qmap.h> | 15 | #include <qmap.h> |
16 | #include <qvaluelist.h> | 16 | #include <qvaluelist.h> |
17 | 17 | ||
18 | class AbstractMail; | ||
18 | /* a class to describe mails in a mailbox */ | 19 | /* a class to describe mails in a mailbox */ |
19 | /* Attention! | 20 | /* Attention! |
20 | From programmers point of view it would make sense to | 21 | From programmers point of view it would make sense to |
21 | store the mail body into this class, too. | 22 | store the mail body into this class, too. |
22 | But: not from the point of view of the device. | 23 | But: not from the point of view of the device. |
23 | Mailbodies can be real large. So we request them when | 24 | Mailbodies can be real large. So we request them when |
24 | needed from the mail-wrapper class direct from the server itself | 25 | needed from the mail-wrapper class direct from the server itself |
25 | (imap) or from a file-based cache (pop3?) | 26 | (imap) or from a file-based cache (pop3?) |
26 | So there is no interface "const QString&body()" but you should | 27 | So there is no interface "const QString&body()" but you should |
27 | make a request to the mailwrapper with this class as parameter to | 28 | make a request to the mailwrapper with this class as parameter to |
28 | get the body. Same words for the attachments. | 29 | get the body. Same words for the attachments. |
29 | */ | 30 | */ |
30 | class RecMail | 31 | class RecMail |
31 | { | 32 | { |
32 | public: | 33 | public: |
33 | RecMail(); | 34 | RecMail(); |
34 | RecMail(const RecMail&old); | 35 | RecMail(const RecMail&old); |
35 | virtual ~RecMail(){} | 36 | virtual ~RecMail(); |
36 | 37 | ||
37 | const int getNumber()const{return msg_number;} | 38 | const int getNumber()const{return msg_number;} |
38 | void setNumber(int number){msg_number=number;} | 39 | void setNumber(int number){msg_number=number;} |
39 | const QString&getDate()const{ return date; } | 40 | const QString&getDate()const{ return date; } |
40 | void setDate( const QString&a ) { date = a; } | 41 | void setDate( const QString&a ) { date = a; } |
41 | const QString&getFrom()const{ return from; } | 42 | const QString&getFrom()const{ return from; } |
42 | void setFrom( const QString&a ) { from = a; } | 43 | void setFrom( const QString&a ) { from = a; } |
43 | const QString&getSubject()const { return subject; } | 44 | const QString&getSubject()const { return subject; } |
44 | void setSubject( const QString&s ) { subject = s; } | 45 | void setSubject( const QString&s ) { subject = s; } |
45 | const QString&getMbox()const{return mbox;} | 46 | const QString&getMbox()const{return mbox;} |
46 | void setMbox(const QString&box){mbox = box;} | 47 | void setMbox(const QString&box){mbox = box;} |
47 | void setMsgid(const QString&id){msg_id=id;} | 48 | void setMsgid(const QString&id){msg_id=id;} |
48 | const QString&Msgid()const{return msg_id;} | 49 | const QString&Msgid()const{return msg_id;} |
49 | void setReplyto(const QString&reply){replyto=reply;} | 50 | void setReplyto(const QString&reply){replyto=reply;} |
50 | const QString&Replyto()const{return replyto;} | 51 | const QString&Replyto()const{return replyto;} |
51 | void setMsgsize(int size){msg_size = size;} | 52 | void setMsgsize(int size){msg_size = size;} |
52 | const int Msgsize()const{return msg_size;} | 53 | const int Msgsize()const{return msg_size;} |
53 | 54 | ||
54 | 55 | ||
55 | void setTo(const QStringList&list); | 56 | void setTo(const QStringList&list); |
56 | const QStringList&To()const; | 57 | const QStringList&To()const; |
57 | void setCC(const QStringList&list); | 58 | void setCC(const QStringList&list); |
58 | const QStringList&CC()const; | 59 | const QStringList&CC()const; |
59 | void setBcc(const QStringList&list); | 60 | void setBcc(const QStringList&list); |
60 | const QStringList&Bcc()const; | 61 | const QStringList&Bcc()const; |
61 | const QBitArray&getFlags()const{return msg_flags;} | 62 | const QBitArray&getFlags()const{return msg_flags;} |
62 | void setFlags(const QBitArray&flags){msg_flags = flags;} | 63 | void setFlags(const QBitArray&flags){msg_flags = flags;} |
64 | |||
65 | void setWrapper(AbstractMail*wrapper); | ||
66 | AbstractMail* Wrapper(); | ||
63 | 67 | ||
64 | protected: | 68 | protected: |
65 | QString subject,date,from,mbox,msg_id,replyto; | 69 | QString subject,date,from,mbox,msg_id,replyto; |
66 | int msg_number,msg_size; | 70 | int msg_number,msg_size; |
67 | QBitArray msg_flags; | 71 | QBitArray msg_flags; |
68 | QStringList to,cc,bcc; | 72 | QStringList to,cc,bcc; |
73 | AbstractMail*wrapper; | ||
69 | void init(); | 74 | void init(); |
70 | void copy_old(const RecMail&old); | 75 | void copy_old(const RecMail&old); |
71 | }; | 76 | }; |
72 | 77 | ||
73 | typedef QMap<QString,QString> part_plist_t; | 78 | typedef QMap<QString,QString> part_plist_t; |
74 | 79 | ||
75 | class RecPart | 80 | class RecPart |
76 | { | 81 | { |
77 | protected: | 82 | protected: |
78 | QString m_type,m_subtype,m_identifier,m_encoding; | 83 | QString m_type,m_subtype,m_identifier,m_encoding; |
79 | unsigned int m_lines,m_size; | 84 | unsigned int m_lines,m_size; |
80 | part_plist_t m_Parameters; | 85 | part_plist_t m_Parameters; |
81 | /* describes the position in the mail */ | 86 | /* describes the position in the mail */ |
82 | QValueList<int> m_poslist; | 87 | QValueList<int> m_poslist; |
83 | 88 | ||
84 | public: | 89 | public: |
85 | RecPart(); | 90 | RecPart(); |
86 | virtual ~RecPart(); | 91 | virtual ~RecPart(); |
87 | 92 | ||
88 | const QString&Type()const; | 93 | const QString&Type()const; |
89 | void setType(const QString&type); | 94 | void setType(const QString&type); |
90 | const QString&Subtype()const; | 95 | const QString&Subtype()const; |
91 | void setSubtype(const QString&subtype); | 96 | void setSubtype(const QString&subtype); |
92 | const QString&Identifier()const; | 97 | const QString&Identifier()const; |
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp index 49c3b7a..903ef4d 100644 --- a/noncore/net/mail/pop3wrapper.cpp +++ b/noncore/net/mail/pop3wrapper.cpp | |||
@@ -60,48 +60,49 @@ RecBody POP3wrapper::parseBody( const char *message ) | |||
60 | } | 60 | } |
61 | 61 | ||
62 | void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | 62 | void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) |
63 | { | 63 | { |
64 | int err = MAILPOP3_NO_ERROR; | 64 | int err = MAILPOP3_NO_ERROR; |
65 | char *header; | 65 | char *header; |
66 | size_t length; | 66 | size_t length; |
67 | carray *messages; | 67 | carray *messages; |
68 | 68 | ||
69 | login(); | 69 | login(); |
70 | if (!m_pop3) return; | 70 | if (!m_pop3) return; |
71 | mailpop3_list( m_pop3, &messages ); | 71 | mailpop3_list( m_pop3, &messages ); |
72 | 72 | ||
73 | for ( int i = carray_count( messages ); i > 0; i-- ) { | 73 | for ( int i = carray_count( messages ); i > 0; i-- ) { |
74 | mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); | 74 | mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); |
75 | 75 | ||
76 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); | 76 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); |
77 | if ( err != MAILPOP3_NO_ERROR ) { | 77 | if ( err != MAILPOP3_NO_ERROR ) { |
78 | qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); | 78 | qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); |
79 | logout(); | 79 | logout(); |
80 | return; | 80 | return; |
81 | } | 81 | } |
82 | RecMail *mail = parseHeader( header ); | 82 | RecMail *mail = parseHeader( header ); |
83 | mail->setNumber( info->msg_index ); | 83 | mail->setNumber( info->msg_index ); |
84 | mail->setWrapper(this); | ||
84 | target.append( mail ); | 85 | target.append( mail ); |
85 | } | 86 | } |
86 | 87 | ||
87 | logout(); | 88 | logout(); |
88 | } | 89 | } |
89 | 90 | ||
90 | RecMail *POP3wrapper::parseHeader( const char *header ) | 91 | RecMail *POP3wrapper::parseHeader( const char *header ) |
91 | { | 92 | { |
92 | int err = MAILIMF_NO_ERROR; | 93 | int err = MAILIMF_NO_ERROR; |
93 | size_t curTok; | 94 | size_t curTok; |
94 | RecMail *mail = new RecMail(); | 95 | RecMail *mail = new RecMail(); |
95 | mailimf_fields *fields; | 96 | mailimf_fields *fields; |
96 | 97 | ||
97 | err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); | 98 | err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); |
98 | for ( clistiter *current = clist_begin( fields->fld_list ); current != NULL; current = current->next ) { | 99 | for ( clistiter *current = clist_begin( fields->fld_list ); current != NULL; current = current->next ) { |
99 | mailimf_field *field = (mailimf_field *) current->data; | 100 | mailimf_field *field = (mailimf_field *) current->data; |
100 | switch ( field->fld_type ) { | 101 | switch ( field->fld_type ) { |
101 | case MAILIMF_FIELD_FROM: | 102 | case MAILIMF_FIELD_FROM: |
102 | mail->setFrom( parseMailboxList( field->fld_data.fld_from->frm_mb_list ) ); | 103 | mail->setFrom( parseMailboxList( field->fld_data.fld_from->frm_mb_list ) ); |
103 | break; | 104 | break; |
104 | case MAILIMF_FIELD_TO: | 105 | case MAILIMF_FIELD_TO: |
105 | mail->setTo( parseAddressList( field->fld_data.fld_to->to_addr_list ) ); | 106 | mail->setTo( parseAddressList( field->fld_data.fld_to->to_addr_list ) ); |
106 | break; | 107 | break; |
107 | case MAILIMF_FIELD_CC: | 108 | case MAILIMF_FIELD_CC: |