diff --git a/antispamwizard.cpp b/antispamwizard.cpp index 0831b48c7..69109a289 100644 --- a/antispamwizard.cpp +++ b/antispamwizard.cpp @@ -1165,6 +1165,8 @@ ASWizVirusRulesPage::ASWizVirusRulesPage( QWidget * parent, const char * name ) mFolderTree->folderTreeView()->expandAll(); mFolderTree->readableCollectionProxyModel()->setAccessRights( Akonadi::Collection::CanCreateCollection ); mFolderTree->readableCollectionProxyModel()->setHideVirtualFolder( true ); + mFolderTree->readableCollectionProxyModel()->setHideOutboxFolder( true ); + mFolderTree->readableCollectionProxyModel()->setHideImapFolder( true ); mFolderTree->selectCollectionFolder( KMKernel::self()->trashCollectionFolder() ); mFolderTree->folderTreeView()->setDragDropMode( QAbstractItemView::NoDragDrop ); diff --git a/folderrequester.cpp b/folderrequester.cpp index 2217e5773..b4335c183 100644 --- a/folderrequester.cpp +++ b/folderrequester.cpp @@ -79,6 +79,10 @@ void FolderRequester::slotOpenDialog() options |= FolderSelectionDialog::HideVirtualFolder; if ( mNotCreateNewFolder ) options |= FolderSelectionDialog::NotAllowToCreateNewFolder; + if ( !mShowImapFolders ) + options |= FolderSelectionDialog::HideImapFolder; + if ( !mShowOutbox ) + options |= FolderSelectionDialog::HideOutboxFolder; MessageViewer::AutoQPointer dlg( new FolderSelectionDialog( this, options ) ); diff --git a/folderselectiondialog.cpp b/folderselectiondialog.cpp index 66aa91f53..c191ac909 100644 --- a/folderselectiondialog.cpp +++ b/folderselectiondialog.cpp @@ -70,8 +70,15 @@ FolderSelectionDialog::FolderSelectionDialog( QWidget *parent, SelectionFolderOp d->folderTreeWidget->readableCollectionProxyModel()->setAccessRights( Akonadi::Collection::CanCreateCollection ); if ( options & FolderSelectionDialog::HideVirtualFolder ) d->folderTreeWidget->readableCollectionProxyModel()->setHideVirtualFolder( true ); + d->folderTreeWidget->readableCollectionProxyModel()->setHideSpecificFolder( true ); + if ( options & FolderSelectionDialog::HideOutboxFolder ) + d->folderTreeWidget->readableCollectionProxyModel()->setHideOutboxFolder( true ); + + if ( options & FolderSelectionDialog::HideImapFolder ) + d->folderTreeWidget->readableCollectionProxyModel()->setHideImapFolder( true ); + d->folderTreeWidget->folderTreeView()->setTooltipsPolicy( FolderTreeWidget::DisplayNever ); d->folderTreeWidget->folderTreeView()->setDragDropMode( QAbstractItemView::NoDragDrop ); layout->addWidget( d->folderTreeWidget ); diff --git a/folderselectiondialog.h b/folderselectiondialog.h index 1dfe641d3..e1d9adc7e 100644 --- a/folderselectiondialog.h +++ b/folderselectiondialog.h @@ -38,7 +38,9 @@ public: EnableCheck = 1, ShowUnreadCount = 2, HideVirtualFolder = 4, - NotAllowToCreateNewFolder = 8 + NotAllowToCreateNewFolder = 8, + HideOutboxFolder = 16, + HideImapFolder = 32 }; Q_DECLARE_FLAGS( SelectionFolderOptions, SelectionFolderOption ) diff --git a/readablecollectionproxymodel.cpp b/readablecollectionproxymodel.cpp index a5eccb0ba..acee4571d 100644 --- a/readablecollectionproxymodel.cpp +++ b/readablecollectionproxymodel.cpp @@ -21,6 +21,7 @@ #include "readablecollectionproxymodel.h" #include "foldercollection.h" #include "util.h" +#include "kmkernel.h" #include #include @@ -37,12 +38,16 @@ public: Private() : enableCheck( false ), hideVirtualFolder( false ), - hideSpecificFolder( false ) + hideSpecificFolder( false ), + hideOutboxFolder( false ), + hideImapFolder( false ) { } bool enableCheck; bool hideVirtualFolder; bool hideSpecificFolder; + bool hideOutboxFolder; + bool hideImapFolder; }; ReadableCollectionProxyModel::ReadableCollectionProxyModel( QObject *parent ) @@ -97,6 +102,7 @@ bool ReadableCollectionProxyModel::hideVirtualFolder() const void ReadableCollectionProxyModel::setHideSpecificFolder( bool hide ) { d->hideSpecificFolder = hide; + invalidate(); } bool ReadableCollectionProxyModel::hideSpecificFolder() const @@ -104,6 +110,28 @@ bool ReadableCollectionProxyModel::hideSpecificFolder() const return d->hideSpecificFolder; } +void ReadableCollectionProxyModel::setHideOutboxFolder( bool hide ) +{ + d->hideOutboxFolder = hide; + invalidate(); +} + +bool ReadableCollectionProxyModel::hideOutboxFolder() const +{ + return d->hideOutboxFolder; +} + +void ReadableCollectionProxyModel::setHideImapFolder( bool hide ) +{ + d->hideImapFolder = hide; + invalidate(); +} + +bool ReadableCollectionProxyModel::hideImapFolder() const +{ + return d->hideImapFolder; +} + bool ReadableCollectionProxyModel::acceptRow( int sourceRow, const QModelIndex &sourceParent) const { const QModelIndex modelIndex = sourceModel()->index( sourceRow, 0, sourceParent ); @@ -119,6 +147,15 @@ bool ReadableCollectionProxyModel::acceptRow( int sourceRow, const QModelIndex & return false; } + if ( d->hideOutboxFolder ) { + if ( collection == KMKernel::self()->outboxCollectionFolder() ) + return false; + } + if ( d->hideImapFolder ) { + if ( collection.resource().startsWith( IMAP_RESOURCE_IDENTIFIER ) ) + return false; + } + return Akonadi::EntityRightsFilterModel::acceptRow( sourceRow, sourceParent ); } diff --git a/readablecollectionproxymodel.h b/readablecollectionproxymodel.h index fb8827cb2..14e4dbdfd 100644 --- a/readablecollectionproxymodel.h +++ b/readablecollectionproxymodel.h @@ -45,6 +45,12 @@ public: bool hideSpecificFolder() const; + void setHideOutboxFolder( bool hide ); + bool hideOutboxFolder() const; + + void setHideImapFolder( bool hide ); + bool hideImapFolder() const; + void setNecessaryRight( Akonadi::Collection::Rights right ); protected: