2
This file is part of kdepim.
3
Copyright (c) 2009 Kevin Krammer <kevin.krammer@gmx.at>
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Library General Public
7
License as published by the Free Software Foundation; either
8
version 2 of the License, or (at your option) any later version.
10
This library is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Library General Public License for more details.
15
You should have received a copy of the GNU Library General Public License
16
along with this library; see the file COPYING.LIB. If not, write to
17
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18
Boston, MA 02110-1301, USA.
21
#include "storecollectionfilterproxymodel.h"
23
#include "abstractsubresourcemodel.h"
24
#include "subresourcebase.h"
26
#include <akonadi/collectionmodel.h>
28
using namespace Akonadi;
30
StoreCollectionFilterProxyModel::StoreCollectionFilterProxyModel( QObject *parent )
31
: CollectionFilterProxyModel( parent ),
32
mSubResourceModel( 0 )
36
StoreCollectionFilterProxyModel::~StoreCollectionFilterProxyModel()
40
void StoreCollectionFilterProxyModel::setSubResourceModel( const AbstractSubResourceModel *subResourceModel )
42
if ( mSubResourceModel != subResourceModel ) {
43
mSubResourceModel = subResourceModel;
48
bool StoreCollectionFilterProxyModel::filterAcceptsRow( int sourceRow,
49
const QModelIndex &sourceParent) const
51
// if the base class rejects it, it doesn't match our MIME type criteria
52
if ( !CollectionFilterProxyModel::filterAcceptsRow( sourceRow, sourceParent ) ) {
56
QModelIndex index = sourceModel()->index( sourceRow, 0, sourceParent );
57
if ( index.isValid() ) {
58
QVariant data = sourceModel()->data( index, CollectionModel::CollectionRole );
59
if ( data.isValid() ) {
60
Collection collection = data.value<Collection>();
61
if ( collection.isValid() ) {
62
// only accept collections into which we can store new items
63
if ( ( collection.rights() & Collection::CanCreateItem ) != 0 ) {
64
// if we have a sub resource model, check the associated sub resource,
65
// otherwise just accept
66
if ( mSubResourceModel != 0 ) {
67
SubResourceBase *subResource = mSubResourceModel->subResourceBase( collection.id() );
69
// only accept sub resources which are active
70
return subResource != 0 && subResource->isActive();
82
// kate: space-indent on; indent-width 2; replace-tabs on;