author | alwin <alwin> | 2003-12-28 12:57:44 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-28 12:57:44 (UTC) |
commit | b41e3eb92eab8bf61fd20db70d0317c816b1c2f0 (patch) (side-by-side diff) | |
tree | 5795854d7de75edc4385edc6ee7389809f98f4e1 | |
parent | b834b22bade330b2d684c59b7fc1031a8bf650c5 (diff) | |
download | opie-b41e3eb92eab8bf61fd20db70d0317c816b1c2f0.zip opie-b41e3eb92eab8bf61fd20db70d0317c816b1c2f0.tar.gz opie-b41e3eb92eab8bf61fd20db70d0317c816b1c2f0.tar.bz2 |
basic folder handling for pop3 accounts
some code dups reduced
-rw-r--r-- | noncore/net/mail/abstractmail.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/accountview.cpp | 76 | ||||
-rw-r--r-- | noncore/net/mail/accountview.h | 6 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 31 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.h | 1 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.cpp | 31 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.h | 1 |
8 files changed, 106 insertions, 44 deletions
diff --git a/noncore/net/mail/abstractmail.h b/noncore/net/mail/abstractmail.h index b609aa7..5dc4cab 100644 --- a/noncore/net/mail/abstractmail.h +++ b/noncore/net/mail/abstractmail.h @@ -31,2 +31,3 @@ public: virtual int deleteAllMail(const Folder*){return 1;} + virtual int deleteMbox(const Folder*){return 1;} @@ -38,3 +39,2 @@ public: virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false){return 0;} - virtual int deleteMbox(const Folder*){return 1;} diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index 30765cf..f861c20 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp @@ -86,2 +86,27 @@ RecBody POP3folderItem::fetchBody(const RecMail&aMail) +QPopupMenu * POP3folderItem::getContextMenu() +{ + QPopupMenu *m = new QPopupMenu(0); + if (m) { + m->insertItem(QObject::tr("Refresh header list",contextName),0); + m->insertItem(QObject::tr("Delete all mails",contextName),1); + } + return m; +} + +void POP3folderItem::contextMenuSelected(int which) +{ + AccountView * view = (AccountView*)listView(); + switch (which) { + case 0: + view->refreshCurrent(); + break; + case 1: + deleteAllMail(pop3->getWrapper(),folder); + break; + default: + break; + } +} + /** @@ -306,17 +331,2 @@ QPopupMenu * IMAPfolderItem::getContextMenu() -void IMAPfolderItem::deleteAllMails() -{ - int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName), - QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName).arg(folder->getDisplayName()), - QObject::tr("Yes",contextName), - QObject::tr("No",contextName),QString::null,1,1); - qDebug("Auswahl: %i",yesno); - if (yesno == 0) { - if (imap->getWrapper()->deleteAllMail(folder)) { - AccountView * view = (AccountView*)listView(); - if (view) view->refreshCurrent(); - } - } -} - void IMAPfolderItem::createNewFolder() @@ -365,3 +375,3 @@ void IMAPfolderItem::contextMenuSelected(int id) case 1: - deleteAllMails(); + deleteAllMail(imap->getWrapper(),folder); break; @@ -384,2 +394,19 @@ const QString AccountViewItem::contextName="AccountViewItem"; +void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder) +{ + if (!wrapper) return; + int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName), + QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName). + arg((folder?folder->getDisplayName():"")), + QObject::tr("Yes",contextName), + QObject::tr("No",contextName),QString::null,1,1); + qDebug("Auswahl: %i",yesno); + if (yesno == 0) { + if (wrapper->deleteAllMail(folder)) { + AccountView * view = (AccountView*)listView(); + if (view) view->refreshCurrent(); + } + } +} + AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) @@ -596,17 +623,2 @@ RecBody MBOXfolderItem::fetchBody(const RecMail&aMail) -void MBOXfolderItem::deleteAllMails() -{ - int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName), - QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName).arg(folder->getDisplayName()), - QObject::tr("Yes",contextName), - QObject::tr("No",contextName),QString::null,1,1); - qDebug("Auswahl: %i",yesno); - if (yesno == 0) { - if (mbox->getWrapper()->deleteAllMail(folder)) { - AccountView * view = (AccountView*)listView(); - if (view) view->refreshCurrent(); - } - } -} - void MBOXfolderItem::deleteFolder() @@ -646,3 +658,3 @@ void MBOXfolderItem::contextMenuSelected(int which) case 0: - deleteAllMails(); + deleteAllMail(mbox->getWrapper(),folder); break; diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h index 98abf44..361dd86 100644 --- a/noncore/net/mail/accountview.h +++ b/noncore/net/mail/accountview.h @@ -27,2 +27,3 @@ public: protected: + virtual void deleteAllMail(AbstractMail*wrapper,Folder*f); static const QString contextName; @@ -53,2 +54,5 @@ public: virtual RecBody fetchBody(const RecMail&); + virtual QPopupMenu * getContextMenu(); + virtual void contextMenuSelected(int); + private: @@ -98,3 +102,2 @@ protected: virtual void deleteFolder(); - virtual void deleteAllMails(); @@ -142,3 +145,2 @@ public: protected: - virtual void deleteAllMails(); virtual void deleteFolder(); diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h index b609aa7..5dc4cab 100644 --- a/noncore/net/mail/libmailwrapper/abstractmail.h +++ b/noncore/net/mail/libmailwrapper/abstractmail.h @@ -31,2 +31,3 @@ public: virtual int deleteAllMail(const Folder*){return 1;} + virtual int deleteMbox(const Folder*){return 1;} @@ -38,3 +39,2 @@ public: virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false){return 0;} - virtual int deleteMbox(const Folder*){return 1;} diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index b85fbf6..2e70dee 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp @@ -208,5 +208,2 @@ QList<Folder>* POP3wrapper::listFolders() { - /* TODO: integrate MH directories - but not before version 0.1 ;) - */ QList<Folder> * folders = new QList<Folder>(); @@ -224,3 +221,3 @@ void POP3wrapper::deleteMail(const RecMail&mail) if (err != MAILPOP3_NO_ERROR) { - qDebug("error deleting mail"); + Global::statusMessage(tr("error deleting mail")); } @@ -231 +228,27 @@ void POP3wrapper::answeredMail(const RecMail&) } + +int POP3wrapper::deleteAllMail(const Folder*) +{ + login(); + if (!m_pop3) return 0; + carray * messages = 0; + + /* if connected this info is cached! */ + int err = 0; + mailpop3_list( m_pop3, &messages ); + + int res = 1; + for (unsigned int i = 0; messages!=0 && i < carray_count(messages);++i) { + mailpop3_msg_info *info; + err = mailpop3_get_msg_info(m_pop3,i+1,&info); + if (info->msg_deleted) + continue; + err = mailpop3_dele(m_pop3,i+1); + if (err != MAILPOP3_NO_ERROR) { + Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); + res = 0; + break; + } + } + return res; +} diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h index 7502720..2efffdd 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.h +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h @@ -21,2 +21,3 @@ public: virtual void answeredMail(const RecMail&mail); + virtual int deleteAllMail(const Folder*); diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp index b85fbf6..2e70dee 100644 --- a/noncore/net/mail/pop3wrapper.cpp +++ b/noncore/net/mail/pop3wrapper.cpp @@ -208,5 +208,2 @@ QList<Folder>* POP3wrapper::listFolders() { - /* TODO: integrate MH directories - but not before version 0.1 ;) - */ QList<Folder> * folders = new QList<Folder>(); @@ -224,3 +221,3 @@ void POP3wrapper::deleteMail(const RecMail&mail) if (err != MAILPOP3_NO_ERROR) { - qDebug("error deleting mail"); + Global::statusMessage(tr("error deleting mail")); } @@ -231 +228,27 @@ void POP3wrapper::answeredMail(const RecMail&) } + +int POP3wrapper::deleteAllMail(const Folder*) +{ + login(); + if (!m_pop3) return 0; + carray * messages = 0; + + /* if connected this info is cached! */ + int err = 0; + mailpop3_list( m_pop3, &messages ); + + int res = 1; + for (unsigned int i = 0; messages!=0 && i < carray_count(messages);++i) { + mailpop3_msg_info *info; + err = mailpop3_get_msg_info(m_pop3,i+1,&info); + if (info->msg_deleted) + continue; + err = mailpop3_dele(m_pop3,i+1); + if (err != MAILPOP3_NO_ERROR) { + Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); + res = 0; + break; + } + } + return res; +} diff --git a/noncore/net/mail/pop3wrapper.h b/noncore/net/mail/pop3wrapper.h index 7502720..2efffdd 100644 --- a/noncore/net/mail/pop3wrapper.h +++ b/noncore/net/mail/pop3wrapper.h @@ -21,2 +21,3 @@ public: virtual void answeredMail(const RecMail&mail); + virtual int deleteAllMail(const Folder*); |