diff options
author | Alex Zolotarev <deathbaba@gmail.com> | 2012-12-01 22:17:21 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:47:22 +0300 |
commit | 990ad2780c9088b2c2c5982b22c23edec5af109d (patch) | |
tree | 525538284073dcf3eebcfaccd2df8646f8bf4bb2 /map | |
parent | 8bd758a698cb6a9dea8f6336279da94e593a1110 (diff) |
[bookmarks] Added description field
Diffstat (limited to 'map')
-rw-r--r-- | map/bookmark.cpp | 54 | ||||
-rw-r--r-- | map/bookmark.hpp | 7 | ||||
-rw-r--r-- | map/map_tests/bookmarks_test.cpp | 5 |
3 files changed, 31 insertions, 35 deletions
diff --git a/map/bookmark.cpp b/map/bookmark.cpp index 2232507aa1..296d2f0b7b 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -128,6 +128,7 @@ namespace bookmark_impl string m_name; string m_type; + string m_description; m2::PointD m_org; double m_scale; @@ -135,6 +136,7 @@ namespace bookmark_impl void Reset() { m_name.clear(); + m_description.clear(); m_org = m2::PointD(-1000, -1000); m_type.clear(); m_scale = -1.0; @@ -170,31 +172,6 @@ namespace bookmark_impl return false; } - /* - void TryResolveName(string const & s) - { - if (m_name.empty()) - { - // "CosmosVDC" has only description in placemark. - size_t i1 = s.find("<a"); - if (i1 != string::npos) - { - i1 = s.find(">", i1); - if (i1 != string::npos) - { - ++i1; - size_t const i2 = s.find("</a>", i1); - if (i2 != string::npos) - { - m_name = s.substr(i1, i2-i1); - strings::Trim(m_name); - } - } - } - } - } - */ - public: KMLParser(BookmarkCategory & cat) : m_category(cat) { @@ -215,7 +192,7 @@ namespace bookmark_impl if (tag == "Placemark" && MakeValid()) { - m_category.AddBookmarkImpl(Bookmark(m_org, m_name, m_type), m_scale); + m_category.AddBookmarkImpl(Bookmark(m_org, m_name, m_type, m_description), m_scale); Reset(); } m_tags.pop_back(); @@ -242,8 +219,11 @@ namespace bookmark_impl { if (currTag == "name") m_name = value; - //else if (currTag == "description") - // TryResolveName(value); + else if (currTag == "description") + { + LOG(LINFO, (value)); + m_description = value; + } else if (currTag == "styleUrl") m_type = GetSupportedBMType(value); } @@ -375,12 +355,22 @@ void BookmarkCategory::SaveToKML(ostream & s) { Bookmark const * bm = m_bookmarks[i]; s << " <Placemark>\n"; - - // Use CDATA if we have special symbols in the name + s << " <name>"; if (ShouldUseCDATA(bm->GetName())) - s << " <name><![CDATA[" << bm->GetName() << "]]></name>\n"; + s << "<![CDATA[" << bm->GetName() << "]]>"; else - s << " <name>" << bm->GetName() << "</name>\n"; + s << bm->GetName(); + s << "</name>\n"; + + if (!bm->GetDescription().empty()) + { + s << " <description>"; + if (ShouldUseCDATA(bm->GetDescription())) + s << "<![CDATA[" << bm->GetDescription() << "]]>"; + else + s << bm->GetDescription(); + s << "</description>\n"; + } s << " <styleUrl>#" << bm->GetType() << "</styleUrl>\n" << " <Point>\n" diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 14781ebbb4..8df2e45d87 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -14,18 +14,21 @@ class Bookmark { m2::PointD m_org; string m_name; + string m_description; string m_type; ///< Now it stores bookmark color (category style). double m_scale; ///< Viewport scale. -1.0 - is a default value (no scale set). public: Bookmark() {} - Bookmark(m2::PointD const & org, string const & name, string const & type) - : m_org(org), m_name(name), m_type(type), m_scale(-1.0) + Bookmark(m2::PointD const & org, string const & name, string const & type, + string const & description = string()) + : m_org(org), m_name(name), m_description(description), m_type(type), m_scale(-1.0) { } m2::PointD const & GetOrg() const { return m_org; } string const & GetName() const { return m_name; } + string const & GetDescription() const { return m_description; } /// @return Now its a bookmark color. string const & GetType() const { return m_type; } m2::RectD GetViewport() const { return m2::RectD(m_org, m_org); } diff --git a/map/map_tests/bookmarks_test.cpp b/map/map_tests/bookmarks_test.cpp index ac621a1c56..c95f8b0948 100644 --- a/map/map_tests/bookmarks_test.cpp +++ b/map/map_tests/bookmarks_test.cpp @@ -109,10 +109,12 @@ char const * kmlString = Bookmark const * bm = cat.GetBookmark(0); TEST_EQUAL(bm->GetName(), "Nebraska", ()); TEST_EQUAL(bm->GetType(), "placemark-red", ()); + TEST_EQUAL(bm->GetDescription(), "", ()); bm = cat.GetBookmark(1); TEST_EQUAL(bm->GetName(), "Monongahela National Forest", ()); TEST_EQUAL(bm->GetType(), "placemark-pink", ()); + TEST_EQUAL(bm->GetDescription(), "Huttonsville, WV 26273<br>", ()); bm = cat.GetBookmark(2); m2::PointD org = bm->GetOrg(); @@ -120,13 +122,14 @@ char const * kmlString = TEST_ALMOST_EQUAL(MercatorBounds::YToLat(org.y), 53.900047, ()); TEST_EQUAL(bm->GetName(), "From: Минск, Минская область, Беларусь", ()); TEST_EQUAL(bm->GetType(), "placemark-blue", ()); + TEST_EQUAL(bm->GetDescription(), "", ()); bm = cat.GetBookmark(3); org = bm->GetOrg(); TEST_ALMOST_EQUAL(MercatorBounds::XToLon(org.x), 27.551532, ()); TEST_ALMOST_EQUAL(MercatorBounds::YToLat(org.y), 53.89306, ()); TEST_EQUAL(bm->GetName(), "<MWM & Sons>", ()); - + TEST_EQUAL(bm->GetDescription(), "Amps & <brackets>", ()); } } |