summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountview.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/mail/accountview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
new file mode 100644
index 0000000..c6a44ab
--- a/dev/null
+++ b/noncore/net/mail/accountview.cpp
@@ -0,0 +1,110 @@
+#include "accountview.h"
+#include "defines.h"
+
+IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent )
+ : AccountViewItem( parent )
+{
+ account = a;
+ wrapper = new IMAPwrapper( account );
+ setPixmap( 0, PIXMAP_IMAPFOLDER );
+ setText( 0, account->getAccountName() );
+ setOpen( true );
+}
+
+IMAPviewItem::~IMAPviewItem()
+{
+ delete wrapper;
+}
+
+IMAPwrapper *IMAPviewItem::getWrapper()
+{
+ return wrapper;
+}
+
+void IMAPviewItem::refresh(Maillist&)
+{
+ QList<IMAPFolder> *folders = wrapper->listFolders();
+
+ QListViewItem *child = firstChild();
+ while ( child ) {
+ QListViewItem *tmp = child;
+ child = child->nextSibling();
+ delete tmp;
+ }
+
+ IMAPFolder *it;
+ for ( it = folders->first(); it; it = folders->next() ) {
+ (void) new IMAPfolderItem( it, this );
+ }
+}
+
+
+IMAPfolderItem::~IMAPfolderItem()
+{
+ delete folder;
+}
+
+IMAPfolderItem::IMAPfolderItem( IMAPFolder *folderInit, IMAPviewItem *parent )
+ : AccountViewItem( parent )
+{
+ folder = folderInit;
+ imap = parent;
+ setPixmap( 0, PIXMAP_IMAPFOLDER );
+ setText( 0, folder->getDisplayName() );
+}
+
+void IMAPfolderItem::refresh(Maillist&target)
+{
+ imap->getWrapper()->listMessages( folder->getName(),target );
+}
+
+QString IMAPfolderItem::fetchBody(const RecMail&aMail)
+{
+ return imap->getWrapper()->fetchBody(folder->getName(),aMail);
+}
+
+AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
+ : QListView( parent, name, flags )
+{
+ connect( this, SIGNAL( clicked( QListViewItem * ) ),
+ SLOT( refresh( QListViewItem * ) ) );
+}
+
+void AccountView::populate( QList<Account> list )
+{
+ clear();
+
+ Account *it;
+ for ( it = list.first(); it; it = list.next() ) {
+ if ( it->getType().compare( "IMAP" ) == 0 ) {
+ IMAPaccount *imap = static_cast<IMAPaccount *>(it);
+ qDebug( "added IMAP " + imap->getAccountName() );
+ (void) new IMAPviewItem( imap, this );
+ }
+ }
+}
+
+void AccountView::refresh(QListViewItem *item) {
+ qDebug("AccountView refresh...");
+ if ( item ) {
+ Maillist headerlist;
+ headerlist.setAutoDelete(true);
+ AccountViewItem *view = static_cast<AccountViewItem *>(item);
+ view->refresh(headerlist);
+ emit refreshMailview(&headerlist);
+ }
+}
+
+void AccountView::refreshAll()
+{
+
+}
+
+QString AccountView::fetchBody(const RecMail&aMail)
+{
+ QString Body;
+ QListViewItem*item = selectedItem ();
+ if (!item) return Body;
+ AccountViewItem *view = static_cast<AccountViewItem *>(item);
+ return view->fetchBody(aMail);
+}