summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountitem.cpp
authoralwin <alwin>2004-03-12 14:12:00 (UTC)
committer alwin <alwin>2004-03-12 14:12:00 (UTC)
commitd1929ef43f0eaaa17aa42196384d1ed925132873 (patch) (side-by-side diff)
treeeff911f93fe7919d7820e5a2e68b72f2f76143da /noncore/net/mail/accountitem.cpp
parentd38384a6edb0110117e0297864f813b379d52789 (diff)
downloadopie-d1929ef43f0eaaa17aa42196384d1ed925132873.zip
opie-d1929ef43f0eaaa17aa42196384d1ed925132873.tar.gz
opie-d1929ef43f0eaaa17aa42196384d1ed925132873.tar.bz2
some pointers embedded into osmart_pointer handling
Diffstat (limited to 'noncore/net/mail/accountitem.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp115
1 files changed, 54 insertions, 61 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index 396dcb7..3e12563 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -36,65 +36,63 @@ POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent )
}
#endif
setText( 0, account->getAccountName() );
setOpen( true );
}
POP3viewItem::~POP3viewItem()
{
delete wrapper;
}
AbstractMail *POP3viewItem::getWrapper()
{
return wrapper;
}
void POP3viewItem::refresh( QList<RecMail> & )
{
refresh();
}
void POP3viewItem::refresh()
{
if (account->getOffline()) return;
- QList<Folder> *folders = wrapper->listFolders();
+ QValueList<FolderP> *folders = wrapper->listFolders();
QListViewItem *child = firstChild();
while ( child )
{
QListViewItem *tmp = child;
child = child->nextSibling();
delete tmp;
}
- Folder *it;
+ QValueList<FolderP>::ConstIterator it;
QListViewItem*item = 0;
- for ( it = folders->first(); it; it = folders->next() )
+ for ( it = folders->begin(); it!=folders->end(); ++it)
{
- item = new POP3folderItem( it, this , item );
- item->setSelectable(it->may_select());
+ item = new POP3folderItem( (*it), this , item );
+ item->setSelectable( (*it)->may_select());
}
- // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- folders->setAutoDelete(false);
delete folders;
}
RecBody POP3viewItem::fetchBody( const RecMail &mail )
{
qDebug( "POP3 fetchBody" );
return wrapper->fetchBody( mail );
}
QPopupMenu * POP3viewItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
if (!account->getOffline())
{
m->insertItem(QObject::tr("Disconnect",contextName),0);
m->insertItem(QObject::tr("Set offline",contextName),1);
}
else
{
m->insertItem(QObject::tr("Set online",contextName),1);
}
}
@@ -120,52 +118,51 @@ void POP3viewItem::setOnOffline()
disconnect();
}
account->setOffline(!account->getOffline());
account->save();
SETPIX(PIXMAP_POP3FOLDER);
refresh();
}
void POP3viewItem::contextMenuSelected(int which)
{
switch (which)
{
case 0:
disconnect();
break;
case 1:
setOnOffline();
break;
}
}
POP3folderItem::~POP3folderItem()
{}
-POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QListViewItem*after )
- : AccountViewItem( parent,after )
+POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after )
+ : AccountViewItem(folderInit,parent,after )
{
- folder = folderInit;
pop3 = parent;
if (folder->getDisplayName().lower()!="inbox")
{
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()
@@ -229,65 +226,64 @@ NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent )
}
#endif
setText( 0, account->getAccountName() );
setOpen( true );
}
NNTPviewItem::~NNTPviewItem()
{
delete wrapper;
}
AbstractMail *NNTPviewItem::getWrapper()
{
return wrapper;
}
void NNTPviewItem::refresh( QList<RecMail> & )
{
refresh();
}
void NNTPviewItem::refresh()
{
if (account->getOffline()) return;
- QList<Folder> *folders = wrapper->listFolders();
+ QValueList<FolderP> *folders = wrapper->listFolders();
+
QListViewItem *child = firstChild();
while ( child )
{
QListViewItem *tmp = child;
child = child->nextSibling();
delete tmp;
}
- Folder *it;
+ QValueList<FolderP>::ConstIterator it;
QListViewItem*item = 0;
- for ( it = folders->first(); it; it = folders->next() )
+ for ( it = folders->begin(); it!=folders->end(); ++it)
{
- item = new NNTPfolderItem( it, this , item );
- item->setSelectable(it->may_select());
+ item = new NNTPfolderItem( (*it), this , item );
+ item->setSelectable( (*it)->may_select());
}
- // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- folders->setAutoDelete(false);
delete folders;
}
RecBody NNTPviewItem::fetchBody( const RecMail &mail )
{
qDebug( "NNTP fetchBody" );
return wrapper->fetchBody( mail );
}
QPopupMenu * NNTPviewItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
if (!account->getOffline())
{
m->insertItem(QObject::tr("Disconnect",contextName),0);
m->insertItem(QObject::tr("Set offline",contextName),1);
m->insertItem(QObject::tr("(Un-)Subscribe groups",contextName),2);
}
else
{
m->insertItem(QObject::tr("Set online",contextName),1);
}
@@ -326,52 +322,51 @@ void NNTPviewItem::setOnOffline()
//FIXME
SETPIX(PIXMAP_POP3FOLDER);
refresh();
}
void NNTPviewItem::contextMenuSelected(int which)
{
switch (which)
{
case 0:
disconnect();
break;
case 1:
setOnOffline();
break;
case 2:
subscribeGroups();
break;
}
}
NNTPfolderItem::~NNTPfolderItem()
{}
-NNTPfolderItem::NNTPfolderItem( Folder *folderInit, NNTPviewItem *parent , QListViewItem*after )
- : AccountViewItem( parent,after )
+NNTPfolderItem::NNTPfolderItem( const FolderP &folderInit, NNTPviewItem *parent , QListViewItem*after )
+ : AccountViewItem( folderInit, parent,after )
{
- folder = folderInit;
nntp = parent;
if (folder->getDisplayName().lower()!="inbox")
{
setPixmap( 0, PIXMAP_POP3FOLDER );
}
else
{
setPixmap( 0, PIXMAP_INBOXFOLDER);
}
setText( 0, folder->getDisplayName() );
}
void NNTPfolderItem::refresh(QList<RecMail>&target)
{
if (folder->may_select())
nntp->getWrapper()->listMessages( folder->getName(),target );
}
RecBody NNTPfolderItem::fetchBody(const RecMail&aMail)
{
return nntp->getWrapper()->fetchBody(aMail);
}
QPopupMenu * NNTPfolderItem::getContextMenu()
@@ -429,89 +424,87 @@ IMAPviewItem::~IMAPviewItem()
}
AbstractMail *IMAPviewItem::getWrapper()
{
return wrapper;
}
void IMAPviewItem::refresh(QList<RecMail>&)
{
refreshFolders(false);
}
const QStringList&IMAPviewItem::subFolders()
{
return currentFolders;
}
void IMAPviewItem::refreshFolders(bool force)
{
if (childCount()>0 && force==false) return;
if (account->getOffline()) return;
removeChilds();
currentFolders.clear();
- QList<Folder> *folders = wrapper->listFolders();
+ QValueList<FolderP> * folders = wrapper->listFolders();
- Folder *it;
+ QValueList<FolderP>::Iterator it;
QListViewItem*item = 0;
QListViewItem*titem = 0;
QString fname,del,search;
int pos;
- // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- folders->setAutoDelete(false);
- for ( it = folders->first(); it; it = folders->next() )
+ for ( it = folders->begin(); it!=folders->end(); ++it)
{
- if (it->getDisplayName().lower()=="inbox")
+ if ((*it)->getDisplayName().lower()=="inbox")
{
- item = new IMAPfolderItem( it, this , item );
+ item = new IMAPfolderItem( (*it), this , item );
folders->remove(it);
qDebug("inbox found");
break;
}
}
- for ( it = folders->first(); it; it = folders->next() )
+ for ( it = folders->begin(); it!=folders->end(); ++it)
{
- fname = it->getDisplayName();
- currentFolders.append(it->getName());
- pos = fname.findRev(it->Separator());
+ fname = (*it)->getDisplayName();
+ currentFolders.append((*it)->getName());
+ pos = fname.findRev((*it)->Separator());
if (pos != -1)
{
fname = fname.left(pos);
}
IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname);
if (pitem)
{
titem = item;
- item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this);
+ item = new IMAPfolderItem( (*it),pitem,pitem->firstChild(),this);
/* setup the short name */
- item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1));
+ item->setText(0,(*it)->getDisplayName().right((*it)->getDisplayName().length()-pos-1));
item = titem;
}
else
{
- item = new IMAPfolderItem( it, this , item );
+ item = new IMAPfolderItem( (*it), this , item );
}
}
delete folders;
}
QPopupMenu * IMAPviewItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
if (!account->getOffline())
{
m->insertItem(QObject::tr("Refresh folder list",contextName),0);
m->insertItem(QObject::tr("Create new folder",contextName),1);
m->insertSeparator();
m->insertItem(QObject::tr("Disconnect",contextName),2);
m->insertItem(QObject::tr("Set offline",contextName),3);
}
else
{
m->insertItem(QObject::tr("Set online",contextName),3);
}
}
return m;
@@ -557,68 +550,66 @@ void IMAPviewItem::contextMenuSelected(int id)
{
removeChilds();
wrapper->logout();
}
account->setOffline(!account->getOffline());
account->save();
SETPIX(PIXMAP_IMAPFOLDER);
refreshFolders(false);
break;
default:
break;
}
}
RecBody IMAPviewItem::fetchBody(const RecMail&)
{
return RecBody();
}
bool IMAPviewItem::offline()
{
return account->getOffline();
}
-IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after )
- : AccountViewItem( parent , after )
+IMAPfolderItem::IMAPfolderItem( const FolderP& folderInit, IMAPviewItem *parent , QListViewItem*after )
+ : AccountViewItem( folderInit, parent , after )
{
- folder = folderInit;
imap = parent;
if (folder->getDisplayName().lower()!="inbox")
{
setPixmap( 0, PIXMAP_IMAPFOLDER );
}
else
{
setPixmap( 0, PIXMAP_INBOXFOLDER);
}
setText( 0, folder->getDisplayName() );
}
-IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master )
- : AccountViewItem( parent,after )
+IMAPfolderItem::IMAPfolderItem(const FolderP &folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master )
+ : AccountViewItem(folderInit, parent,after )
{
- folder = folderInit;
imap = master;
if (folder->getDisplayName().lower()!="inbox")
{
setPixmap( 0, PIXMAP_IMAPFOLDER );
}
else
{
setPixmap( 0, PIXMAP_INBOXFOLDER);
}
setText( 0, folder->getDisplayName() );
}
IMAPfolderItem::~IMAPfolderItem()
{}
const QString& IMAPfolderItem::Delemiter()const
{
return folder->Separator();
}
void IMAPfolderItem::refresh(QList<RecMail>&target)
{
if (folder->may_select())
{
@@ -747,87 +738,85 @@ MHviewItem::MHviewItem( const QString&aPath, AccountView *parent )
folder = 0;
}
MHviewItem::~MHviewItem()
{
delete wrapper;
}
AbstractMail *MHviewItem::getWrapper()
{
return wrapper;
}
void MHviewItem::refresh( QList<RecMail> & target)
{
refresh(false);
getWrapper()->listMessages( "",target );
}
void MHviewItem::refresh(bool force)
{
if (childCount()>0 && force==false) return;
removeChilds();
currentFolders.clear();
- QList<Folder> *folders = wrapper->listFolders();
- Folder *it;
+ QValueList<FolderP> *folders = wrapper->listFolders();
+ QValueList<FolderP>::ConstIterator it;
MHfolderItem*item = 0;
MHfolderItem*pmaster = 0;
QString fname = "";
int pos;
- for ( it = folders->first(); it; it = folders->next() )
+ for ( it = folders->begin(); it!=folders->end(); ++it)
{
- fname = it->getDisplayName();
+ fname = (*it)->getDisplayName();
/* this folder itself */
if (fname=="/")
{
currentFolders.append(fname);
- folder = it;
+ folder = (*it);
continue;
}
currentFolders.append(fname);
pos = fname.findRev("/");
if (pos > 0)
{
fname = fname.left(pos);
pmaster = (MHfolderItem*)findSubItem(fname);
}
else
{
pmaster = 0;
}
if (pmaster)
{
- item = new MHfolderItem( it, pmaster, item, this );
+ item = new MHfolderItem( (*it), pmaster, item, this );
}
else
{
- item = new MHfolderItem( it, this , item );
+ item = new MHfolderItem( (*it), this , item );
}
- item->setSelectable(it->may_select());
+ item->setSelectable((*it)->may_select());
}
- // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- folders->setAutoDelete(false);
delete folders;
}
RecBody MHviewItem::fetchBody( const RecMail &mail )
{
qDebug( "MH fetchBody" );
return wrapper->fetchBody( mail );
}
QPopupMenu * MHviewItem::getContextMenu()
{
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
m->insertItem(QObject::tr("Refresh folder list",contextName),0);
m->insertItem(QObject::tr("Create new folder",contextName),1);
m->insertItem(QObject::tr("Delete all mails",contextName),2);
m->insertItem(QObject::tr("Move/Copie all mails",contextName),3);
}
return m;
}
void MHviewItem::createFolder()
{
@@ -857,92 +846,91 @@ QStringList MHviewItem::subFolders()
void MHviewItem::contextMenuSelected(int which)
{
switch (which)
{
case 0:
refresh(true);
break;
case 1:
createFolder();
break;
case 2:
deleteAllMail(getWrapper(),folder);
break;
case 3:
downloadMails();
break;
default:
break;
}
}
MHfolderItem::~MHfolderItem()
{}
-MHfolderItem::MHfolderItem( Folder *folderInit, MHviewItem *parent , QListViewItem*after )
- : AccountViewItem( parent,after )
+MHfolderItem::MHfolderItem( const FolderP &folderInit, MHviewItem *parent , QListViewItem*after )
+ : AccountViewItem(folderInit, parent,after )
{
- folder = folderInit;
mbox = parent;
initName();
}
-MHfolderItem::MHfolderItem( Folder *folderInit, MHfolderItem *parent, QListViewItem*after, MHviewItem*master)
- : AccountViewItem( parent,after )
+MHfolderItem::MHfolderItem(const FolderP& folderInit, MHfolderItem *parent, QListViewItem*after, MHviewItem*master)
+ : AccountViewItem(folderInit, parent,after )
{
folder = folderInit;
mbox = master;
initName();
}
void MHfolderItem::initName()
{
QString bName = folder->getDisplayName();
if (bName.startsWith("/")&&bName.length()>1)
{
bName.replace(0,1,"");
}
int pos = bName.findRev("/");
if (pos > 0)
{
bName.replace(0,pos+1,"");
}
if (bName.lower() == "outgoing")
{
setPixmap( 0, PIXMAP_OUTBOXFOLDER );
}
else if (bName.lower() == "inbox")
{
setPixmap( 0, PIXMAP_INBOXFOLDER);
} else if (bName.lower() == "drafts") {
setPixmap(0, Resource::loadPixmap("inline/edit"));
} else {
setPixmap( 0, PIXMAP_MBOXFOLDER );
}
setText( 0, bName );
}
-Folder*MHfolderItem::getFolder()
+const FolderP&MHfolderItem::getFolder()const
{
return folder;
}
void MHfolderItem::refresh(QList<RecMail>&target)
{
if (folder->may_select())
mbox->getWrapper()->listMessages( folder->getName(),target );
}
RecBody MHfolderItem::fetchBody(const RecMail&aMail)
{
return mbox->getWrapper()->fetchBody(aMail);
}
void MHfolderItem::deleteFolder()
{
int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName),
QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()),
QObject::tr("Yes",contextName),
QObject::tr("No",contextName),QString::null,1,1);
qDebug("Auswahl: %i",yesno);
if (yesno == 0)
{
@@ -1022,76 +1010,81 @@ void MHfolderItem::contextMenuSelected(int which)
break;
}
}
bool MHfolderItem::isDraftfolder()
{
if (folder && folder->getName()==AbstractMail::defaultLocalfolder()+"/"+AbstractMail::draftFolder()) return true;
return false;
}
/**
* Generic stuff
*/
const QString AccountViewItem::contextName="AccountViewItem";
AccountViewItem::AccountViewItem( AccountView *parent )
: QListViewItem( parent )
{
init();
m_Backlink = parent;
}
AccountViewItem::AccountViewItem( QListViewItem *parent)
- : QListViewItem( parent)
+ : QListViewItem( parent),folder(0)
{
init();
}
AccountViewItem::AccountViewItem( QListViewItem *parent , QListViewItem*after )
- :QListViewItem( parent,after )
+ :QListViewItem( parent,after ),folder(0)
+{
+ init();
+}
+
+AccountViewItem::AccountViewItem( const Opie::osmart_pointer<Folder>&folderInit,QListViewItem *parent , QListViewItem*after )
+ :QListViewItem( parent,after ),folder(folderInit)
{
init();
}
void AccountViewItem::init()
{
m_Backlink = 0;
- folder = 0;
}
AccountViewItem::~AccountViewItem()
{
- if (folder) delete folder;
+ folder = 0;
}
AccountView*AccountViewItem::accountView()
{
return m_Backlink;
}
-void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder)
+void AccountViewItem::deleteAllMail(AbstractMail*wrapper,const FolderP&folder)
{
if (!wrapper) return;
QString fname="";
if (folder) fname = folder->getDisplayName();
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(fname),
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();
}
}
}
void AccountViewItem::removeChilds()
{
QListViewItem *child = firstChild();
while ( child )