diff --git a/src/lib/marble/geodata/data/GeoDataExtendedData.cpp b/src/lib/marble/geodata/data/GeoDataExtendedData.cpp index 962c6384b..4b3f74ce4 100644 --- a/src/lib/marble/geodata/data/GeoDataExtendedData.cpp +++ b/src/lib/marble/geodata/data/GeoDataExtendedData.cpp @@ -1,149 +1,152 @@ // // This file is part of the Marble Virtual Globe. // // This program is free software licensed under the GNU LGPL. You can // find a copy of this license in LICENSE.txt in the top directory of // the source code. // // Copyright 2010 Harshit Jain // Copyright 2011 Niko Sams // #include "GeoDataExtendedData.h" #include "GeoDataExtendedData_p.h" #include #include "GeoDataTypes.h" namespace Marble { -GeoDataExtendedData::GeoDataExtendedData() - : GeoDataObject(), d( new GeoDataExtendedDataPrivate ) +GeoDataExtendedData::GeoDataExtendedData() : + GeoNode(), + Serializable(), + d(new GeoDataExtendedDataPrivate) { } -GeoDataExtendedData::GeoDataExtendedData( const GeoDataExtendedData& other ) - : GeoDataObject( other ), d( new GeoDataExtendedDataPrivate( *other.d ) ) +GeoDataExtendedData::GeoDataExtendedData(const GeoDataExtendedData &other) : + GeoNode(other), + Serializable(), + d(new GeoDataExtendedDataPrivate(*other.d)) { } bool GeoDataExtendedData::operator==( const GeoDataExtendedData& other ) const { - return equals(other) && - d->hash == other.d->hash && + return d->hash == other.d->hash && d->arrayHash == other.d->arrayHash; } GeoDataExtendedData::~GeoDataExtendedData() { qDeleteAll( d->arrayHash ); delete d; } GeoDataExtendedData& GeoDataExtendedData::operator=( const GeoDataExtendedData& other ) { - GeoDataObject::operator=( other ); + GeoNode::operator=(other); *d = *other.d; return *this; } bool GeoDataExtendedData::operator!=( const GeoDataExtendedData &other ) const { return !this->operator==(other); } const char* GeoDataExtendedData::nodeType() const { return GeoDataTypes::GeoDataExtendedDataType; } GeoDataData& GeoDataExtendedData::valueRef( const QString& key ) const { return d->hash[ key ]; } GeoDataData GeoDataExtendedData::value( const QString& key ) const { return d->hash.value( key ); } void GeoDataExtendedData::addValue( const GeoDataData& data ) { d->hash.insert( data.name(), data ); } void GeoDataExtendedData::removeKey(const QString &key) { d->hash.remove(key); } QHash< QString, GeoDataData >::const_iterator GeoDataExtendedData::constBegin( ) const { return d->hash.constBegin(); } QHash< QString, GeoDataData >::const_iterator GeoDataExtendedData::constEnd( ) const { return d->hash.constEnd(); } int GeoDataExtendedData::size() const { return d->hash.size(); } bool GeoDataExtendedData::isEmpty( ) const { return d->hash.empty() && d->schemaDataHash.empty(); } bool GeoDataExtendedData::contains( const QString &key ) const { return d->hash.contains( key ); } void GeoDataExtendedData::setSimpleArrayData( const QString& key, GeoDataSimpleArrayData *values ) { d->arrayHash[ key ] = values; } GeoDataSimpleArrayData* GeoDataExtendedData::simpleArrayData( const QString& key ) const { if ( !d->arrayHash.contains( key ) ) return nullptr; return d->arrayHash[ key ]; } GeoDataSchemaData& GeoDataExtendedData::schemaData( const QString& schemaUrl ) const { return d->schemaDataHash[ schemaUrl ]; } void GeoDataExtendedData::addSchemaData( const GeoDataSchemaData& schemaData ) { d->schemaDataHash.insert( schemaData.schemaUrl(), schemaData ); d->schemaDataHash[schemaData.schemaUrl()].setParent( this ); } void GeoDataExtendedData::removeSchemaData( const QString& schemaUrl ) { GeoDataSchemaData schemaData = d->schemaDataHash.take( schemaUrl ); schemaData.setParent( nullptr ); } QList GeoDataExtendedData::schemaDataList() const { return d->schemaDataHash.values(); } void GeoDataExtendedData::pack( QDataStream& stream ) const { - GeoDataObject::pack( stream ); + Q_UNUSED(stream) } void GeoDataExtendedData::unpack( QDataStream& stream ) { - GeoDataObject::unpack( stream ); + Q_UNUSED(stream) } } diff --git a/src/lib/marble/geodata/data/GeoDataExtendedData.h b/src/lib/marble/geodata/data/GeoDataExtendedData.h index 8db500246..7279607d5 100644 --- a/src/lib/marble/geodata/data/GeoDataExtendedData.h +++ b/src/lib/marble/geodata/data/GeoDataExtendedData.h @@ -1,149 +1,150 @@ // // This file is part of the Marble Virtual Globe. // // This program is free software licensed under the GNU LGPL. You can // find a copy of this license in LICENSE.txt in the top directory of // the source code. // // Copyright 2010 Harshit Jain // Copyright 2011 Niko Sams // #ifndef MARBLE_GEODATAEXTENDEDDATA_H #define MARBLE_GEODATAEXTENDEDDATA_H -#include "GeoDataObject.h" +#include "GeoDocument.h" +#include "Serializable.h" #include "geodata_export.h" #include namespace Marble { class GeoDataSimpleArrayData; class GeoDataSchemaData; class GeoDataData; class GeoDataExtendedDataPrivate; /** * @short a class which allows to add custom data to KML Feature. * * @see GeoDataData */ -class GEODATA_EXPORT GeoDataExtendedData : public GeoDataObject +class GEODATA_EXPORT GeoDataExtendedData : public GeoNode, public Serializable { public: GeoDataExtendedData(); GeoDataExtendedData( const GeoDataExtendedData& other ); ~GeoDataExtendedData() override; /// Provides type information for downcasting a GeoNode const char* nodeType() const override; /** * @brief assignment operator */ GeoDataExtendedData& operator=( const GeoDataExtendedData& other ); bool operator==( const GeoDataExtendedData& other ) const; bool operator!=( const GeoDataExtendedData& other ) const; /** * @brief return the value of GeoDataExtendedData associated with the given @p key */ GeoDataData value( const QString& key ) const; /** * @brief add a data object to the GeoDataExtendedData with the @p key */ void addValue( const GeoDataData& data ); /** * @since 0.26.0 */ void removeKey(const QString &key); /** * @brief return const Begin iterator for QHash */ QHash< QString, GeoDataData >::const_iterator constBegin( ) const; /** * @brief return const End iterator for QHash */ QHash< QString, GeoDataData >::const_iterator constEnd( ) const; /** * @brief return size of QHash */ int size( ) const; /** * @brief return whether QHash is empty or not */ bool isEmpty( ) const; /** * @brief Returns true if there exists a value for the given key */ bool contains( const QString &key ) const; /** * @brief return value of GeoDataExtendedData object associated with the given @p key as a modifiable reference */ GeoDataData& valueRef( const QString& key ) const; /** * @brief set SimpleArrayData for given @p key * * ExtendedData takes ownership of SimpleArrayData */ void setSimpleArrayData( const QString& key, GeoDataSimpleArrayData* values ); /** * @brief return SimpleArrayData for given @p key, 0 pointer if none is set */ GeoDataSimpleArrayData* simpleArrayData( const QString& key ) const; /** * @brief Adds a SchemaData @p schemaData element to schemaDataHash */ GeoDataSchemaData& schemaData( const QString& schemaUrl ) const; /** * @brief Adds a SchemaData @p schemaData element to schemaDataHash */ void addSchemaData( const GeoDataSchemaData& schemaData ); /** * @brief Removes a SchemaData element with schema url @p schemaUrl from schemaDataHash */ void removeSchemaData( const QString& schemaUrl ); /** * @brief Dump a vector containing all SchemaData element */ QList< GeoDataSchemaData > schemaDataList() const; /** * @brief Serialize the ExtendedData to a stream * @param stream the stream */ void pack( QDataStream& stream ) const override; /** * @brief Unserialize the ExtendedData from a stream * @param stream the stream */ void unpack( QDataStream& stream ) override; private: GeoDataExtendedDataPrivate * const d; }; } #endif