• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.12
  • kdeedu
  • marble
  • src
  • lib
  • marble
BranchFilterProxyModel.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2010 Dennis Nienhüser <earthwings@gentoo.org>
9 // Copyright 2012 Thibaut Gridel <tgridel@free.fr>
10 
11 #include "BranchFilterProxyModel.h"
12 
13 #include "GeoDataTypes.h"
14 #include "MarblePlacemarkModel.h"
15 
16 namespace Marble
17 {
18 
19 BranchFilterProxyModel::BranchFilterProxyModel( QObject *parent ) :
20  QSortFilterProxyModel( parent ), m_treeModel( 0 )
21 {
22  // nothing to do
23 }
24 
26 void BranchFilterProxyModel::setBranchIndex( GeoDataTreeModel* treeModel, const QModelIndex &index )
27 {
28  Q_ASSERT( index.isValid() );
29  Q_ASSERT( index.model() == treeModel );
30  m_treeModel = treeModel;
31  m_branchIndex = index;
32  invalidateFilter();
33 }
34 
37 bool BranchFilterProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex &sourceParent ) const
38 {
39  if ( !m_treeModel || !m_branchIndex.isValid() ) {
40  return true;
41  }
42 
43  Q_ASSERT( m_treeModel == sourceModel() );
44  if ( sourceParent.isValid() ) {
45  Q_ASSERT( sourceParent.model() == m_treeModel );
46  }
47  QModelIndex rowIndex = sourceModel()->index( sourceRow, 0, sourceParent );
48  Q_ASSERT( rowIndex.isValid() );
49 
50  // return true for all non folder children of m_branchIndex
51  if( sourceParent == m_branchIndex ) {
52  GeoDataObject* obj = qvariant_cast<GeoDataObject*>( rowIndex.data( MarblePlacemarkModel::ObjectPointerRole ) );
53  return( obj->nodeType() != GeoDataTypes::GeoDataFolderType
54  && obj->nodeType() != GeoDataTypes::GeoDataDocumentType );
55  }
56 
57  // return true if rowIndex is a parent of m_branchIndex
58  QModelIndex tmpIndex = m_branchIndex;
59  while ( tmpIndex.isValid() && tmpIndex != rowIndex ) {
60  tmpIndex = tmpIndex.parent();
61  }
62  if( tmpIndex == rowIndex ) {
63  return true;
64  }
65  return false;
66 }
67 
68 }
Marble::GeoDataTreeModel
The representation of GeoData in a model This class represents all available data given by kml-data f...
Definition: GeoDataTreeModel.h:32
Marble::BranchFilterProxyModel::BranchFilterProxyModel
BranchFilterProxyModel(QObject *parent=0)
Definition: BranchFilterProxyModel.cpp:19
Marble::GeoDataObject
A base class for all geodata objects.
Definition: GeoDataObject.h:48
Marble::GeoDataTypes::GeoDataDocumentType
const char * GeoDataDocumentType
Definition: GeoDataTypes.cpp:34
QObject
Marble::MarblePlacemarkModel::ObjectPointerRole
The pointer to a specific object.
Definition: MarblePlacemarkModel.h:62
Marble::GeoDataObject::nodeType
virtual const char * nodeType() const =0
Provides type information for downcasting a GeoNode.
Marble::BranchFilterProxyModel::filterAcceptsRow
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
determines if such row should be filtered.
Definition: BranchFilterProxyModel.cpp:37
Marble::GeoDataTypes::GeoDataFolderType
const char * GeoDataFolderType
Definition: GeoDataTypes.cpp:38
MarblePlacemarkModel.h
BranchFilterProxyModel.h
GeoDataTypes.h
Marble::BranchFilterProxyModel::setBranchIndex
void setBranchIndex(GeoDataTreeModel *sourceModel, const QModelIndex &index)
sets the folder index for which we want to see bookmarks
Definition: BranchFilterProxyModel.cpp:26
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:49 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal