8#include "GeoDataDocument.h"
9#include "GeoDataDocument_p.h"
11#include "GeoDataStyleMap.h"
12#include "GeoDataNetworkLinkControl.h"
13#include "GeoDataSchema.h"
15#include "MarbleDebug.h"
22GeoDataDocument::GeoDataDocument()
23 : GeoDataContainer( new GeoDataDocumentPrivate )
27GeoDataDocument::GeoDataDocument(
const GeoDataDocument& other )
29 GeoDataContainer(other, new GeoDataDocumentPrivate(*other.d_func()))
33GeoDataDocument::~GeoDataDocument()
37GeoDataDocument& GeoDataDocument::operator=(
const GeoDataDocument& other)
47bool GeoDataDocument::operator==(
const GeoDataDocument &other )
const
49 if (!GeoDataContainer::equals(other)) {
53 Q_D(
const GeoDataDocument);
54 const GeoDataDocumentPrivate*
const other_d = other.d_func();
55 if (!(d->m_styleHash.size() == other_d->m_styleHash.size() &&
56 d->m_styleMapHash == other_d->m_styleMapHash &&
57 d->m_schemaHash == other_d->m_schemaHash &&
58 d->m_filename == other_d->m_filename &&
59 d->m_baseUri == other_d->m_baseUri &&
60 d->m_networkLinkControl == other_d->m_networkLinkControl &&
61 d->m_property == other_d->m_property &&
62 d->m_documentRole == other_d->m_documentRole)) {
66 auto iter = d->m_styleHash.constBegin();
67 auto const end = d->m_styleHash.constEnd();
68 for (; iter !=
end; ++iter) {
69 if (!other_d->m_styleHash.contains(iter.key())) {
73 if (*iter.value() != *other_d->m_styleHash[iter.key()]) {
81bool GeoDataDocument::operator!=(
const GeoDataDocument &other )
const
86const char* GeoDataDocument::nodeType()
const
88 return GeoDataTypes::GeoDataDocumentType;
97DocumentRole GeoDataDocument::documentRole()
const
100 return d->m_documentRole;
103void GeoDataDocument::setDocumentRole( DocumentRole role )
105 Q_D(GeoDataDocument);
106 d->m_documentRole = role;
109QString GeoDataDocument::property()
const
111 Q_D(
const GeoDataDocument);
112 return d->m_property;
115void GeoDataDocument::setProperty(
const QString& property )
117 Q_D(GeoDataDocument);
118 d->m_property = property;
124 return d->m_filename;
127void GeoDataDocument::setFileName(
const QString &value )
130 d->m_filename = value;
139void GeoDataDocument::setBaseUri(
const QString &baseUrl )
142 d->m_baseUri = baseUrl;
145GeoDataNetworkLinkControl GeoDataDocument::networkLinkControl()
const
148 return d->m_networkLinkControl;
151void GeoDataDocument::setNetworkLinkControl(
const GeoDataNetworkLinkControl &networkLinkControl )
154 d->m_networkLinkControl = networkLinkControl;
160 d->m_styleHash.insert(style->id(), style);
161 d->m_styleHash[style->id()]->setParent(
this);
164void GeoDataDocument::removeStyle(
const QString& styleId )
167 d->m_styleHash.remove(styleId);
177 return d->m_styleHash[styleId];
183 return d->m_styleHash.value(styleId);
188 Q_D(
const GeoDataDocument);
190 for(
auto const & style: d->m_styleHash.values()) {
200 return d->m_styleHash.values();
206 d->m_styleMapHash.insert(map.id(), map);
207 d->m_styleMapHash[map.id()].setParent(
this);
210void GeoDataDocument::removeStyleMap(
const QString& mapId )
213 d->m_styleMapHash.remove(mapId);
219 return d->m_styleMapHash[styleId];
225 return d->m_styleMapHash.value(styleId);
231 return d->m_styleMapHash.values();
234void GeoDataDocument::addSchema(
const GeoDataSchema& schema )
237 d->m_schemaHash.insert(schema.
id(), schema);
238 d->m_schemaHash[schema.
id()].setParent(
this);
241void GeoDataDocument::removeSchema(
const QString& schemaId )
244 GeoDataSchema schema = d->m_schemaHash.take(schemaId);
248GeoDataSchema GeoDataDocument::schema(
const QString& schemaId )
const
251 return d->m_schemaHash.value(schemaId);
254GeoDataSchema &GeoDataDocument::schema(
const QString &schemaId )
257 return d->m_schemaHash[schemaId];
263 return d->m_schemaHash.values();
266void GeoDataDocument::pack(
QDataStream& stream )
const
269 GeoDataContainer::pack( stream );
271 stream << d->m_styleHash.size();
274 = d->m_styleHash.constBegin();
275 iterator != d->m_styleHash.constEnd();
277 iterator.value()->pack( stream );
284 Q_D(GeoDataDocument);
285 GeoDataContainer::unpack( stream );
290 for(
int i = 0; i < size; i++ ) {
291 GeoDataStyle::Ptr style;
292 style->unpack( stream );
293 d->m_styleHash.insert(style->id(), style);
A container for Features, Styles and in the future Schemas.
A base class for all geodata features.
void setParent(GeoDataObject *parent)
Sets the parent of the object.
QString id() const
Get the id of the object.
a class to map different styles to one style
const QList< QKeySequence > & end()
Binds a QML item to a specific geodetic location in screen coordinates.
bool operator==(const QGraphicsApiFilter &reference, const QGraphicsApiFilter &sample)