Marble

DgmlFilterTagHandler.cpp
1 /*
2  SPDX-FileCopyrightText: 2007 Nikolas Zimmermann <[email protected]>
3  SPDX-FileCopyrightText: 2008 Torsten Rahn <[email protected]>
4  SPDX-FileCopyrightText: 2008 Henry de Valence <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-or-later
7 */
8 
9 #include "DgmlFilterTagHandler.h"
10 
11 #include "MarbleDebug.h"
12 
13 #include "DgmlElementDictionary.h"
14 #include "DgmlAttributeDictionary.h"
15 #include "DgmlAuxillaryDictionary.h"
16 #include "GeoParser.h"
17 #include "GeoSceneLayer.h"
18 #include "GeoSceneMap.h"
19 #include "GeoSceneFilter.h"
20 
21 namespace Marble
22 {
23 namespace dgml
24 {
25 DGML_DEFINE_TAG_HANDLER(Filter)
26 
27 GeoNode* DgmlFilterTagHandler::parse(GeoParser& parser) const
28 {
29  // Check whether the tag is valid
30  Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(dgmlTag_Filter)));
31 
32  QString name = parser.attribute(dgmlAttr_name).trimmed();
33  QString type = parser.attribute(dgmlAttr_type).toLower().trimmed();
34 
35  GeoSceneFilter *filter = nullptr;
36 
37  // Checking for parent layer
38  GeoStackItem parentItem = parser.parentElement();
39  GeoStackItem grandParentItem = parser.parentElement(1);
40  if (parentItem.represents(dgmlTag_Layer) &&
41  grandParentItem.represents(dgmlTag_Map) ) {
42 
43  filter = new GeoSceneFilter( name );
44  filter->setType( type );
45  parentItem.nodeAs<GeoSceneLayer>()->addFilter( filter );
46  grandParentItem.nodeAs<GeoSceneMap>()->addFilter( filter );
47  }
48 
49  return filter;
50 }
51 
52 }
53 }
Type type(const QSqlDatabase &db)
QFuture< void > filter(Sequence &sequence, KeepFunctor filterFunction)
Binds a QML item to a specific geodetic location in screen coordinates.
const char * name(StandardAction id)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Oct 4 2023 04:09:41 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.