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) --- diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index 847b099..d725b87 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp @@ -73,7 +73,11 @@ void IMAPviewItem::refresh(QList&) QListViewItem*item = 0; for ( it = folders->first(); it; it = folders->next() ) { item = new IMAPfolderItem( it, this , item ); + item->setSelectable(it->may_select()); } + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + folders->setAutoDelete(false); + delete folders; } RecBody IMAPviewItem::fetchBody(const RecMail&) @@ -97,7 +101,8 @@ IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QList void IMAPfolderItem::refresh(QList&target) { - imap->getWrapper()->listMessages( folder->getName(),target ); + if (folder->may_select()) + imap->getWrapper()->listMessages( folder->getName(),target ); } RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) @@ -112,7 +117,7 @@ RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) : QListView( parent, name, flags ) { - connect( this, SIGNAL( clicked( QListViewItem * ) ), + connect( this, SIGNAL( selectionChanged( QListViewItem * ) ), SLOT( refresh( QListViewItem * ) ) ); setSorting(-1); } 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* 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); 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); diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index 62523bf..5065d29 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp @@ -273,7 +273,7 @@ void POP3wrapper::logout() QList* POP3wrapper::listFolders() { QList * folders = new QList(); - folders->setAutoDelete( true ); + folders->setAutoDelete( false ); Folder*inb=new Folder("INBOX"); folders->append(inb); return folders; diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp index cab1a66..fae3e97 100644 --- a/noncore/net/mail/mainwindow.cpp +++ b/noncore/net/mail/mainwindow.cpp @@ -83,7 +83,7 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) folderView = new AccountView( view ); folderView->header()->hide(); - folderView->setRootIsDecorated( false ); + folderView->setRootIsDecorated( true ); folderView->addColumn( tr( "Mailbox" ) ); //folderView->hide(); diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp index 62523bf..5065d29 100644 --- a/noncore/net/mail/pop3wrapper.cpp +++ b/noncore/net/mail/pop3wrapper.cpp @@ -273,7 +273,7 @@ void POP3wrapper::logout() QList* POP3wrapper::listFolders() { QList * folders = new QList(); - folders->setAutoDelete( true ); + folders->setAutoDelete( false ); Folder*inb=new Folder("INBOX"); folders->append(inb); return folders; diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp index 2415c82..e53f4a3 100644 --- a/noncore/net/mail/viewmail.cpp +++ b/noncore/net/mail/viewmail.cpp @@ -1,5 +1,5 @@ #include -#include ? +#include #include #include #include -- cgit v0.9.0.2