author | alwin <alwin> | 2003-12-13 20:39:07 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-13 20:39:07 (UTC) |
commit | 85444223acfafd9d7955032b2cbdad3279ba27ad (patch) (unidiff) | |
tree | 444063490a58ffc7ca085219827a577ad6213442 | |
parent | d161cb46c21ae6a9e9f74dc60fb6ac6ac8e62f1b (diff) | |
download | opie-85444223acfafd9d7955032b2cbdad3279ba27ad.zip opie-85444223acfafd9d7955032b2cbdad3279ba27ad.tar.gz opie-85444223acfafd9d7955032b2cbdad3279ba27ad.tar.bz2 |
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
-rw-r--r-- | noncore/net/mail/abstractmail.cpp | 13 | ||||
-rw-r--r-- | noncore/net/mail/abstractmail.h | 30 | ||||
-rw-r--r-- | noncore/net/mail/accountview.cpp | 16 | ||||
-rw-r--r-- | noncore/net/mail/accountview.h | 15 | ||||
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 5 | ||||
-rw-r--r-- | noncore/net/mail/imapwrapper.h | 17 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.cpp | 13 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.h | 30 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 5 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.h | 17 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 21 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.h | 11 | ||||
-rw-r--r-- | noncore/net/mail/mail.pro | 6 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.h | 1 | ||||
-rw-r--r-- | noncore/net/mail/opiemail.h | 4 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.cpp | 21 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.h | 11 |
17 files changed, 180 insertions, 56 deletions
diff --git a/noncore/net/mail/abstractmail.cpp b/noncore/net/mail/abstractmail.cpp new file mode 100644 index 0000000..7380c31 --- a/dev/null +++ b/noncore/net/mail/abstractmail.cpp | |||
@@ -0,0 +1,13 @@ | |||
1 | #include "abstractmail.h" | ||
2 | #include "imapwrapper.h" | ||
3 | #include "pop3wrapper.h" | ||
4 | |||
5 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) | ||
6 | { | ||
7 | return new IMAPwrapper(a); | ||
8 | } | ||
9 | |||
10 | AbstractMail* AbstractMail::getWrapper(POP3account *a) | ||
11 | { | ||
12 | return new POP3wrapper(a); | ||
13 | } | ||
diff --git a/noncore/net/mail/abstractmail.h b/noncore/net/mail/abstractmail.h new file mode 100644 index 0000000..bc8938f --- a/dev/null +++ b/noncore/net/mail/abstractmail.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef __abstract_mail_ | ||
2 | #define __abstract_mail_ | ||
3 | |||
4 | #include <qobject.h> | ||
5 | #include "settings.h" | ||
6 | |||
7 | class RecMail; | ||
8 | class RecBody; | ||
9 | class RecPart; | ||
10 | class IMAPwrapper; | ||
11 | class POP3wrapper; | ||
12 | class Folder; | ||
13 | |||
14 | class AbstractMail:public QObject | ||
15 | { | ||
16 | Q_OBJECT | ||
17 | public: | ||
18 | AbstractMail(){}; | ||
19 | virtual ~AbstractMail(){} | ||
20 | virtual QList<Folder>* listFolders()=0; | ||
21 | virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; | ||
22 | virtual RecBody fetchBody(const RecMail&mail)=0; | ||
23 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false)=0; | ||
24 | virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0; | ||
25 | |||
26 | static AbstractMail* getWrapper(IMAPaccount *a); | ||
27 | static AbstractMail* getWrapper(POP3account *a); | ||
28 | }; | ||
29 | |||
30 | #endif | ||
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index c7b1eeb..1069b9f 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp | |||
@@ -1,106 +1,104 @@ | |||
1 | #include "accountview.h" | 1 | #include "accountview.h" |
2 | #include "imapwrapper.h" | ||
3 | #include "pop3wrapper.h" | ||
4 | #include "mailtypes.h" | 2 | #include "mailtypes.h" |
5 | #include "defines.h" | 3 | #include "defines.h" |
6 | 4 | ||
7 | 5 | ||
8 | /** | 6 | /** |
9 | * POP3 Account stuff | 7 | * POP3 Account stuff |
10 | */ | 8 | */ |
11 | 9 | ||
12 | POP3viewItem::POP3viewItem( POP3account *a, QListView *parent ) | 10 | POP3viewItem::POP3viewItem( POP3account *a, QListView *parent ) |
13 | : AccountViewItem( parent ) | 11 | : AccountViewItem( parent ) |
14 | { | 12 | { |
15 | account = a; | 13 | account = a; |
16 | wrapper = new POP3wrapper( account ); | 14 | wrapper = AbstractMail::getWrapper( account ); |
17 | setPixmap( 0, PIXMAP_POP3FOLDER ); | 15 | setPixmap( 0, PIXMAP_POP3FOLDER ); |
18 | setText( 0, account->getAccountName() ); | 16 | setText( 0, account->getAccountName() ); |
19 | } | 17 | } |
20 | 18 | ||
21 | POP3viewItem::~POP3viewItem() | 19 | POP3viewItem::~POP3viewItem() |
22 | { | 20 | { |
23 | delete wrapper; | 21 | delete wrapper; |
24 | } | 22 | } |
25 | 23 | ||
26 | void POP3viewItem::refresh( QList<RecMail> &target ) | 24 | void POP3viewItem::refresh( QList<RecMail> &target ) |
27 | { | 25 | { |
28 | qDebug( "POP3: refresh" ); | 26 | qDebug( "POP3: refresh" ); |
29 | wrapper->listMessages( target ); | 27 | wrapper->listMessages("INBOX", target ); |
30 | } | 28 | } |
31 | 29 | ||
32 | 30 | ||
33 | RecBody POP3viewItem::fetchBody( const RecMail &mail ) | 31 | RecBody POP3viewItem::fetchBody( const RecMail &mail ) |
34 | { | 32 | { |
35 | qDebug( "POP3 fetchBody" ); | 33 | qDebug( "POP3 fetchBody" ); |
36 | return wrapper->fetchBody( mail ); | 34 | return wrapper->fetchBody( mail ); |
37 | } | 35 | } |
38 | 36 | ||
39 | /** | 37 | /** |
40 | * IMAP Account stuff | 38 | * IMAP Account stuff |
41 | */ | 39 | */ |
42 | 40 | ||
43 | IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent ) | 41 | IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent ) |
44 | : AccountViewItem( parent ) | 42 | : AccountViewItem( parent ) |
45 | { | 43 | { |
46 | account = a; | 44 | account = a; |
47 | wrapper = new IMAPwrapper( account ); | 45 | wrapper = AbstractMail::getWrapper( account ); |
48 | setPixmap( 0, PIXMAP_IMAPFOLDER ); | 46 | setPixmap( 0, PIXMAP_IMAPFOLDER ); |
49 | setText( 0, account->getAccountName() ); | 47 | setText( 0, account->getAccountName() ); |
50 | setOpen( true ); | 48 | setOpen( true ); |
51 | } | 49 | } |
52 | 50 | ||
53 | IMAPviewItem::~IMAPviewItem() | 51 | IMAPviewItem::~IMAPviewItem() |
54 | { | 52 | { |
55 | delete wrapper; | 53 | delete wrapper; |
56 | } | 54 | } |
57 | 55 | ||
58 | IMAPwrapper *IMAPviewItem::getWrapper() | 56 | AbstractMail *IMAPviewItem::getWrapper() |
59 | { | 57 | { |
60 | return wrapper; | 58 | return wrapper; |
61 | } | 59 | } |
62 | 60 | ||
63 | void IMAPviewItem::refresh(QList<RecMail>&) | 61 | void IMAPviewItem::refresh(QList<RecMail>&) |
64 | { | 62 | { |
65 | QList<IMAPFolder> *folders = wrapper->listFolders(); | 63 | QList<Folder> *folders = wrapper->listFolders(); |
66 | 64 | ||
67 | QListViewItem *child = firstChild(); | 65 | QListViewItem *child = firstChild(); |
68 | while ( child ) { | 66 | while ( child ) { |
69 | QListViewItem *tmp = child; | 67 | QListViewItem *tmp = child; |
70 | child = child->nextSibling(); | 68 | child = child->nextSibling(); |
71 | delete tmp; | 69 | delete tmp; |
72 | } | 70 | } |
73 | 71 | ||
74 | IMAPFolder *it; | 72 | Folder *it; |
75 | for ( it = folders->first(); it; it = folders->next() ) { | 73 | for ( it = folders->first(); it; it = folders->next() ) { |
76 | (void) new IMAPfolderItem( it, this ); | 74 | (void) new IMAPfolderItem( it, this ); |
77 | } | 75 | } |
78 | } | 76 | } |
79 | 77 | ||
80 | RecBody IMAPviewItem::fetchBody(const RecMail&) | 78 | RecBody IMAPviewItem::fetchBody(const RecMail&) |
81 | { | 79 | { |
82 | return RecBody(); | 80 | return RecBody(); |
83 | } | 81 | } |
84 | 82 | ||
85 | IMAPfolderItem::~IMAPfolderItem() | 83 | IMAPfolderItem::~IMAPfolderItem() |
86 | { | 84 | { |
87 | delete folder; | 85 | delete folder; |
88 | } | 86 | } |
89 | 87 | ||
90 | IMAPfolderItem::IMAPfolderItem( IMAPFolder *folderInit, IMAPviewItem *parent ) | 88 | IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent ) |
91 | : AccountViewItem( parent ) | 89 | : AccountViewItem( parent ) |
92 | { | 90 | { |
93 | folder = folderInit; | 91 | folder = folderInit; |
94 | imap = parent; | 92 | imap = parent; |
95 | setPixmap( 0, PIXMAP_IMAPFOLDER ); | 93 | setPixmap( 0, PIXMAP_IMAPFOLDER ); |
96 | setText( 0, folder->getDisplayName() ); | 94 | setText( 0, folder->getDisplayName() ); |
97 | } | 95 | } |
98 | 96 | ||
99 | void IMAPfolderItem::refresh(QList<RecMail>&target) | 97 | void IMAPfolderItem::refresh(QList<RecMail>&target) |
100 | { | 98 | { |
101 | imap->getWrapper()->listMessages( folder->getName(),target ); | 99 | imap->getWrapper()->listMessages( folder->getName(),target ); |
102 | } | 100 | } |
103 | 101 | ||
104 | RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) | 102 | RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) |
105 | { | 103 | { |
106 | return imap->getWrapper()->fetchBody(aMail); | 104 | return imap->getWrapper()->fetchBody(aMail); |
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h index 4cac673..83d49af 100644 --- a/noncore/net/mail/accountview.h +++ b/noncore/net/mail/accountview.h | |||
@@ -1,82 +1,79 @@ | |||
1 | #ifndef ACCOUNTVIEW_H | 1 | #ifndef ACCOUNTVIEW_H |
2 | #define ACCOUNTVIEW_H | 2 | #define ACCOUNTVIEW_H |
3 | 3 | ||
4 | #include <qlistview.h> | 4 | #include <qlistview.h> |
5 | #include <qlist.h> | 5 | #include <qlist.h> |
6 | 6 | ||
7 | #include "settings.h" | 7 | #include "settings.h" |
8 | #include "mailwrapper.h" | 8 | #include "mailwrapper.h" |
9 | #include "abstractmail.h" | ||
9 | 10 | ||
10 | class IMAPwrapper; | ||
11 | class POP3wrapper; | 11 | class POP3wrapper; |
12 | class RecMail; | 12 | class RecMail; |
13 | class RecBody; | 13 | class RecBody; |
14 | 14 | ||
15 | class AccountViewItem : public QListViewItem | 15 | class AccountViewItem : public QListViewItem |
16 | { | 16 | { |
17 | 17 | ||
18 | public: | 18 | public: |
19 | AccountViewItem( QListView *parent ) : QListViewItem( parent ) {} | 19 | AccountViewItem( QListView *parent ) : QListViewItem( parent ) {} |
20 | AccountViewItem( QListViewItem *parent ) : QListViewItem( parent ) {} | 20 | AccountViewItem( QListViewItem *parent ) : QListViewItem( parent ) {} |
21 | virtual void refresh(QList<RecMail>&)=0; | 21 | virtual void refresh(QList<RecMail>&)=0; |
22 | virtual RecBody fetchBody(const RecMail&)=0; | 22 | virtual RecBody fetchBody(const RecMail&)=0; |
23 | }; | 23 | }; |
24 | 24 | ||
25 | class POP3viewItem : public AccountViewItem | 25 | class POP3viewItem : public AccountViewItem |
26 | { | 26 | { |
27 | 27 | ||
28 | public: | 28 | public: |
29 | POP3viewItem( POP3account *a, QListView *parent ); | 29 | POP3viewItem( POP3account *a, QListView *parent ); |
30 | ~POP3viewItem(); | 30 | ~POP3viewItem(); |
31 | virtual void refresh( QList<RecMail> &target ); | 31 | virtual void refresh( QList<RecMail> &target ); |
32 | virtual RecBody fetchBody( const RecMail &mail ); | 32 | virtual RecBody fetchBody( const RecMail &mail ); |
33 | 33 | ||
34 | private: | 34 | private: |
35 | POP3account *account; | 35 | POP3account *account; |
36 | POP3wrapper *wrapper; | 36 | AbstractMail *wrapper; |
37 | 37 | ||
38 | }; | 38 | }; |
39 | 39 | ||
40 | class IMAPviewItem : public AccountViewItem | 40 | class IMAPviewItem : public AccountViewItem |
41 | { | 41 | { |
42 | 42 | ||
43 | public: | 43 | public: |
44 | IMAPviewItem( IMAPaccount *a, QListView *parent ); | 44 | IMAPviewItem( IMAPaccount *a, QListView *parent ); |
45 | ~IMAPviewItem(); | 45 | ~IMAPviewItem(); |
46 | virtual void refresh(QList<RecMail>&); | 46 | virtual void refresh(QList<RecMail>&); |
47 | virtual RecBody fetchBody(const RecMail&); | 47 | virtual RecBody fetchBody(const RecMail&); |
48 | IMAPwrapper *getWrapper(); | 48 | AbstractMail *getWrapper(); |
49 | |||
50 | private: | 49 | private: |
51 | IMAPaccount *account; | 50 | IMAPaccount *account; |
52 | IMAPwrapper *wrapper; | 51 | AbstractMail *wrapper; |
53 | |||
54 | }; | 52 | }; |
55 | 53 | ||
56 | class IMAPfolderItem : public AccountViewItem | 54 | class IMAPfolderItem : public AccountViewItem |
57 | { | 55 | { |
58 | 56 | ||
59 | public: | 57 | public: |
60 | IMAPfolderItem( IMAPFolder *folder, IMAPviewItem *parent ); | 58 | IMAPfolderItem( Folder *folder, IMAPviewItem *parent ); |
61 | ~IMAPfolderItem(); | 59 | ~IMAPfolderItem(); |
62 | virtual void refresh(QList<RecMail>&); | 60 | virtual void refresh(QList<RecMail>&); |
63 | virtual RecBody fetchBody(const RecMail&); | 61 | virtual RecBody fetchBody(const RecMail&); |
64 | |||
65 | private: | 62 | private: |
66 | IMAPFolder *folder; | 63 | Folder *folder; |
67 | IMAPviewItem *imap; | 64 | IMAPviewItem *imap; |
68 | 65 | ||
69 | }; | 66 | }; |
70 | 67 | ||
71 | class AccountView : public QListView | 68 | class AccountView : public QListView |
72 | { | 69 | { |
73 | Q_OBJECT | 70 | Q_OBJECT |
74 | 71 | ||
75 | public: | 72 | public: |
76 | AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); | 73 | AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); |
77 | void populate( QList<Account> list ); | 74 | void populate( QList<Account> list ); |
78 | RecBody fetchBody(const RecMail&aMail); | 75 | RecBody fetchBody(const RecMail&aMail); |
79 | 76 | ||
80 | public slots: | 77 | public slots: |
81 | void refreshAll(); | 78 | void refreshAll(); |
82 | void refresh(QListViewItem *item); | 79 | void refresh(QListViewItem *item); |
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp index 48e476b..e5eb335 100644 --- a/noncore/net/mail/imapwrapper.cpp +++ b/noncore/net/mail/imapwrapper.cpp | |||
@@ -1,24 +1,25 @@ | |||
1 | 1 | ||
2 | #include <stdlib.h> | 2 | #include <stdlib.h> |
3 | 3 | ||
4 | #include "imapwrapper.h" | 4 | #include "imapwrapper.h" |
5 | #include "mailtypes.h" | 5 | #include "mailtypes.h" |
6 | #include <libetpan/mailimap.h> | 6 | #include <libetpan/mailimap.h> |
7 | 7 | ||
8 | IMAPwrapper::IMAPwrapper( IMAPaccount *a ) | 8 | IMAPwrapper::IMAPwrapper( IMAPaccount *a ) |
9 | : AbstractMail() | ||
9 | { | 10 | { |
10 | account = a; | 11 | account = a; |
11 | m_imap = 0; | 12 | m_imap = 0; |
12 | } | 13 | } |
13 | 14 | ||
14 | IMAPwrapper::~IMAPwrapper() | 15 | IMAPwrapper::~IMAPwrapper() |
15 | { | 16 | { |
16 | logout(); | 17 | logout(); |
17 | } | 18 | } |
18 | 19 | ||
19 | void IMAPwrapper::imap_progress( size_t current, size_t maximum ) | 20 | void IMAPwrapper::imap_progress( size_t current, size_t maximum ) |
20 | { | 21 | { |
21 | qDebug( "IMAP: %i of %i", current, maximum ); | 22 | qDebug( "IMAP: %i of %i", current, maximum ); |
22 | } | 23 | } |
23 | 24 | ||
24 | void IMAPwrapper::login() | 25 | void IMAPwrapper::login() |
@@ -126,40 +127,40 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) | |||
126 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { | 127 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { |
127 | ++i; | 128 | ++i; |
128 | msg_att = (mailimap_msg_att*)current->data; | 129 | msg_att = (mailimap_msg_att*)current->data; |
129 | RecMail*m = parse_list_result(msg_att); | 130 | RecMail*m = parse_list_result(msg_att); |
130 | if (m) { | 131 | if (m) { |
131 | m->setNumber(i); | 132 | m->setNumber(i); |
132 | m->setMbox(mailbox); | 133 | m->setMbox(mailbox); |
133 | target.append(m); | 134 | target.append(m); |
134 | } | 135 | } |
135 | } | 136 | } |
136 | } else { | 137 | } else { |
137 | qDebug("Error fetching headers: %s",m_imap->imap_response); | 138 | qDebug("Error fetching headers: %s",m_imap->imap_response); |
138 | } | 139 | } |
139 | mailimap_fetch_list_free(result); | 140 | mailimap_fetch_list_free(result); |
140 | } | 141 | } |
141 | 142 | ||
142 | QList<IMAPFolder>* IMAPwrapper::listFolders() | 143 | QList<Folder>* IMAPwrapper::listFolders() |
143 | { | 144 | { |
144 | const char *path, *mask; | 145 | const char *path, *mask; |
145 | int err = MAILIMAP_NO_ERROR; | 146 | int err = MAILIMAP_NO_ERROR; |
146 | clist *result; | 147 | clist *result; |
147 | clistcell *current; | 148 | clistcell *current; |
148 | 149 | ||
149 | QList<IMAPFolder> * folders = new QList<IMAPFolder>(); | 150 | QList<Folder> * folders = new QList<Folder>(); |
150 | folders->setAutoDelete( true ); | 151 | folders->setAutoDelete( true ); |
151 | login(); | 152 | login(); |
152 | if (!m_imap) { | 153 | if (!m_imap) { |
153 | return folders; | 154 | return folders; |
154 | } | 155 | } |
155 | 156 | ||
156 | /* | 157 | /* |
157 | * First we have to check for INBOX 'cause it sometimes it's not inside the path. | 158 | * First we have to check for INBOX 'cause it sometimes it's not inside the path. |
158 | * We must not forget to filter them out in next loop! | 159 | * We must not forget to filter them out in next loop! |
159 | * it seems like ugly code. and yes - it is ugly code. but the best way. | 160 | * it seems like ugly code. and yes - it is ugly code. but the best way. |
160 | */ | 161 | */ |
161 | QString temp; | 162 | QString temp; |
162 | mask = "INBOX" ; | 163 | mask = "INBOX" ; |
163 | result = clist_new(); | 164 | result = clist_new(); |
164 | mailimap_mailbox_list *list; | 165 | mailimap_mailbox_list *list; |
165 | err = mailimap_list( m_imap, (char*)"", (char*)mask, &result ); | 166 | err = mailimap_list( m_imap, (char*)"", (char*)mask, &result ); |
diff --git a/noncore/net/mail/imapwrapper.h b/noncore/net/mail/imapwrapper.h index 95de215..f88457a 100644 --- a/noncore/net/mail/imapwrapper.h +++ b/noncore/net/mail/imapwrapper.h | |||
@@ -1,46 +1,43 @@ | |||
1 | #ifndef __IMAPWRAPPER | 1 | #ifndef __IMAPWRAPPER |
2 | #define __IMAPWRAPPER | 2 | #define __IMAPWRAPPER |
3 | 3 | ||
4 | #include <qlist.h> | 4 | #include <qlist.h> |
5 | #include "mailwrapper.h" | 5 | #include "mailwrapper.h" |
6 | #include "abstractmail.h" | ||
6 | 7 | ||
7 | struct mailimap; | 8 | struct mailimap; |
8 | struct mailimap_body_type_1part; | 9 | struct mailimap_body_type_1part; |
9 | struct mailimap_body_type_text; | 10 | struct mailimap_body_type_text; |
10 | struct mailimap_body_type_basic; | 11 | struct mailimap_body_type_basic; |
11 | struct mailimap_body_type_msg; | 12 | struct mailimap_body_type_msg; |
12 | struct mailimap_body_type_mpart; | 13 | struct mailimap_body_type_mpart; |
13 | struct mailimap_body_fields; | 14 | struct mailimap_body_fields; |
14 | struct mailimap_msg_att; | 15 | struct mailimap_msg_att; |
15 | class RecMail; | ||
16 | class RecBody; | ||
17 | class RecPart; | ||
18 | 16 | ||
19 | class IMAPwrapper : public QObject | 17 | class IMAPwrapper : public AbstractMail |
20 | { | 18 | { |
21 | Q_OBJECT | 19 | Q_OBJECT |
22 | |||
23 | public: | 20 | public: |
24 | IMAPwrapper( IMAPaccount *a ); | 21 | IMAPwrapper( IMAPaccount *a ); |
25 | virtual ~IMAPwrapper(); | 22 | virtual ~IMAPwrapper(); |
26 | QList<IMAPFolder>* listFolders(); | 23 | virtual QList<Folder>* listFolders(); |
27 | void listMessages(const QString & mailbox,QList<RecMail>&target ); | 24 | virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); |
28 | RecBody fetchBody(const RecMail&mail); | 25 | virtual RecBody fetchBody(const RecMail&mail); |
29 | QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); | 26 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); |
30 | QString fetchPart(const RecMail&mail,const RecPart&part); | 27 | virtual QString fetchPart(const RecMail&mail,const RecPart&part); |
31 | static void imap_progress( size_t current, size_t maximum ); | 28 | static void imap_progress( size_t current, size_t maximum ); |
32 | 29 | ||
33 | protected: | 30 | protected: |
34 | RecMail*parse_list_result(mailimap_msg_att*); | 31 | RecMail*parse_list_result(mailimap_msg_att*); |
35 | void login(); | 32 | void login(); |
36 | void logout(); | 33 | void logout(); |
37 | 34 | ||
38 | void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body); | 35 | void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body); |
39 | void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>()); | 36 | void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>()); |
40 | 37 | ||
41 | void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); | 38 | void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); |
42 | void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); | 39 | void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); |
43 | void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); | 40 | void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); |
44 | void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); | 41 | void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); |
45 | 42 | ||
46 | /* just helpers */ | 43 | /* just helpers */ |
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 @@ | |||
1 | #include "abstractmail.h" | ||
2 | #include "imapwrapper.h" | ||
3 | #include "pop3wrapper.h" | ||
4 | |||
5 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) | ||
6 | { | ||
7 | return new IMAPwrapper(a); | ||
8 | } | ||
9 | |||
10 | AbstractMail* AbstractMail::getWrapper(POP3account *a) | ||
11 | { | ||
12 | return new POP3wrapper(a); | ||
13 | } | ||
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 @@ | |||
1 | #ifndef __abstract_mail_ | ||
2 | #define __abstract_mail_ | ||
3 | |||
4 | #include <qobject.h> | ||
5 | #include "settings.h" | ||
6 | |||
7 | class RecMail; | ||
8 | class RecBody; | ||
9 | class RecPart; | ||
10 | class IMAPwrapper; | ||
11 | class POP3wrapper; | ||
12 | class Folder; | ||
13 | |||
14 | class AbstractMail:public QObject | ||
15 | { | ||
16 | Q_OBJECT | ||
17 | public: | ||
18 | AbstractMail(){}; | ||
19 | virtual ~AbstractMail(){} | ||
20 | virtual QList<Folder>* listFolders()=0; | ||
21 | virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; | ||
22 | virtual RecBody fetchBody(const RecMail&mail)=0; | ||
23 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false)=0; | ||
24 | virtual QString fetchPart(const RecMail&mail,const RecPart&part)=0; | ||
25 | |||
26 | static AbstractMail* getWrapper(IMAPaccount *a); | ||
27 | static AbstractMail* getWrapper(POP3account *a); | ||
28 | }; | ||
29 | |||
30 | #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 | |||
@@ -1,24 +1,25 @@ | |||
1 | 1 | ||
2 | #include <stdlib.h> | 2 | #include <stdlib.h> |
3 | 3 | ||
4 | #include "imapwrapper.h" | 4 | #include "imapwrapper.h" |
5 | #include "mailtypes.h" | 5 | #include "mailtypes.h" |
6 | #include <libetpan/mailimap.h> | 6 | #include <libetpan/mailimap.h> |
7 | 7 | ||
8 | IMAPwrapper::IMAPwrapper( IMAPaccount *a ) | 8 | IMAPwrapper::IMAPwrapper( IMAPaccount *a ) |
9 | : AbstractMail() | ||
9 | { | 10 | { |
10 | account = a; | 11 | account = a; |
11 | m_imap = 0; | 12 | m_imap = 0; |
12 | } | 13 | } |
13 | 14 | ||
14 | IMAPwrapper::~IMAPwrapper() | 15 | IMAPwrapper::~IMAPwrapper() |
15 | { | 16 | { |
16 | logout(); | 17 | logout(); |
17 | } | 18 | } |
18 | 19 | ||
19 | void IMAPwrapper::imap_progress( size_t current, size_t maximum ) | 20 | void IMAPwrapper::imap_progress( size_t current, size_t maximum ) |
20 | { | 21 | { |
21 | qDebug( "IMAP: %i of %i", current, maximum ); | 22 | qDebug( "IMAP: %i of %i", current, maximum ); |
22 | } | 23 | } |
23 | 24 | ||
24 | void IMAPwrapper::login() | 25 | void IMAPwrapper::login() |
@@ -126,40 +127,40 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) | |||
126 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { | 127 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { |
127 | ++i; | 128 | ++i; |
128 | msg_att = (mailimap_msg_att*)current->data; | 129 | msg_att = (mailimap_msg_att*)current->data; |
129 | RecMail*m = parse_list_result(msg_att); | 130 | RecMail*m = parse_list_result(msg_att); |
130 | if (m) { | 131 | if (m) { |
131 | m->setNumber(i); | 132 | m->setNumber(i); |
132 | m->setMbox(mailbox); | 133 | m->setMbox(mailbox); |
133 | target.append(m); | 134 | target.append(m); |
134 | } | 135 | } |
135 | } | 136 | } |
136 | } else { | 137 | } else { |
137 | qDebug("Error fetching headers: %s",m_imap->imap_response); | 138 | qDebug("Error fetching headers: %s",m_imap->imap_response); |
138 | } | 139 | } |
139 | mailimap_fetch_list_free(result); | 140 | mailimap_fetch_list_free(result); |
140 | } | 141 | } |
141 | 142 | ||
142 | QList<IMAPFolder>* IMAPwrapper::listFolders() | 143 | QList<Folder>* IMAPwrapper::listFolders() |
143 | { | 144 | { |
144 | const char *path, *mask; | 145 | const char *path, *mask; |
145 | int err = MAILIMAP_NO_ERROR; | 146 | int err = MAILIMAP_NO_ERROR; |
146 | clist *result; | 147 | clist *result; |
147 | clistcell *current; | 148 | clistcell *current; |
148 | 149 | ||
149 | QList<IMAPFolder> * folders = new QList<IMAPFolder>(); | 150 | QList<Folder> * folders = new QList<Folder>(); |
150 | folders->setAutoDelete( true ); | 151 | folders->setAutoDelete( true ); |
151 | login(); | 152 | login(); |
152 | if (!m_imap) { | 153 | if (!m_imap) { |
153 | return folders; | 154 | return folders; |
154 | } | 155 | } |
155 | 156 | ||
156 | /* | 157 | /* |
157 | * First we have to check for INBOX 'cause it sometimes it's not inside the path. | 158 | * First we have to check for INBOX 'cause it sometimes it's not inside the path. |
158 | * We must not forget to filter them out in next loop! | 159 | * We must not forget to filter them out in next loop! |
159 | * it seems like ugly code. and yes - it is ugly code. but the best way. | 160 | * it seems like ugly code. and yes - it is ugly code. but the best way. |
160 | */ | 161 | */ |
161 | QString temp; | 162 | QString temp; |
162 | mask = "INBOX" ; | 163 | mask = "INBOX" ; |
163 | result = clist_new(); | 164 | result = clist_new(); |
164 | mailimap_mailbox_list *list; | 165 | mailimap_mailbox_list *list; |
165 | err = mailimap_list( m_imap, (char*)"", (char*)mask, &result ); | 166 | err = mailimap_list( m_imap, (char*)"", (char*)mask, &result ); |
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 | |||
@@ -1,46 +1,43 @@ | |||
1 | #ifndef __IMAPWRAPPER | 1 | #ifndef __IMAPWRAPPER |
2 | #define __IMAPWRAPPER | 2 | #define __IMAPWRAPPER |
3 | 3 | ||
4 | #include <qlist.h> | 4 | #include <qlist.h> |
5 | #include "mailwrapper.h" | 5 | #include "mailwrapper.h" |
6 | #include "abstractmail.h" | ||
6 | 7 | ||
7 | struct mailimap; | 8 | struct mailimap; |
8 | struct mailimap_body_type_1part; | 9 | struct mailimap_body_type_1part; |
9 | struct mailimap_body_type_text; | 10 | struct mailimap_body_type_text; |
10 | struct mailimap_body_type_basic; | 11 | struct mailimap_body_type_basic; |
11 | struct mailimap_body_type_msg; | 12 | struct mailimap_body_type_msg; |
12 | struct mailimap_body_type_mpart; | 13 | struct mailimap_body_type_mpart; |
13 | struct mailimap_body_fields; | 14 | struct mailimap_body_fields; |
14 | struct mailimap_msg_att; | 15 | struct mailimap_msg_att; |
15 | class RecMail; | ||
16 | class RecBody; | ||
17 | class RecPart; | ||
18 | 16 | ||
19 | class IMAPwrapper : public QObject | 17 | class IMAPwrapper : public AbstractMail |
20 | { | 18 | { |
21 | Q_OBJECT | 19 | Q_OBJECT |
22 | |||
23 | public: | 20 | public: |
24 | IMAPwrapper( IMAPaccount *a ); | 21 | IMAPwrapper( IMAPaccount *a ); |
25 | virtual ~IMAPwrapper(); | 22 | virtual ~IMAPwrapper(); |
26 | QList<IMAPFolder>* listFolders(); | 23 | virtual QList<Folder>* listFolders(); |
27 | void listMessages(const QString & mailbox,QList<RecMail>&target ); | 24 | virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); |
28 | RecBody fetchBody(const RecMail&mail); | 25 | virtual RecBody fetchBody(const RecMail&mail); |
29 | QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); | 26 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); |
30 | QString fetchPart(const RecMail&mail,const RecPart&part); | 27 | virtual QString fetchPart(const RecMail&mail,const RecPart&part); |
31 | static void imap_progress( size_t current, size_t maximum ); | 28 | static void imap_progress( size_t current, size_t maximum ); |
32 | 29 | ||
33 | protected: | 30 | protected: |
34 | RecMail*parse_list_result(mailimap_msg_att*); | 31 | RecMail*parse_list_result(mailimap_msg_att*); |
35 | void login(); | 32 | void login(); |
36 | void logout(); | 33 | void logout(); |
37 | 34 | ||
38 | void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body); | 35 | void searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body); |
39 | void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>()); | 36 | void searchBodyText(const RecMail&mail,mailimap_body_type_mpart*mailDescription,RecBody&target_body,int current_recursion=0,QValueList<int>recList=QValueList<int>()); |
40 | 37 | ||
41 | void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); | 38 | void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); |
42 | void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); | 39 | void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); |
43 | void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); | 40 | void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); |
44 | void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); | 41 | void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); |
45 | 42 | ||
46 | /* just helpers */ | 43 | /* just helpers */ |
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 | |||
@@ -46,33 +46,33 @@ RecBody POP3wrapper::parseBody( const char *message ) | |||
46 | size_t curTok; | 46 | size_t curTok; |
47 | mailimf_message *result; | 47 | mailimf_message *result; |
48 | RecBody body; | 48 | RecBody body; |
49 | 49 | ||
50 | err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); | 50 | err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); |
51 | if ( err != MAILIMF_NO_ERROR ) return body; | 51 | if ( err != MAILIMF_NO_ERROR ) return body; |
52 | 52 | ||
53 | if ( result && result->msg_body && result->msg_body->bd_text ) { | 53 | if ( result && result->msg_body && result->msg_body->bd_text ) { |
54 | qDebug( "POP3: bodytext found" ); | 54 | qDebug( "POP3: bodytext found" ); |
55 | // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. | 55 | // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. |
56 | body.setBodytext( QString( result->msg_body->bd_text ) ); | 56 | body.setBodytext( QString( result->msg_body->bd_text ) ); |
57 | } | 57 | } |
58 | 58 | ||
59 | return body; | 59 | return body; |
60 | } | 60 | } |
61 | 61 | ||
62 | void POP3wrapper::listMessages( 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 ); |
@@ -255,16 +255,35 @@ void POP3wrapper::login() | |||
255 | logout(); | 255 | logout(); |
256 | return; | 256 | return; |
257 | } | 257 | } |
258 | 258 | ||
259 | qDebug( "POP3: logged in!" ); | 259 | qDebug( "POP3: logged in!" ); |
260 | } | 260 | } |
261 | 261 | ||
262 | void POP3wrapper::logout() | 262 | void POP3wrapper::logout() |
263 | { | 263 | { |
264 | int err = MAILPOP3_NO_ERROR; | 264 | int err = MAILPOP3_NO_ERROR; |
265 | if ( m_pop3 == NULL ) return; | 265 | if ( m_pop3 == NULL ) return; |
266 | err = mailpop3_quit( m_pop3 ); | 266 | err = mailpop3_quit( m_pop3 ); |
267 | mailpop3_free( m_pop3 ); | 267 | mailpop3_free( m_pop3 ); |
268 | m_pop3 = NULL; | 268 | m_pop3 = NULL; |
269 | } | 269 | } |
270 | 270 | ||
271 | |||
272 | QList<Folder>* POP3wrapper::listFolders() | ||
273 | { | ||
274 | QList<Folder> * folders = new QList<Folder>(); | ||
275 | folders->setAutoDelete( true ); | ||
276 | Folder*inb=new Folder("INBOX"); | ||
277 | folders->append(inb); | ||
278 | return folders; | ||
279 | } | ||
280 | |||
281 | QString POP3wrapper::fetchPart(const RecMail&,const QValueList<int>&,bool) | ||
282 | { | ||
283 | return ""; | ||
284 | } | ||
285 | |||
286 | QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) | ||
287 | { | ||
288 | return ""; | ||
289 | } | ||
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 | |||
@@ -1,38 +1,43 @@ | |||
1 | #ifndef __POP3WRAPPER | 1 | #ifndef __POP3WRAPPER |
2 | #define __POP3WRAPPER | 2 | #define __POP3WRAPPER |
3 | 3 | ||
4 | #include "mailwrapper.h" | 4 | #include "mailwrapper.h" |
5 | #include "abstractmail.h" | ||
5 | 6 | ||
6 | class RecMail; | 7 | class RecMail; |
7 | class RecBody; | 8 | class RecBody; |
8 | struct mailpop3; | 9 | struct mailpop3; |
9 | 10 | ||
10 | class POP3wrapper : public QObject | 11 | class POP3wrapper : public AbstractMail |
11 | { | 12 | { |
12 | Q_OBJECT | 13 | Q_OBJECT |
13 | 14 | ||
14 | public: | 15 | public: |
15 | POP3wrapper( POP3account *a ); | 16 | POP3wrapper( POP3account *a ); |
16 | virtual ~POP3wrapper(); | 17 | virtual ~POP3wrapper(); |
17 | void listMessages( QList<RecMail> &target ); | 18 | /* mailbox will be ignored */ |
19 | virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); | ||
20 | virtual QList<Folder>* listFolders(); | ||
21 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); | ||
22 | virtual QString fetchPart(const RecMail&mail,const RecPart&part); | ||
23 | |||
18 | RecBody fetchBody( const RecMail &mail ); | 24 | RecBody fetchBody( const RecMail &mail ); |
19 | static void pop3_progress( size_t current, size_t maximum ); | 25 | static void pop3_progress( size_t current, size_t maximum ); |
20 | 26 | ||
21 | protected: | 27 | protected: |
22 | void login(); | 28 | void login(); |
23 | void logout(); | 29 | void logout(); |
24 | 30 | ||
25 | private: | 31 | private: |
26 | RecMail *parseHeader( const char *header ); | 32 | RecMail *parseHeader( const char *header ); |
27 | RecBody parseBody( const char *message ); | 33 | RecBody parseBody( const char *message ); |
28 | QString parseMailboxList( mailimf_mailbox_list *list ); | 34 | QString parseMailboxList( mailimf_mailbox_list *list ); |
29 | QString parseMailbox( mailimf_mailbox *box ); | 35 | QString parseMailbox( mailimf_mailbox *box ); |
30 | QString parseGroup( mailimf_group *group ); | 36 | QString parseGroup( mailimf_group *group ); |
31 | QString parseAddressList( mailimf_address_list *list ); | 37 | QString parseAddressList( mailimf_address_list *list ); |
32 | QString parseDateTime( mailimf_date_time *date ); | 38 | QString parseDateTime( mailimf_date_time *date ); |
33 | POP3account *account; | 39 | POP3account *account; |
34 | mailpop3 *m_pop3; | 40 | mailpop3 *m_pop3; |
35 | |||
36 | }; | 41 | }; |
37 | 42 | ||
38 | #endif | 43 | #endif |
diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro index 0e7cff6..e7519c6 100644 --- a/noncore/net/mail/mail.pro +++ b/noncore/net/mail/mail.pro | |||
@@ -1,49 +1,51 @@ | |||
1 | CONFIG += qt warn_on debug quick-app | 1 | CONFIG += qt warn_on debug quick-app |
2 | 2 | ||
3 | HEADERS = defines.h \ | 3 | HEADERS = defines.h \ |
4 | logindialog.h \ | 4 | logindialog.h \ |
5 | settings.h \ | 5 | settings.h \ |
6 | editaccounts.h \ | 6 | editaccounts.h \ |
7 | mailwrapper.h \ | 7 | mailwrapper.h \ |
8 | composemail.h \ | 8 | composemail.h \ |
9 | accountview.h \ | 9 | accountview.h \ |
10 | mainwindow.h \ | 10 | mainwindow.h \ |
11 | viewmail.h \ | 11 | viewmail.h \ |
12 | viewmailbase.h \ | 12 | viewmailbase.h \ |
13 | opiemail.h \ | 13 | opiemail.h \ |
14 | imapwrapper.h \ | 14 | imapwrapper.h \ |
15 | mailtypes.h \ | 15 | mailtypes.h \ |
16 | mailistviewitem.h \ | 16 | mailistviewitem.h \ |
17 | pop3wrapper.h | 17 | pop3wrapper.h \ |
18 | abstractmail.h | ||
18 | 19 | ||
19 | SOURCES = main.cpp \ | 20 | SOURCES = main.cpp \ |
20 | opiemail.cpp \ | 21 | opiemail.cpp \ |
21 | mainwindow.cpp \ | 22 | mainwindow.cpp \ |
22 | accountview.cpp \ | 23 | accountview.cpp \ |
23 | composemail.cpp \ | 24 | composemail.cpp \ |
24 | mailwrapper.cpp \ | 25 | mailwrapper.cpp \ |
25 | imapwrapper.cpp \ | 26 | imapwrapper.cpp \ |
26 | addresspicker.cpp \ | 27 | addresspicker.cpp \ |
27 | editaccounts.cpp \ | 28 | editaccounts.cpp \ |
28 | logindialog.cpp \ | 29 | logindialog.cpp \ |
29 | viewmail.cpp \ | 30 | viewmail.cpp \ |
30 | viewmailbase.cpp \ | 31 | viewmailbase.cpp \ |
31 | settings.cpp \ | 32 | settings.cpp \ |
32 | mailtypes.cpp \ | 33 | mailtypes.cpp \ |
33 | pop3wrapper.cpp | 34 | pop3wrapper.cpp \ |
35 | abstractmail.cpp | ||
34 | 36 | ||
35 | INTERFACES = editaccountsui.ui \ | 37 | INTERFACES = editaccountsui.ui \ |
36 | selectmailtypeui.ui \ | 38 | selectmailtypeui.ui \ |
37 | imapconfigui.ui \ | 39 | imapconfigui.ui \ |
38 | pop3configui.ui \ | 40 | pop3configui.ui \ |
39 | nntpconfigui.ui \ | 41 | nntpconfigui.ui \ |
40 | smtpconfigui.ui \ | 42 | smtpconfigui.ui \ |
41 | addresspickerui.ui \ | 43 | addresspickerui.ui \ |
42 | logindialogui.ui \ | 44 | logindialogui.ui \ |
43 | composemailui.ui | 45 | composemailui.ui |
44 | 46 | ||
45 | INCLUDEPATH += $(OPIEDIR)/include | 47 | INCLUDEPATH += $(OPIEDIR)/include |
46 | LIBS += -lqpe -letpan -lssl -lcrypto -lopie | 48 | LIBS += -lqpe -letpan -lssl -lcrypto -lopie |
47 | TARGET = opiemail | 49 | TARGET = opiemail |
48 | 50 | ||
49 | include ( $(OPIEDIR)/include.pro ) | 51 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h index 74bce5a..6c1cda0 100644 --- a/noncore/net/mail/mainwindow.h +++ b/noncore/net/mail/mainwindow.h | |||
@@ -5,33 +5,32 @@ | |||
5 | #include <qlistview.h> | 5 | #include <qlistview.h> |
6 | #include <qaction.h> | 6 | #include <qaction.h> |
7 | 7 | ||
8 | #include <qtoolbar.h> | 8 | #include <qtoolbar.h> |
9 | #include <qmenubar.h> | 9 | #include <qmenubar.h> |
10 | 10 | ||
11 | #include "accountview.h" | 11 | #include "accountview.h" |
12 | 12 | ||
13 | class RecMail; | 13 | class RecMail; |
14 | 14 | ||
15 | class MainWindow : public QMainWindow | 15 | class MainWindow : public QMainWindow |
16 | { | 16 | { |
17 | Q_OBJECT | 17 | Q_OBJECT |
18 | 18 | ||
19 | public: | 19 | public: |
20 | MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); | 20 | MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); |
21 | static QString appName() { return QString::fromLatin1("opiemail"); } | ||
22 | 21 | ||
23 | public slots: | 22 | public slots: |
24 | void slotAdjustColumns(); | 23 | void slotAdjustColumns(); |
25 | 24 | ||
26 | protected slots: | 25 | protected slots: |
27 | virtual void slotShowFolders( bool show ); | 26 | virtual void slotShowFolders( bool show ); |
28 | virtual void refreshMailView(QList<RecMail>*); | 27 | virtual void refreshMailView(QList<RecMail>*); |
29 | virtual void displayMail(QListViewItem*); | 28 | virtual void displayMail(QListViewItem*); |
30 | void slotAdjustLayout(); | 29 | void slotAdjustLayout(); |
31 | 30 | ||
32 | protected: | 31 | protected: |
33 | QToolBar *toolBar; | 32 | QToolBar *toolBar; |
34 | QMenuBar *menuBar; | 33 | QMenuBar *menuBar; |
35 | QPopupMenu *mailMenu, *settingsMenu; | 34 | QPopupMenu *mailMenu, *settingsMenu; |
36 | QAction *composeMail, *sendQueued, *showFolders, *searchMails, | 35 | QAction *composeMail, *sendQueued, *showFolders, *searchMails, |
37 | *editSettings, *editAccounts, *syncFolders; | 36 | *editSettings, *editAccounts, *syncFolders; |
diff --git a/noncore/net/mail/opiemail.h b/noncore/net/mail/opiemail.h index dcab47c..7bcd818 100644 --- a/noncore/net/mail/opiemail.h +++ b/noncore/net/mail/opiemail.h | |||
@@ -1,28 +1,26 @@ | |||
1 | #ifndef OPIEMAIL_H | 1 | #ifndef OPIEMAIL_H |
2 | #define OPIEMAIL_H | 2 | #define OPIEMAIL_H |
3 | 3 | ||
4 | #include "mainwindow.h" | 4 | #include "mainwindow.h" |
5 | #include "settings.h" | 5 | #include "settings.h" |
6 | 6 | ||
7 | class OpieMail : public MainWindow | 7 | class OpieMail : public MainWindow |
8 | { | 8 | { |
9 | Q_OBJECT | 9 | Q_OBJECT |
10 | 10 | ||
11 | public: | 11 | public: |
12 | OpieMail( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); | 12 | OpieMail( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); |
13 | 13 | static QString appName() { return QString::fromLatin1("opiemail"); } | |
14 | static QString appName() { return QString::fromLatin1("opiemail"); } | ||
15 | |||
16 | protected slots: | 14 | protected slots: |
17 | void slotComposeMail(); | 15 | void slotComposeMail(); |
18 | void slotSendQueued(); | 16 | void slotSendQueued(); |
19 | void slotSearchMails(); | 17 | void slotSearchMails(); |
20 | void slotEditSettings(); | 18 | void slotEditSettings(); |
21 | void slotEditAccounts(); | 19 | void slotEditAccounts(); |
22 | 20 | ||
23 | private: | 21 | private: |
24 | Settings *settings; | 22 | Settings *settings; |
25 | 23 | ||
26 | }; | 24 | }; |
27 | 25 | ||
28 | #endif | 26 | #endif |
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp index abb5a42..49c3b7a 100644 --- a/noncore/net/mail/pop3wrapper.cpp +++ b/noncore/net/mail/pop3wrapper.cpp | |||
@@ -46,33 +46,33 @@ RecBody POP3wrapper::parseBody( const char *message ) | |||
46 | size_t curTok; | 46 | size_t curTok; |
47 | mailimf_message *result; | 47 | mailimf_message *result; |
48 | RecBody body; | 48 | RecBody body; |
49 | 49 | ||
50 | err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); | 50 | err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); |
51 | if ( err != MAILIMF_NO_ERROR ) return body; | 51 | if ( err != MAILIMF_NO_ERROR ) return body; |
52 | 52 | ||
53 | if ( result && result->msg_body && result->msg_body->bd_text ) { | 53 | if ( result && result->msg_body && result->msg_body->bd_text ) { |
54 | qDebug( "POP3: bodytext found" ); | 54 | qDebug( "POP3: bodytext found" ); |
55 | // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. | 55 | // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. |
56 | body.setBodytext( QString( result->msg_body->bd_text ) ); | 56 | body.setBodytext( QString( result->msg_body->bd_text ) ); |
57 | } | 57 | } |
58 | 58 | ||
59 | return body; | 59 | return body; |
60 | } | 60 | } |
61 | 61 | ||
62 | void POP3wrapper::listMessages( 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 ); |
@@ -255,16 +255,35 @@ void POP3wrapper::login() | |||
255 | logout(); | 255 | logout(); |
256 | return; | 256 | return; |
257 | } | 257 | } |
258 | 258 | ||
259 | qDebug( "POP3: logged in!" ); | 259 | qDebug( "POP3: logged in!" ); |
260 | } | 260 | } |
261 | 261 | ||
262 | void POP3wrapper::logout() | 262 | void POP3wrapper::logout() |
263 | { | 263 | { |
264 | int err = MAILPOP3_NO_ERROR; | 264 | int err = MAILPOP3_NO_ERROR; |
265 | if ( m_pop3 == NULL ) return; | 265 | if ( m_pop3 == NULL ) return; |
266 | err = mailpop3_quit( m_pop3 ); | 266 | err = mailpop3_quit( m_pop3 ); |
267 | mailpop3_free( m_pop3 ); | 267 | mailpop3_free( m_pop3 ); |
268 | m_pop3 = NULL; | 268 | m_pop3 = NULL; |
269 | } | 269 | } |
270 | 270 | ||
271 | |||
272 | QList<Folder>* POP3wrapper::listFolders() | ||
273 | { | ||
274 | QList<Folder> * folders = new QList<Folder>(); | ||
275 | folders->setAutoDelete( true ); | ||
276 | Folder*inb=new Folder("INBOX"); | ||
277 | folders->append(inb); | ||
278 | return folders; | ||
279 | } | ||
280 | |||
281 | QString POP3wrapper::fetchPart(const RecMail&,const QValueList<int>&,bool) | ||
282 | { | ||
283 | return ""; | ||
284 | } | ||
285 | |||
286 | QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) | ||
287 | { | ||
288 | return ""; | ||
289 | } | ||
diff --git a/noncore/net/mail/pop3wrapper.h b/noncore/net/mail/pop3wrapper.h index 995bed0..3b24564 100644 --- a/noncore/net/mail/pop3wrapper.h +++ b/noncore/net/mail/pop3wrapper.h | |||
@@ -1,38 +1,43 @@ | |||
1 | #ifndef __POP3WRAPPER | 1 | #ifndef __POP3WRAPPER |
2 | #define __POP3WRAPPER | 2 | #define __POP3WRAPPER |
3 | 3 | ||
4 | #include "mailwrapper.h" | 4 | #include "mailwrapper.h" |
5 | #include "abstractmail.h" | ||
5 | 6 | ||
6 | class RecMail; | 7 | class RecMail; |
7 | class RecBody; | 8 | class RecBody; |
8 | struct mailpop3; | 9 | struct mailpop3; |
9 | 10 | ||
10 | class POP3wrapper : public QObject | 11 | class POP3wrapper : public AbstractMail |
11 | { | 12 | { |
12 | Q_OBJECT | 13 | Q_OBJECT |
13 | 14 | ||
14 | public: | 15 | public: |
15 | POP3wrapper( POP3account *a ); | 16 | POP3wrapper( POP3account *a ); |
16 | virtual ~POP3wrapper(); | 17 | virtual ~POP3wrapper(); |
17 | void listMessages( QList<RecMail> &target ); | 18 | /* mailbox will be ignored */ |
19 | virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); | ||
20 | virtual QList<Folder>* listFolders(); | ||
21 | virtual QString fetchPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false); | ||
22 | virtual QString fetchPart(const RecMail&mail,const RecPart&part); | ||
23 | |||
18 | RecBody fetchBody( const RecMail &mail ); | 24 | RecBody fetchBody( const RecMail &mail ); |
19 | static void pop3_progress( size_t current, size_t maximum ); | 25 | static void pop3_progress( size_t current, size_t maximum ); |
20 | 26 | ||
21 | protected: | 27 | protected: |
22 | void login(); | 28 | void login(); |
23 | void logout(); | 29 | void logout(); |
24 | 30 | ||
25 | private: | 31 | private: |
26 | RecMail *parseHeader( const char *header ); | 32 | RecMail *parseHeader( const char *header ); |
27 | RecBody parseBody( const char *message ); | 33 | RecBody parseBody( const char *message ); |
28 | QString parseMailboxList( mailimf_mailbox_list *list ); | 34 | QString parseMailboxList( mailimf_mailbox_list *list ); |
29 | QString parseMailbox( mailimf_mailbox *box ); | 35 | QString parseMailbox( mailimf_mailbox *box ); |
30 | QString parseGroup( mailimf_group *group ); | 36 | QString parseGroup( mailimf_group *group ); |
31 | QString parseAddressList( mailimf_address_list *list ); | 37 | QString parseAddressList( mailimf_address_list *list ); |
32 | QString parseDateTime( mailimf_date_time *date ); | 38 | QString parseDateTime( mailimf_date_time *date ); |
33 | POP3account *account; | 39 | POP3account *account; |
34 | mailpop3 *m_pop3; | 40 | mailpop3 *m_pop3; |
35 | |||
36 | }; | 41 | }; |
37 | 42 | ||
38 | #endif | 43 | #endif |