author | alwin <alwin> | 2003-12-14 03:41:49 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-14 03:41:49 (UTC) |
commit | 84ac61a9b46d463c9e3112f55cc1e69957d1348a (patch) (side-by-side diff) | |
tree | aa2a03fc364b529a9863d44b9d51f030b22f4820 /noncore/net/mail/imapwrapper.cpp | |
parent | 12ba6ab9606538628afc7f7015e115a0251d0389 (diff) | |
download | opie-84ac61a9b46d463c9e3112f55cc1e69957d1348a.zip opie-84ac61a9b46d463c9e3112f55cc1e69957d1348a.tar.gz opie-84ac61a9b46d463c9e3112f55cc1e69957d1348a.tar.bz2 |
-memleak fixed
-check for non-selectable mailboxes
-potential crasher fixed
-selection handling better (app will not send a net-command on each mouse
click)
Diffstat (limited to 'noncore/net/mail/imapwrapper.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp index 9ee0dff..912a412 100644 --- a/noncore/net/mail/imapwrapper.cpp +++ b/noncore/net/mail/imapwrapper.cpp @@ -149,7 +149,7 @@ QList<Folder>* IMAPwrapper::listFolders() clistcell *current; QList<Folder> * folders = new QList<Folder>(); - folders->setAutoDelete( true ); + folders->setAutoDelete( false ); login(); if (!m_imap) { return folders; @@ -188,19 +188,23 @@ QList<Folder>* IMAPwrapper::listFolders() if (!path) path = ""; result = clist_new(); qDebug(path); + bool selectable = true; + mailimap_mbx_list_flags*bflags; err = mailimap_list( m_imap, (char*)path, (char*)mask, &result ); if ( err == MAILIMAP_NO_ERROR ) { current = result->first; - for ( int i = result->count; i > 0; i-- ) { + for ( current=clist_begin(result);current!=NULL;current=clist_next(current)) { list = (mailimap_mailbox_list *) current->data; // it is better use the deep copy mechanism of qt itself // instead of using strdup! temp = list->mb_name; - current = current->next; if (temp.lower()=="inbox") continue; - folders->append(new IMAPFolder(temp)); - + if ( (bflags = list->mb_flag) ) { + selectable = !(bflags->mbf_type==MAILIMAP_MBX_LIST_FLAGS_SFLAG&& + bflags->mbf_sflag==MAILIMAP_MBX_LIST_SFLAG_NOSELECT); + } + folders->append(new IMAPFolder(temp,selectable)); } } else { qDebug("error fetching folders %s",m_imap->imap_response); |