Marble

DgmlFilterTagHandler.cpp
1/*
2 SPDX-FileCopyrightText: 2007 Nikolas Zimmermann <zimmermann@kde.org>
3 SPDX-FileCopyrightText: 2008 Torsten Rahn <tackat@kde.org>
4 SPDX-FileCopyrightText: 2008 Henry de Valence <hdevalence@gmail.com>
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
21namespace Marble
22{
23namespace dgml
24{
25DGML_DEFINE_TAG_HANDLER(Filter)
26
27GeoNode* 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)
QString name(StandardShortcut id)
Binds a QML item to a specific geodetic location in screen coordinates.
QString trimmed() const const
QFuture< void > filter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction)
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:18:17 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.