author | alwin <alwin> | 2003-12-17 00:30:31 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-17 00:30:31 (UTC) |
commit | a928f1fc8469124e10a7042846d258401e41f7d6 (patch) (side-by-side diff) | |
tree | 225db6d7356d3ff3a0a3f3768c2fc0fa10360edc /noncore/net/mail/accountview.cpp | |
parent | 27151bb106e2cbd7f649dae228189ebcaccd7aac (diff) | |
download | opie-a928f1fc8469124e10a7042846d258401e41f7d6.zip opie-a928f1fc8469124e10a7042846d258401e41f7d6.tar.gz opie-a928f1fc8469124e10a7042846d258401e41f7d6.tar.bz2 |
imap folder will be displayed more structured
Diffstat (limited to 'noncore/net/mail/accountview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/mail/accountview.cpp | 69 |
1 files changed, 62 insertions, 7 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index 8e21d39..b6bf298 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp @@ -105,25 +105,62 @@ AbstractMail *IMAPviewItem::getWrapper() } void IMAPviewItem::refresh(QList<RecMail>&) { + if (childCount()>0) return; QList<Folder> *folders = wrapper->listFolders(); - QListViewItem *child = firstChild(); + QListViewItem *child = firstChild(); while ( child ) { QListViewItem *tmp = child; child = child->nextSibling(); delete tmp; } Folder *it; QListViewItem*item = 0; - for ( it = folders->first(); it; it = folders->next() ) { - item = new IMAPfolderItem( it, this , item ); - item->setSelectable(it->may_select()); - } + QListViewItem*titem = 0; + QListViewItem*inboxitem = 0; + QString fname,del,search; + int pos; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! folders->setAutoDelete(false); + + for ( it = folders->first(); it; it = folders->next() ) { + if (it->getDisplayName().lower()=="inbox") { + inboxitem = 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); + qDebug(fname); + } + IMAPfolderItem*pitem = (IMAPfolderItem*)firstChild(); + while (pitem) { + if (pitem->matchName(fname)) { + break; + } + pitem=(IMAPfolderItem*)pitem->nextSibling(); + } + if (pitem) { + titem = item; + item = new IMAPfolderItem(it,pitem,item,this); + item->setSelectable(it->may_select()); + /* setup the short name */ + item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); + item = titem; + } else { + item = new IMAPfolderItem( it, this , (inboxitem?inboxitem:item) ); + item->setSelectable(it->may_select()); + } + } delete folders; } RecBody IMAPviewItem::fetchBody(const RecMail&) @@ -136,9 +173,9 @@ IMAPfolderItem::~IMAPfolderItem() delete folder; } IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after ) - : AccountViewItem( parent,after ) + : AccountViewItem( parent ) { folder = folderInit; imap = parent; if (folder->getDisplayName().lower()!="inbox") { @@ -148,8 +185,26 @@ IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QList } setText( 0, folder->getDisplayName() ); } +IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ) + : AccountViewItem( parent,after ) +{ + folder = folderInit; + imap = master; + if (folder->getDisplayName().lower()!="inbox") { + setPixmap( 0, PIXMAP_IMAPFOLDER ); + } else { + setPixmap( 0, PIXMAP_INBOXFOLDER); + } + setText( 0, folder->getDisplayName() ); +} + +bool IMAPfolderItem::matchName(const QString&name)const +{ + return folder->getDisplayName()==name; +} + void IMAPfolderItem::refresh(QList<RecMail>&target) { if (folder->may_select()) imap->getWrapper()->listMessages( folder->getName(),target ); @@ -168,9 +223,9 @@ AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) : QListView( parent, name, flags ) { connect( this, SIGNAL( selectionChanged( QListViewItem * ) ), SLOT( refresh( QListViewItem * ) ) ); - setSorting(-1); + setSorting(0); } void AccountView::populate( QList<Account> list ) { |