summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountview.cpp
authoralwin <alwin>2004-01-05 22:21:41 (UTC)
committer alwin <alwin>2004-01-05 22:21:41 (UTC)
commitc8d0dd53a75b7142a5ce924e4afbea77b86e56b0 (patch) (side-by-side diff)
tree2845e68c4a3ee0daa7f732a29fefd81d47c90f9d /noncore/net/mail/accountview.cpp
parent07278dd6ba68e3ff55d22acc76a28956b06d5d9c (diff)
downloadopie-c8d0dd53a75b7142a5ce924e4afbea77b86e56b0.zip
opie-c8d0dd53a75b7142a5ce924e4afbea77b86e56b0.tar.gz
opie-c8d0dd53a75b7142a5ce924e4afbea77b86e56b0.tar.bz2
bugfix in imapwrapper
storemail for all possible mail-accounts raw body fetch in all wrappers unified public interface dialog for selecting a target mailbox started
Diffstat (limited to 'noncore/net/mail/accountview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 77fa706..faa6982 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -1,29 +1,30 @@
#include "accountview.h"
#include <libmailwrapper/mailtypes.h>
#include <libmailwrapper/abstractmail.h>
#include "defines.h"
#include "newmaildir.h"
+#include "selectstore.h"
#include <qmessagebox.h>
#include <qpopupmenu.h>
/**
* POP3 Account stuff
*/
POP3viewItem::POP3viewItem( POP3account *a, QListView *parent )
: AccountViewItem( parent )
{
account = a;
wrapper = AbstractMail::getWrapper( account );
setPixmap( 0, PIXMAP_POP3FOLDER );
setText( 0, account->getAccountName() );
setOpen( true );
}
POP3viewItem::~POP3viewItem()
{
delete wrapper;
}
AbstractMail *POP3viewItem::getWrapper()
{
return wrapper;
@@ -69,62 +70,75 @@ POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QList
setPixmap( 0, PIXMAP_POP3FOLDER );
} else {
setPixmap( 0, PIXMAP_INBOXFOLDER);
}
setText( 0, folder->getDisplayName() );
}
void POP3folderItem::refresh(QList<RecMail>&target)
{
if (folder->may_select())
pop3->getWrapper()->listMessages( folder->getName(),target );
}
RecBody POP3folderItem::fetchBody(const RecMail&aMail)
{
return pop3->getWrapper()->fetchBody(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);
+ m->insertItem(QObject::tr("Download all mails",contextName),2);
}
return m;
}
+void POP3folderItem::downloadMails()
+{
+ Selectstore sels;
+ sels.showMaximized();
+ sels.exec();
+}
+
void POP3folderItem::contextMenuSelected(int which)
{
AccountView * view = (AccountView*)listView();
switch (which) {
case 0:
+ /* must be 'cause pop3 lists are cached */
+ pop3->getWrapper()->logout();
view->refreshCurrent();
break;
case 1:
deleteAllMail(pop3->getWrapper(),folder);
break;
+ case 2:
+ downloadMails();
+ break;
default:
break;
}
}
/**
* IMAP Account stuff
*/
IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent )
: AccountViewItem( parent )
{
account = a;
wrapper = AbstractMail::getWrapper( account );
setPixmap( 0, PIXMAP_IMAPFOLDER );
setText( 0, account->getAccountName() );
setOpen( true );
}
IMAPviewItem::~IMAPviewItem()
{
delete wrapper;
}
AbstractMail *IMAPviewItem::getWrapper()
@@ -137,60 +151,67 @@ IMAPfolderItem*IMAPviewItem::findSubItem(const QString&path,IMAPfolderItem*start
IMAPfolderItem*pitem,*sitem;
if (!start) pitem = (IMAPfolderItem*)firstChild();
else pitem = (IMAPfolderItem*)start->firstChild();
while (pitem) {
if (pitem->matchName(path)) {
break;
}
if (pitem->childCount()>0) {
sitem = findSubItem(path,pitem);
if (sitem) {
pitem = sitem;
break;
}
}
pitem=(IMAPfolderItem*)pitem->nextSibling();
}
return pitem;
}
void IMAPviewItem::refresh(QList<RecMail>&)
{
refreshFolders(false);
}
-void IMAPviewItem::refreshFolders(bool force)
+void IMAPviewItem::removeChilds()
{
- if (childCount()>0 && force==false) return;
- QList<Folder> *folders = wrapper->listFolders();
-
QListViewItem *child = firstChild();
while ( child ) {
QListViewItem *tmp = child;
child = child->nextSibling();
delete tmp;
}
+}
+
+void IMAPviewItem::refreshFolders(bool force)
+{
+ if (childCount()>0 && force==false) return;
+
+ removeChilds();
+
+ QList<Folder> *folders = wrapper->listFolders();
+
Folder *it;
QListViewItem*item = 0;
QListViewItem*titem = 0;
QString fname,del,search;
int pos;
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
folders->setAutoDelete(false);
for ( it = folders->first(); it; it = folders->next() ) {
if (it->getDisplayName().lower()=="inbox") {
item = new IMAPfolderItem( it, this , item );
folders->remove(it);
qDebug("inbox found");
break;
}
}
for ( it = folders->first(); it; it = folders->next() ) {
fname = it->getDisplayName();
pos = fname.findRev(it->Separator());
if (pos != -1) {
fname = fname.left(pos);
}
IMAPfolderItem*pitem = findSubItem(fname);
if (pitem) {
@@ -225,48 +246,52 @@ void IMAPviewItem::createNewFolder()
if (ndirdlg.exec()) {
QString ndir = ndirdlg.Newdir();
bool makesubs = ndirdlg.subpossible();
QString delemiter = "/";
IMAPfolderItem*item = (IMAPfolderItem*)firstChild();
if (item) {
delemiter = item->Delemiter();
}
if (wrapper->createMbox(ndir,0,delemiter,makesubs)) {
refreshFolders(true);
}
}
}
void IMAPviewItem::contextMenuSelected(int id)
{
qDebug("Id selected: %i",id);
switch (id) {
case 0:
refreshFolders(true);
break;
case 1:
createNewFolder();
break;
+ case 2:
+ removeChilds();
+ wrapper->logout();
+ break;
default:
break;
}
}
RecBody IMAPviewItem::fetchBody(const RecMail&)
{
return RecBody();
}
IMAPfolderItem::~IMAPfolderItem()
{
delete folder;
}
IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after )
: AccountViewItem( parent , after )
{
folder = folderInit;
imap = parent;
if (folder->getDisplayName().lower()!="inbox") {
setPixmap( 0, PIXMAP_IMAPFOLDER );
} else {
setPixmap( 0, PIXMAP_INBOXFOLDER);