~ubuntu-branches/ubuntu/karmic/kdepim/karmic-backports

« back to all changes in this revision

Viewing changes to akonadi/kresources/shared/storecollectionfilterproxymodel.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christian Mangold
  • Date: 2009-07-10 06:34:50 UTC
  • mfrom: (1.1.40 upstream)
  • Revision ID: james.westby@ubuntu.com-20090710063450-neojgew2fh0n3y0u
Tags: 4:4.2.96-0ubuntu1
* New upstream release
* Bump kde build-deps to 4.2.96

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
    This file is part of kdepim.
3
 
    Copyright (c) 2009 Kevin Krammer <kevin.krammer@gmx.at>
4
 
 
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.
9
 
 
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.
14
 
 
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.
19
 
*/
20
 
 
21
 
#include "storecollectionfilterproxymodel.h"
22
 
 
23
 
#include "abstractsubresourcemodel.h"
24
 
#include "subresourcebase.h"
25
 
 
26
 
#include <akonadi/collectionmodel.h>
27
 
 
28
 
using namespace Akonadi;
29
 
 
30
 
StoreCollectionFilterProxyModel::StoreCollectionFilterProxyModel( QObject *parent )
31
 
  : CollectionFilterProxyModel( parent ),
32
 
    mSubResourceModel( 0 )
33
 
{
34
 
}
35
 
 
36
 
StoreCollectionFilterProxyModel::~StoreCollectionFilterProxyModel()
37
 
{
38
 
}
39
 
 
40
 
void StoreCollectionFilterProxyModel::setSubResourceModel( const AbstractSubResourceModel *subResourceModel )
41
 
{
42
 
  if ( mSubResourceModel != subResourceModel ) {
43
 
    mSubResourceModel = subResourceModel;
44
 
    invalidateFilter();
45
 
  }
46
 
}
47
 
 
48
 
bool StoreCollectionFilterProxyModel::filterAcceptsRow( int sourceRow,
49
 
                                                        const QModelIndex &sourceParent) const
50
 
{
51
 
  // if the base class rejects it, it doesn't match our MIME type criteria
52
 
  if ( !CollectionFilterProxyModel::filterAcceptsRow( sourceRow, sourceParent ) ) {
53
 
    return false;
54
 
  }
55
 
 
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() );
68
 
 
69
 
            // only accept sub resources which are active
70
 
            return subResource != 0 && subResource->isActive();
71
 
          }
72
 
 
73
 
          return true;
74
 
        }
75
 
      }
76
 
    }
77
 
  }
78
 
 
79
 
  return false;
80
 
}
81
 
 
82
 
// kate: space-indent on; indent-width 2; replace-tabs on;