Marble

GeoDataExtendedData.cpp
1// SPDX-License-Identifier: LGPL-2.1-or-later
2//
3// SPDX-FileCopyrightText: 2010 Harshit Jain <hjain.itbhu@gmail.com>
4// SPDX-FileCopyrightText: 2011 Niko Sams <niko.sams@gmail.com>
5//
6
7#include "GeoDataExtendedData.h"
8#include "GeoDataExtendedData_p.h"
9#include <QDataStream>
10
11#include "GeoDataTypes.h"
12
13namespace Marble
14{
15
16GeoDataExtendedData::GeoDataExtendedData()
17 : GeoNode()
18 , Serializable()
19 , d(new GeoDataExtendedDataPrivate)
20{
21}
22
23GeoDataExtendedData::GeoDataExtendedData(const GeoDataExtendedData &other)
24 : GeoNode(other)
25 , Serializable()
26 , d(new GeoDataExtendedDataPrivate(*other.d))
27{
28}
29
30bool GeoDataExtendedData::operator==(const GeoDataExtendedData &other) const
31{
32 return d->hash == other.d->hash && d->arrayHash == other.d->arrayHash;
33}
34
35GeoDataExtendedData::~GeoDataExtendedData()
36{
37 qDeleteAll(d->arrayHash);
38 delete d;
39}
40
41GeoDataExtendedData &GeoDataExtendedData::operator=(const GeoDataExtendedData &other)
42{
43 GeoNode::operator=(other);
44 *d = *other.d;
45 return *this;
46}
47
48bool GeoDataExtendedData::operator!=(const GeoDataExtendedData &other) const
49{
50 return !this->operator==(other);
51}
52
54{
55 return GeoDataTypes::GeoDataExtendedDataType;
56}
57
58GeoDataData &GeoDataExtendedData::valueRef(const QString &key) const
59{
60 return d->hash[key];
61}
62
63GeoDataData GeoDataExtendedData::value(const QString &key) const
64{
65 return d->hash.value(key);
66}
67
68void GeoDataExtendedData::addValue(const GeoDataData &data)
69{
70 d->hash.insert(data.name(), data);
71}
72
74{
75 d->hash.remove(key);
76}
77
82
87
89{
90 return d->hash.size();
91}
92
94{
95 return d->hash.empty() && d->schemaDataHash.empty();
96}
97
99{
100 return d->hash.contains(key);
101}
102
103void GeoDataExtendedData::setSimpleArrayData(const QString &key, GeoDataSimpleArrayData *values)
104{
105 d->arrayHash[key] = values;
106}
107
108GeoDataSimpleArrayData *GeoDataExtendedData::simpleArrayData(const QString &key) const
109{
110 if (!d->arrayHash.contains(key))
111 return nullptr;
112 return d->arrayHash[key];
113}
114
115GeoDataSchemaData &GeoDataExtendedData::schemaData(const QString &schemaUrl) const
116{
117 return d->schemaDataHash[schemaUrl];
118}
119
120void GeoDataExtendedData::addSchemaData(const GeoDataSchemaData &schemaData)
121{
122 d->schemaDataHash.insert(schemaData.schemaUrl(), schemaData);
123 d->schemaDataHash[schemaData.schemaUrl()].setParent(this);
124}
125
127{
128 GeoDataSchemaData schemaData = d->schemaDataHash.take(schemaUrl);
129 schemaData.setParent(nullptr);
130}
131
133{
134 return d->schemaDataHash.values();
135}
136
138{
139 Q_UNUSED(stream)
140}
141
143{
144 Q_UNUSED(stream)
145}
146
147}
a class which allows to add custom data to KML Feature.
void removeSchemaData(const QString &schemaUrl)
Removes a SchemaData element with schema url schemaUrl from schemaDataHash.
QHash< QString, GeoDataData >::const_iterator constBegin() const
return const Begin iterator for QHash
void removeKey(const QString &key)
GeoDataExtendedData & operator=(const GeoDataExtendedData &other)
assignment operator
QList< GeoDataSchemaData > schemaDataList() const
Dump a vector containing all SchemaData element.
void unpack(QDataStream &stream) override
Unserialize the ExtendedData from a stream.
void pack(QDataStream &stream) const override
Serialize the ExtendedData to a stream.
void addSchemaData(const GeoDataSchemaData &schemaData)
Adds a SchemaData schemaData element to schemaDataHash.
GeoDataData value(const QString &key) const
return the value of GeoDataExtendedData associated with the given key
void addValue(const GeoDataData &data)
add a data object to the GeoDataExtendedData with the key
GeoDataData & valueRef(const QString &key) const
return value of GeoDataExtendedData object associated with the given key as a modifiable reference
QHash< QString, GeoDataData >::const_iterator constEnd() const
return const End iterator for QHash
bool isEmpty() const
return whether QHash is empty or not
bool contains(const QString &key) const
Returns true if there exists a value for the given key.
GeoDataSimpleArrayData * simpleArrayData(const QString &key) const
return SimpleArrayData for given key, 0 pointer if none is set
int size() const
return size of QHash
GeoDataSchemaData & schemaData(const QString &schemaUrl) const
Adds a SchemaData schemaData element to schemaDataHash.
const char * nodeType() const override
Provides type information for downcasting a GeoNode.
void setSimpleArrayData(const QString &key, GeoDataSimpleArrayData *values)
set SimpleArrayData for given key
A shared base class for all classes that are mapped to a specific tag (ie.
Definition GeoDocument.h:35
Binds a QML item to a specific geodetic location in screen coordinates.
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Feb 14 2025 12:00:23 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.