[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