From 84ac61a9b46d463c9e3112f55cc1e69957d1348a Mon Sep 17 00:00:00 2001 From: alwin Date: Sun, 14 Dec 2003 03:41:49 +0000 Subject: -memleak fixed -check for non-selectable mailboxes -potential crasher fixed -selection handling better (app will not send a net-command on each mouse click) --- (limited to 'noncore/net/mail/libmailwrapper/imapwrapper.cpp') diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp index 9ee0dff..912a412 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp @@ -149,7 +149,7 @@ QList* IMAPwrapper::listFolders() clistcell *current; QList * folders = new QList(); - folders->setAutoDelete( true ); + folders->setAutoDelete( false ); login(); if (!m_imap) { return folders; @@ -188,19 +188,23 @@ QList* 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); -- cgit v0.9.0.2