summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountview.cpp
Unidiff
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 @@
1#include "accountview.h"
2#include "defines.h"
3
4IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent )
5 : AccountViewItem( parent )
6{
7 account = a;
8 wrapper = new IMAPwrapper( account );
9 setPixmap( 0, PIXMAP_IMAPFOLDER );
10 setText( 0, account->getAccountName() );
11 setOpen( true );
12}
13
14IMAPviewItem::~IMAPviewItem()
15{
16 delete wrapper;
17}
18
19IMAPwrapper *IMAPviewItem::getWrapper()
20{
21 return wrapper;
22}
23
24void IMAPviewItem::refresh(Maillist&)
25{
26 QList<IMAPFolder> *folders = wrapper->listFolders();
27
28 QListViewItem *child = firstChild();
29 while ( child ) {
30 QListViewItem *tmp = child;
31 child = child->nextSibling();
32 delete tmp;
33 }
34
35 IMAPFolder *it;
36 for ( it = folders->first(); it; it = folders->next() ) {
37 (void) new IMAPfolderItem( it, this );
38 }
39}
40
41
42IMAPfolderItem::~IMAPfolderItem()
43{
44 delete folder;
45}
46
47IMAPfolderItem::IMAPfolderItem( IMAPFolder *folderInit, IMAPviewItem *parent )
48 : AccountViewItem( parent )
49{
50 folder = folderInit;
51 imap = parent;
52 setPixmap( 0, PIXMAP_IMAPFOLDER );
53 setText( 0, folder->getDisplayName() );
54}
55
56void IMAPfolderItem::refresh(Maillist&target)
57{
58 imap->getWrapper()->listMessages( folder->getName(),target );
59}
60
61QString IMAPfolderItem::fetchBody(const RecMail&aMail)
62{
63 return imap->getWrapper()->fetchBody(folder->getName(),aMail);
64}
65
66AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
67 : QListView( parent, name, flags )
68{
69 connect( this, SIGNAL( clicked( QListViewItem * ) ),
70 SLOT( refresh( QListViewItem * ) ) );
71}
72
73void AccountView::populate( QList<Account> list )
74{
75 clear();
76
77 Account *it;
78 for ( it = list.first(); it; it = list.next() ) {
79 if ( it->getType().compare( "IMAP" ) == 0 ) {
80 IMAPaccount *imap = static_cast<IMAPaccount *>(it);
81 qDebug( "added IMAP " + imap->getAccountName() );
82 (void) new IMAPviewItem( imap, this );
83 }
84 }
85}
86
87void AccountView::refresh(QListViewItem *item) {
88 qDebug("AccountView refresh...");
89 if ( item ) {
90 Maillist headerlist;
91 headerlist.setAutoDelete(true);
92 AccountViewItem *view = static_cast<AccountViewItem *>(item);
93 view->refresh(headerlist);
94 emit refreshMailview(&headerlist);
95 }
96}
97
98void AccountView::refreshAll()
99{
100
101}
102
103QString AccountView::fetchBody(const RecMail&aMail)
104{
105 QString Body;
106 QListViewItem*item = selectedItem ();
107 if (!item) return Body;
108 AccountViewItem *view = static_cast<AccountViewItem *>(item);
109 return view->fetchBody(aMail);
110}