-rw-r--r-- | noncore/net/mail/accountview.cpp | 45 | ||||
-rw-r--r-- | noncore/net/mail/accountview.h | 16 | ||||
-rw-r--r-- | noncore/net/mail/defines.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 74 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.h | 28 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/settings.cpp | 4 | ||||
-rw-r--r-- | noncore/net/mail/mail.pro | 18 | ||||
-rw-r--r-- | noncore/net/mail/opie-mail.control | 2 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.cpp | 74 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.h | 28 | ||||
-rw-r--r-- | noncore/net/mail/settings.cpp | 4 |
11 files changed, 278 insertions, 17 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index df9fc11..6963027 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp @@ -1,7 +1,44 @@ #include "accountview.h" #include "imapwrapper.h" +#include "pop3wrapper.h" #include "mailtypes.h" #include "defines.h" + +/** + * POP3 Account stuff + */ + +POP3viewItem::POP3viewItem( POP3account *a, QListView *parent ) + : AccountViewItem( parent ) +{ + account = a; + wrapper = new POP3wrapper( account ); + setPixmap( 0, PIXMAP_POP3FOLDER ); + setText( 0, account->getAccountName() ); +} + +POP3viewItem::~POP3viewItem() +{ + delete wrapper; +} + +void POP3viewItem::refresh( QList<RecMail> &target ) +{ + qDebug( "POP3: refresh" ); + wrapper->listMessages( target ); +} + + +RecBody POP3viewItem::fetchBody( const RecMail & ) +{ + qDebug( "POP3 fetchBody: IMPLEMENT ME!!" ); + return RecBody(); +} + +/** + * IMAP Account stuff + */ + IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent ) : AccountViewItem( parent ) @@ -70,4 +107,8 @@ RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) } +/** + * Generic stuff + */ + AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) : QListView( parent, name, flags ) @@ -87,4 +128,8 @@ void AccountView::populate( QList<Account> list ) qDebug( "added IMAP " + imap->getAccountName() ); (void) new IMAPviewItem( imap, this ); + } else if ( it->getType().compare( "POP3" ) == 0 ) { + POP3account *pop3 = static_cast<POP3account *>(it); + qDebug( "added POP3 " + pop3->getAccountName() ); + (void) new POP3viewItem( pop3, this ); } } diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h index 805c2b3..fe832ec 100644 --- a/noncore/net/mail/accountview.h +++ b/noncore/net/mail/accountview.h @@ -9,4 +9,5 @@ class IMAPwrapper; +class POP3wrapper; class RecMail; class RecBody; @@ -22,4 +23,19 @@ public: }; +class POP3viewItem : public AccountViewItem +{ + +public: + POP3viewItem( POP3account *a, QListView *parent ); + ~POP3viewItem(); + virtual void refresh( QList<RecMail> &target ); + virtual RecBody fetchBody(const RecMail & ); + +private: + POP3account *account; + POP3wrapper *wrapper; + +}; + class IMAPviewItem : public AccountViewItem { diff --git a/noncore/net/mail/defines.h b/noncore/net/mail/defines.h index 853454d..679459d 100644 --- a/noncore/net/mail/defines.h +++ b/noncore/net/mail/defines.h @@ -14,4 +14,5 @@ #define PIC_SYNC "opiemail/sync" #define PIC_IMAPFOLDER "opiemail/imapfolder" +#define PIC_POP3FOLDER "opiemail/pop3folder" #define ICON_COMPOSEMAIL QIconSet( Resource::loadPixmap( PIC_COMPOSEMAIL ) ) @@ -24,4 +25,5 @@ #define PIXMAP_IMAPFOLDER QPixmap( Resource::loadPixmap( PIC_IMAPFOLDER ) ) +#define PIXMAP_POP3FOLDER QPixmap( Resource::loadPixmap( PIC_POP3FOLDER ) ) #define IMAP_PORT "143" diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp new file mode 100644 index 0000000..08e97f4 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp @@ -0,0 +1,74 @@ + +#include "pop3wrapper.h" +#include "mailtypes.h" +#include <libetpan/mailpop3.h> + +POP3wrapper::POP3wrapper( POP3account *a ) +{ + account = a; +} + +POP3wrapper::~POP3wrapper() +{ + logout(); +} + +void POP3wrapper::pop3_progress( size_t current, size_t maximum ) +{ + qDebug( "POP3: %i of %i", current, maximum ); +} + +void POP3wrapper::listMessages( QList<RecMail> &target ) +{ + login(); + //TODO: list messages + logout(); +} + +void POP3wrapper::login() +{ + logout(); + const char *server, *user, *pass; + uint16_t port; + int err = MAILPOP3_NO_ERROR; + + server = account->getServer().latin1(); + port = account->getPort().toUInt(); + user = account->getUser().latin1(); + pass = account->getPassword().latin1(); + + m_pop3 = mailpop3_new( 20, &pop3_progress ); + + // connect + err = mailpop3_socket_connect( m_pop3, (char *) server, port ); + if ( err != MAILPOP3_NO_ERROR ) { + qDebug( "pop3: error connecting to %s\n reason: %s", server, + m_pop3->response ); + mailpop3_free( m_pop3 ); + m_pop3 = NULL; + return; + } + qDebug( "POP3: connected!" ); + + // login + // TODO: decide if apop or plain login should be used + err = mailpop3_login( m_pop3, (char *) user, (char *) pass ); + if ( err != MAILPOP3_NO_ERROR ) { + qDebug( "pop3: error logging in: %s", m_pop3->response ); + logout(); + return; + } + + qDebug( "POP3: logged in!" ); +} + +void POP3wrapper::logout() +{ + int err = MAILPOP3_NO_ERROR; + if ( !m_pop3 ) return; + err = mailpop3_quit( m_pop3 ); + mailpop3_free( m_pop3 ); + m_pop3 = NULL; +} + + diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h new file mode 100644 index 0000000..b791409 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h @@ -0,0 +1,28 @@ +#ifndef __POP3WRAPPER +#define __POP3WRAPPER + +#include "mailwrapper.h" + +class RecMail; + +class POP3wrapper : public QObject +{ + Q_OBJECT + +public: + POP3wrapper( POP3account *a ); + virtual ~POP3wrapper(); + void listMessages( QList<RecMail> &target ); + static void pop3_progress( size_t current, size_t maximum ); + +protected: + void login(); + void logout(); + +private: + POP3account *account; + mailpop3 *m_pop3; + +}; + +#endif diff --git a/noncore/net/mail/libmailwrapper/settings.cpp b/noncore/net/mail/libmailwrapper/settings.cpp index 9632301..b580954 100644 --- a/noncore/net/mail/libmailwrapper/settings.cpp +++ b/noncore/net/mail/libmailwrapper/settings.cpp @@ -133,5 +133,4 @@ QString IMAPaccount::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "imap-*" ); @@ -211,5 +210,4 @@ QString POP3account::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "pop3-*" ); @@ -289,5 +287,4 @@ QString SMTPaccount::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "smtp-*" ); @@ -385,5 +382,4 @@ QString NNTPaccount::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "nntp-*" ); diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro index 55d95ba..d333829 100644 --- a/noncore/net/mail/mail.pro +++ b/noncore/net/mail/mail.pro @@ -9,10 +9,11 @@ HEADERS = defines.h \ accountview.h \ mainwindow.h \ - viewmail.h \ - viewmailbase.h \ + viewmail.h \ + viewmailbase.h \ opiemail.h \ - imapwrapper.h \ - mailtypes.h \ - mailistviewitem.h + imapwrapper.h \ + mailtypes.h \ + mailistviewitem.h \ + pop3wrapper.h SOURCES = main.cpp \ @@ -26,8 +27,9 @@ SOURCES = main.cpp \ editaccounts.cpp \ logindialog.cpp \ - viewmail.cpp \ - viewmailbase.cpp \ + viewmail.cpp \ + viewmailbase.cpp \ settings.cpp \ - mailtypes.cpp + mailtypes.cpp \ + pop3wrapper.cpp INTERFACES = editaccountsui.ui \ diff --git a/noncore/net/mail/opie-mail.control b/noncore/net/mail/opie-mail.control index a93067f..afe0947 100644 --- a/noncore/net/mail/opie-mail.control +++ b/noncore/net/mail/opie-mail.control @@ -3,5 +3,5 @@ Files: bin/opiemail apps/1Pim/opiemail.desktop pics/mail/*.png Priority: optional Section: opie/applications -Maintainer: Juergen Graf <jgf@openbsd.de> +Maintainer: Juergen Graf <jgf@handhelds.org> Architecture: arm Version: 0.0.1-$SUB_VERSION diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp new file mode 100644 index 0000000..08e97f4 --- a/dev/null +++ b/noncore/net/mail/pop3wrapper.cpp @@ -0,0 +1,74 @@ + +#include "pop3wrapper.h" +#include "mailtypes.h" +#include <libetpan/mailpop3.h> + +POP3wrapper::POP3wrapper( POP3account *a ) +{ + account = a; +} + +POP3wrapper::~POP3wrapper() +{ + logout(); +} + +void POP3wrapper::pop3_progress( size_t current, size_t maximum ) +{ + qDebug( "POP3: %i of %i", current, maximum ); +} + +void POP3wrapper::listMessages( QList<RecMail> &target ) +{ + login(); + //TODO: list messages + logout(); +} + +void POP3wrapper::login() +{ + logout(); + const char *server, *user, *pass; + uint16_t port; + int err = MAILPOP3_NO_ERROR; + + server = account->getServer().latin1(); + port = account->getPort().toUInt(); + user = account->getUser().latin1(); + pass = account->getPassword().latin1(); + + m_pop3 = mailpop3_new( 20, &pop3_progress ); + + // connect + err = mailpop3_socket_connect( m_pop3, (char *) server, port ); + if ( err != MAILPOP3_NO_ERROR ) { + qDebug( "pop3: error connecting to %s\n reason: %s", server, + m_pop3->response ); + mailpop3_free( m_pop3 ); + m_pop3 = NULL; + return; + } + qDebug( "POP3: connected!" ); + + // login + // TODO: decide if apop or plain login should be used + err = mailpop3_login( m_pop3, (char *) user, (char *) pass ); + if ( err != MAILPOP3_NO_ERROR ) { + qDebug( "pop3: error logging in: %s", m_pop3->response ); + logout(); + return; + } + + qDebug( "POP3: logged in!" ); +} + +void POP3wrapper::logout() +{ + int err = MAILPOP3_NO_ERROR; + if ( !m_pop3 ) return; + err = mailpop3_quit( m_pop3 ); + mailpop3_free( m_pop3 ); + m_pop3 = NULL; +} + + diff --git a/noncore/net/mail/pop3wrapper.h b/noncore/net/mail/pop3wrapper.h new file mode 100644 index 0000000..b791409 --- a/dev/null +++ b/noncore/net/mail/pop3wrapper.h @@ -0,0 +1,28 @@ +#ifndef __POP3WRAPPER +#define __POP3WRAPPER + +#include "mailwrapper.h" + +class RecMail; + +class POP3wrapper : public QObject +{ + Q_OBJECT + +public: + POP3wrapper( POP3account *a ); + virtual ~POP3wrapper(); + void listMessages( QList<RecMail> &target ); + static void pop3_progress( size_t current, size_t maximum ); + +protected: + void login(); + void logout(); + +private: + POP3account *account; + mailpop3 *m_pop3; + +}; + +#endif diff --git a/noncore/net/mail/settings.cpp b/noncore/net/mail/settings.cpp index 9632301..b580954 100644 --- a/noncore/net/mail/settings.cpp +++ b/noncore/net/mail/settings.cpp @@ -133,5 +133,4 @@ QString IMAPaccount::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "imap-*" ); @@ -211,5 +210,4 @@ QString POP3account::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "pop3-*" ); @@ -289,5 +287,4 @@ QString SMTPaccount::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "smtp-*" ); @@ -385,5 +382,4 @@ QString NNTPaccount::getUniqueFileName() QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" ); - QStringList::Iterator it; QStringList imap = dir.entryList( "nntp-*" ); |