summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountview.cpp
blob: a531976b37713faf8bfcfc96cb578b9aa824b099 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "accountview.h"
#include "imapwrapper.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);
}