Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorAlex Zolotarev <deathbaba@gmail.com>2012-12-01 22:17:21 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:47:22 +0300
commit990ad2780c9088b2c2c5982b22c23edec5af109d (patch)
tree525538284073dcf3eebcfaccd2df8646f8bf4bb2 /map
parent8bd758a698cb6a9dea8f6336279da94e593a1110 (diff)
[bookmarks] Added description field
Diffstat (limited to 'map')
-rw-r--r--map/bookmark.cpp54
-rw-r--r--map/bookmark.hpp7
-rw-r--r--map/map_tests/bookmarks_test.cpp5
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>", ());
}
}