[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [marble] src/lib/marble/osm: Adds custom relation support to the OsmPlacemarkData class
From: Marius Stanciu <stanciumarius94 () gmail ! com>
Date: 2015-08-25 19:33:56
Message-ID: E1ZUJym-0001cV-Ug () scm ! kde ! org
[Download RAW message or body]
Git commit 92d9e282763763eab18d852002a078c8863883ef by Marius Stanciu.
Committed on 25/08/2015 at 19:33.
Pushed by stanciu into branch 'master'.
Adds custom relation support to the OsmPlacemarkData class
REVIEW: 124820
M +2 -0 src/lib/marble/osm/CMakeLists.txt
M +30 -0 src/lib/marble/osm/OsmPlacemarkData.cpp
M +24 -1 src/lib/marble/osm/OsmPlacemarkData.h
http://commits.kde.org/marble/92d9e282763763eab18d852002a078c8863883ef
diff --git a/src/lib/marble/osm/CMakeLists.txt b/src/lib/marble/osm/CMakeLists.txt
index a233eef..98776a2 100644
--- a/src/lib/marble/osm/CMakeLists.txt
+++ b/src/lib/marble/osm/CMakeLists.txt
@@ -1,9 +1,11 @@
set( osm_HDRS
OsmPlacemarkData.h
OsmPresetLibrary.h
+ OsmObjectManager.h
)
set( osm_SRCS
osm/OsmPlacemarkData.cpp
osm/OsmPresetLibrary.cpp
+ osm/OsmObjectManager.cpp
)
diff --git a/src/lib/marble/osm/OsmPlacemarkData.cpp b/src/lib/marble/osm/OsmPlacemarkData.cpp
index 2abd7a9..a4aacdf 100644
--- a/src/lib/marble/osm/OsmPlacemarkData.cpp
+++ b/src/lib/marble/osm/OsmPlacemarkData.cpp
@@ -112,6 +112,11 @@ void OsmPlacemarkData::setAction( const QString& action )
+QString OsmPlacemarkData::tagValue( const QString& key ) const
+{
+ return m_tags.value( key );
+}
+
void OsmPlacemarkData::addTag( const QString& key, const QString& value )
{
m_tags.insert( key, value );
@@ -242,6 +247,31 @@ QHash< int, OsmPlacemarkData >::const_iterator OsmPlacemarkData::memberReference
return m_memberReferences.constEnd();
}
+void OsmPlacemarkData::addRelation( qint64 id, const QString &role )
+{
+ m_relationReferences.insert( id, role );
+}
+
+void OsmPlacemarkData::removeRelation( qint64 id )
+{
+ m_relationReferences.remove( id );
+}
+
+bool OsmPlacemarkData::containsRelation( qint64 id ) const
+{
+ return m_relationReferences.contains( id );
+}
+
+QHash< qint64, QString >::const_iterator OsmPlacemarkData::relationReferencesBegin() const
+{
+ return m_relationReferences.begin();
+}
+
+QHash< qint64, QString >::const_iterator OsmPlacemarkData::relationReferencesEnd() const
+{
+ return m_relationReferences.constEnd();
+}
+
QString OsmPlacemarkData::osmHashKey()
{
return osmDataKey;
diff --git a/src/lib/marble/osm/OsmPlacemarkData.h b/src/lib/marble/osm/OsmPlacemarkData.h
index d66e6ca..19cd87a 100644
--- a/src/lib/marble/osm/OsmPlacemarkData.h
+++ b/src/lib/marble/osm/OsmPlacemarkData.h
@@ -75,7 +75,11 @@ public:
void setAction( const QString& action );
-
+ /**
+ * @brief tagValue returns the value of the tag that has @p key as key
+ * or an empty qstring if there is no such tag
+ */
+ QString tagValue( const QString &key ) const;
/**
* @brief addTag this function inserts a string key=value mapping,
@@ -160,6 +164,17 @@ public:
QHash< int, OsmPlacemarkData >::const_iterator memberReferencesEnd() const;
/**
+ * @brief addRelation calling this makes the osm placemark a member of the relation
+ * with @p id as id, while having the role @p role
+ */
+ void addRelation( qint64 id, const QString &role );
+ void removeRelation( qint64 id );
+ bool containsRelation( qint64 id ) const;
+
+ QHash< qint64, QString >::const_iterator relationReferencesBegin() const;
+ QHash< qint64, QString >::const_iterator relationReferencesEnd() const;
+
+ /**
* @brief osmData is stored within a placemark's extended data hash
* at an entry with osmKey
*/
@@ -209,6 +224,14 @@ private:
*/
QHash<int, OsmPlacemarkData> m_memberReferences;
+ /**
+ * @brief m_relationReferences is used to store the relations the placemark is part of
+ * and the role it has within them.
+ * Eg. an entry ( "123", "stop" ) means that the parent placemark is a member of
+ * the relation with id "123", while having the "stop" role
+ */
+ QHash<qint64, QString> m_relationReferences;
+
};
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic