summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp60
-rw-r--r--noncore/net/mail/accountview.h16
-rw-r--r--noncore/net/mail/defines.h2
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp57
-rw-r--r--noncore/net/mail/pop3wrapper.cpp57
5 files changed, 153 insertions, 39 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index d725b87..8e21d39 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -23,8 +23,26 @@ POP3viewItem::~POP3viewItem()
23 23
24void POP3viewItem::refresh( QList<RecMail> &target ) 24AbstractMail *POP3viewItem::getWrapper()
25{ 25{
26 qDebug( "POP3: refresh" ); 26 return wrapper;
27 wrapper->listMessages("INBOX", target );
28} 27}
29 28
29void POP3viewItem::refresh( QList<RecMail> & )
30{
31 QList<Folder> *folders = wrapper->listFolders();
32 QListViewItem *child = firstChild();
33 while ( child ) {
34 QListViewItem *tmp = child;
35 child = child->nextSibling();
36 delete tmp;
37 }
38 Folder *it;
39 QListViewItem*item = 0;
40 for ( it = folders->first(); it; it = folders->next() ) {
41 item = new POP3folderItem( it, this , item );
42 item->setSelectable(it->may_select());
43 }
44 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
45 folders->setAutoDelete(false);
46 delete folders;
47}
30 48
@@ -36,2 +54,31 @@ RecBody POP3viewItem::fetchBody( const RecMail &mail )
36 54
55POP3folderItem::~POP3folderItem()
56{
57 delete folder;
58}
59
60POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QListViewItem*after )
61 : AccountViewItem( parent,after )
62{
63 folder = folderInit;
64 pop3 = parent;
65 if (folder->getDisplayName().lower()!="inbox") {
66 setPixmap( 0, PIXMAP_POP3FOLDER );
67 } else {
68 setPixmap( 0, PIXMAP_INBOXFOLDER);
69 }
70 setText( 0, folder->getDisplayName() );
71}
72
73void POP3folderItem::refresh(QList<RecMail>&target)
74{
75 if (folder->may_select())
76 pop3->getWrapper()->listMessages( folder->getName(),target );
77}
78
79RecBody POP3folderItem::fetchBody(const RecMail&aMail)
80{
81 return pop3->getWrapper()->fetchBody(aMail);
82}
83
37/** 84/**
@@ -39,3 +86,2 @@ RecBody POP3viewItem::fetchBody( const RecMail &mail )
39 */ 86 */
40
41IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent ) 87IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent )
@@ -97,3 +143,7 @@ IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QList
97 imap = parent; 143 imap = parent;
98 setPixmap( 0, PIXMAP_IMAPFOLDER ); 144 if (folder->getDisplayName().lower()!="inbox") {
145 setPixmap( 0, PIXMAP_IMAPFOLDER );
146 } else {
147 setPixmap( 0, PIXMAP_INBOXFOLDER);
148 }
99 setText( 0, folder->getDisplayName() ); 149 setText( 0, folder->getDisplayName() );
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 04f9b7a..d035af4 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -33,3 +33,3 @@ public:
33 virtual RecBody fetchBody( const RecMail &mail ); 33 virtual RecBody fetchBody( const RecMail &mail );
34 34 AbstractMail *getWrapper();
35private: 35private:
@@ -40,2 +40,15 @@ private:
40 40
41class POP3folderItem : public AccountViewItem
42{
43
44public:
45 POP3folderItem( Folder *folder, POP3viewItem *parent , QListViewItem*after );
46 ~POP3folderItem();
47 virtual void refresh(QList<RecMail>&);
48 virtual RecBody fetchBody(const RecMail&);
49private:
50 Folder *folder;
51 POP3viewItem *pop3;
52};
53
41class IMAPviewItem : public AccountViewItem 54class IMAPviewItem : public AccountViewItem
@@ -65,3 +78,2 @@ private:
65 IMAPviewItem *imap; 78 IMAPviewItem *imap;
66
67}; 79};
diff --git a/noncore/net/mail/defines.h b/noncore/net/mail/defines.h
index 679459d..c849f1a 100644
--- a/noncore/net/mail/defines.h
+++ b/noncore/net/mail/defines.h
@@ -16,2 +16,3 @@
16#define PIC_POP3FOLDER "opiemail/pop3folder" 16#define PIC_POP3FOLDER "opiemail/pop3folder"
17#define PIC_INBOXFOLDER "opiemail/inbox"
17 18
@@ -27,2 +28,3 @@
27#define PIXMAP_POP3FOLDER QPixmap( Resource::loadPixmap( PIC_POP3FOLDER ) ) 28#define PIXMAP_POP3FOLDER QPixmap( Resource::loadPixmap( PIC_POP3FOLDER ) )
29#define PIXMAP_INBOXFOLDER QPixmap( Resource::loadPixmap( PIC_INBOXFOLDER) )
28 30
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index 46c854b..2411399 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -1,2 +1,2 @@
1 1#include <stdlib.h>
2#include "pop3wrapper.h" 2#include "pop3wrapper.h"
@@ -45,4 +45,5 @@ RecBody POP3wrapper::parseBody( const char *message )
45 int err = MAILIMF_NO_ERROR; 45 int err = MAILIMF_NO_ERROR;
46 size_t curTok; 46 /* these vars are used recurcive! set it to 0!!!!!!!!!!!!!!!!! */
47 mailimf_message *result; 47 size_t curTok = 0;
48 mailimf_message *result = 0;
48 RecBody body; 49 RecBody body;
@@ -50,3 +51,6 @@ RecBody POP3wrapper::parseBody( const char *message )
50 err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); 51 err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result );
51 if ( err != MAILIMF_NO_ERROR ) return body; 52 if ( err != MAILIMF_NO_ERROR ) {
53 if (result) mailimf_message_free(result);
54 return body;
55 }
52 56
@@ -54,6 +58,6 @@ RecBody POP3wrapper::parseBody( const char *message )
54 qDebug( "POP3: bodytext found" ); 58 qDebug( "POP3: bodytext found" );
55 // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. 59 // when curTok isn't set to 0 this line will fault! 'cause upper line faults!
56 body.setBodytext( QString( result->msg_body->bd_text ) ); 60 body.setBodytext( QString( result->msg_body->bd_text ) );
57 } 61 }
58 62 if (result) mailimf_message_free(result);
59 return body; 63 return body;
@@ -64,5 +68,6 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
64 int err = MAILPOP3_NO_ERROR; 68 int err = MAILPOP3_NO_ERROR;
65 char *header; 69 char * header = 0;
66 size_t length; 70 /* these vars are used recurcive! set it to 0!!!!!!!!!!!!!!!!! */
67 carray *messages; 71 size_t length = 0;
72 carray * messages = 0;
68 73
@@ -72,5 +77,6 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
72 77
73 for ( int i = carray_count( messages ); i > 0; i-- ) { 78 //for ( int i = carray_count( messages ); i > 0; i-- ) {
74 mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); 79 for (unsigned int i = 0; i < carray_count(messages);++i) {
75 80 mailpop3_msg_info *info;
81 int r = mailpop3_get_msg_info(m_pop3,i+1,&info);
76 err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); 82 err = mailpop3_header( m_pop3, info->msg_index, &header, &length );
@@ -78,2 +84,3 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
78 qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); 84 qDebug( "POP3: error retrieving header msgid: %i", info->msg_index );
85 free(header);
79 logout(); 86 logout();
@@ -85,4 +92,4 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
85 target.append( mail ); 92 target.append( mail );
93 free(header);
86 } 94 }
87
88 logout(); 95 logout();
@@ -93,6 +100,8 @@ RecMail *POP3wrapper::parseHeader( const char *header )
93 int err = MAILIMF_NO_ERROR; 100 int err = MAILIMF_NO_ERROR;
94 size_t curTok; 101 size_t curTok = 0;
95 RecMail *mail = new RecMail(); 102 RecMail *mail = new RecMail();
96 mailimf_fields *fields; 103 mailimf_fields *fields;
97 104 mailimf_references * refs;
105 mailimf_keywords*keys;
106
98 err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); 107 err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields );
@@ -119,2 +128,18 @@ RecMail *POP3wrapper::parseHeader( const char *header )
119 break; 128 break;
129 case MAILIMF_FIELD_MESSAGE_ID:
130 mail->setMsgid(QString(field->fld_data.fld_message_id->mid_value));
131 break;
132 case MAILIMF_FIELD_REFERENCES:
133 refs = field->fld_data.fld_references;
134 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
135 char * text = (char*)refs->mid_list->first->data;
136 mail->setReplyto(QString(text));
137 }
138 break;
139 case MAILIMF_FIELD_KEYWORDS:
140 keys = field->fld_data.fld_keywords;
141 for (clistcell*cur = clist_begin(keys->kw_list);cur!=0;cur=clist_next(cur)) {
142 qDebug("Keyword: %s",(char*)cur->data);
143 }
144 break;
120 default: 145 default:
@@ -123,3 +148,3 @@ RecMail *POP3wrapper::parseHeader( const char *header )
123 } 148 }
124 149 if (fields) mailimf_fields_free(fields);
125 return mail; 150 return mail;
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp
index 46c854b..2411399 100644
--- a/noncore/net/mail/pop3wrapper.cpp
+++ b/noncore/net/mail/pop3wrapper.cpp
@@ -1,2 +1,2 @@
1 1#include <stdlib.h>
2#include "pop3wrapper.h" 2#include "pop3wrapper.h"
@@ -45,4 +45,5 @@ RecBody POP3wrapper::parseBody( const char *message )
45 int err = MAILIMF_NO_ERROR; 45 int err = MAILIMF_NO_ERROR;
46 size_t curTok; 46 /* these vars are used recurcive! set it to 0!!!!!!!!!!!!!!!!! */
47 mailimf_message *result; 47 size_t curTok = 0;
48 mailimf_message *result = 0;
48 RecBody body; 49 RecBody body;
@@ -50,3 +51,6 @@ RecBody POP3wrapper::parseBody( const char *message )
50 err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); 51 err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result );
51 if ( err != MAILIMF_NO_ERROR ) return body; 52 if ( err != MAILIMF_NO_ERROR ) {
53 if (result) mailimf_message_free(result);
54 return body;
55 }
52 56
@@ -54,6 +58,6 @@ RecBody POP3wrapper::parseBody( const char *message )
54 qDebug( "POP3: bodytext found" ); 58 qDebug( "POP3: bodytext found" );
55 // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. 59 // when curTok isn't set to 0 this line will fault! 'cause upper line faults!
56 body.setBodytext( QString( result->msg_body->bd_text ) ); 60 body.setBodytext( QString( result->msg_body->bd_text ) );
57 } 61 }
58 62 if (result) mailimf_message_free(result);
59 return body; 63 return body;
@@ -64,5 +68,6 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
64 int err = MAILPOP3_NO_ERROR; 68 int err = MAILPOP3_NO_ERROR;
65 char *header; 69 char * header = 0;
66 size_t length; 70 /* these vars are used recurcive! set it to 0!!!!!!!!!!!!!!!!! */
67 carray *messages; 71 size_t length = 0;
72 carray * messages = 0;
68 73
@@ -72,5 +77,6 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
72 77
73 for ( int i = carray_count( messages ); i > 0; i-- ) { 78 //for ( int i = carray_count( messages ); i > 0; i-- ) {
74 mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); 79 for (unsigned int i = 0; i < carray_count(messages);++i) {
75 80 mailpop3_msg_info *info;
81 int r = mailpop3_get_msg_info(m_pop3,i+1,&info);
76 err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); 82 err = mailpop3_header( m_pop3, info->msg_index, &header, &length );
@@ -78,2 +84,3 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
78 qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); 84 qDebug( "POP3: error retrieving header msgid: %i", info->msg_index );
85 free(header);
79 logout(); 86 logout();
@@ -85,4 +92,4 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
85 target.append( mail ); 92 target.append( mail );
93 free(header);
86 } 94 }
87
88 logout(); 95 logout();
@@ -93,6 +100,8 @@ RecMail *POP3wrapper::parseHeader( const char *header )
93 int err = MAILIMF_NO_ERROR; 100 int err = MAILIMF_NO_ERROR;
94 size_t curTok; 101 size_t curTok = 0;
95 RecMail *mail = new RecMail(); 102 RecMail *mail = new RecMail();
96 mailimf_fields *fields; 103 mailimf_fields *fields;
97 104 mailimf_references * refs;
105 mailimf_keywords*keys;
106
98 err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); 107 err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields );
@@ -119,2 +128,18 @@ RecMail *POP3wrapper::parseHeader( const char *header )
119 break; 128 break;
129 case MAILIMF_FIELD_MESSAGE_ID:
130 mail->setMsgid(QString(field->fld_data.fld_message_id->mid_value));
131 break;
132 case MAILIMF_FIELD_REFERENCES:
133 refs = field->fld_data.fld_references;
134 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
135 char * text = (char*)refs->mid_list->first->data;
136 mail->setReplyto(QString(text));
137 }
138 break;
139 case MAILIMF_FIELD_KEYWORDS:
140 keys = field->fld_data.fld_keywords;
141 for (clistcell*cur = clist_begin(keys->kw_list);cur!=0;cur=clist_next(cur)) {
142 qDebug("Keyword: %s",(char*)cur->data);
143 }
144 break;
120 default: 145 default:
@@ -123,3 +148,3 @@ RecMail *POP3wrapper::parseHeader( const char *header )
123 } 148 }
124 149 if (fields) mailimf_fields_free(fields);
125 return mail; 150 return mail;