From 076ec12e60abd7a8cba9d536cd68c3eb32a4fabf Mon Sep 17 00:00:00 2001 From: Roman Kuznetsov Date: Fri, 11 May 2018 16:25:31 +0300 Subject: [PATCH] Fixed api marks style --- map/api_mark_point.cpp | 60 +++++++++++++++++++++--------------------- map/api_mark_point.hpp | 32 ++++++++++------------ map/mwm_url.cpp | 2 +- map/user_mark.cpp | 2 +- 4 files changed, 46 insertions(+), 50 deletions(-) diff --git a/map/api_mark_point.cpp b/map/api_mark_point.cpp index 35e14995c9..68359da2bd 100644 --- a/map/api_mark_point.cpp +++ b/map/api_mark_point.cpp @@ -2,68 +2,68 @@ #include "base/logging.hpp" +#include + namespace style { +std::map kStyleToColor = { + {"placemark-red", "BookmarkRed"}, + {"placemark-blue", "BookmarkBlue"}, + {"placemark-purple", "BookmarkPurple"}, + {"placemark-yellow", "BookmarkYellow"}, + {"placemark-pink", "BookmarkPink"}, + {"placemark-brown", "BookmarkBrown"}, + {"placemark-green", "BookmarkGreen"}, + {"placemark-orange", "BookmarkOrange"} +}; -char const * kSupportedColors[] = {"placemark-red", "placemark-blue", "placemark-purple", - "placemark-yellow", "placemark-pink", "placemark-brown", - "placemark-green", "placemark-orange", "placemark-hotel"}; - -string GetSupportedStyle(string const & s, string const & context, string const & fallback) +std::string GetSupportedStyle(std::string const & style) { - if (s.empty()) - return fallback; - - for (size_t i = 0; i < ARRAY_SIZE(kSupportedColors); ++i) - { - if (s == kSupportedColors[i]) - return s; - } - return fallback; + auto const it = kStyleToColor.find(style); + if (it == kStyleToColor.cend()) + return "BookmarkGreen"; + return it->second; } - -string GetDefaultStyle() { return kSupportedColors[0]; } - -} // style +} // style ApiMarkPoint::ApiMarkPoint(m2::PointD const & ptOrg) : UserMark(ptOrg, UserMark::Type::API) {} -ApiMarkPoint::ApiMarkPoint(string const & name, string const & id, string const & style, +ApiMarkPoint::ApiMarkPoint(std::string const & name, std::string const & id, std::string const & style, m2::PointD const & ptOrg) - : UserMark(ptOrg, UserMark::Type::API), - m_name(name), - m_id(id), - m_style(style) + : UserMark(ptOrg, UserMark::Type::API) + , m_name(name) + , m_id(id) + , m_style(style) {} drape_ptr ApiMarkPoint::GetSymbolNames() const { - auto const name = m_style.empty() ? "api-result" : m_style; + //TODO: use its own icon. auto symbol = make_unique_dp(); - symbol->insert(std::make_pair(1 /* zoomLevel */, name)); + symbol->insert(std::make_pair(1 /* zoomLevel */, "searchbooking-default-s")); return symbol; } -m2::PointD ApiMarkPoint::GetPixelOffset() const +df::ColorConstant ApiMarkPoint::GetColorConstant() const { - return m_style.empty() ? m2::PointD(0.0, 0.0) : m2::PointD(0.0, 3.0); + return m_style; } -void ApiMarkPoint::SetName(string const & name) +void ApiMarkPoint::SetName(std::string const & name) { SetDirty(); m_name = name; } -void ApiMarkPoint::SetApiID(string const & id) +void ApiMarkPoint::SetApiID(std::string const & id) { SetDirty(); m_id = id; } -void ApiMarkPoint::SetStyle(string const & style) +void ApiMarkPoint::SetStyle(std::string const & style) { SetDirty(); m_style = style; diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index b9646c830d..5f84cc6103 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -5,40 +5,36 @@ #include "geometry/point2d.hpp" -#include "std/string.hpp" +#include namespace style { - // Fixes icons which are not supported by MapsWithMe. -string GetSupportedStyle(string const & s, string const & context, string const & fallback); -// Default icon. -string GetDefaultStyle(); - -} // style +std::string GetSupportedStyle(std::string const & style); +} // style class ApiMarkPoint : public UserMark { public: ApiMarkPoint(m2::PointD const & ptOrg); - ApiMarkPoint(string const & name, string const & id, string const & style, + ApiMarkPoint(string const & name, std::string const & id, std::string const & style, m2::PointD const & ptOrg); drape_ptr GetSymbolNames() const override; - m2::PointD GetPixelOffset() const override; + df::ColorConstant GetColorConstant() const override; - string const & GetName() const { return m_name; } - void SetName(string const & name); + std::string const & GetName() const { return m_name; } + void SetName(std::string const & name); - string const & GetApiID() const { return m_id; } - void SetApiID(string const & id); + std::string const & GetApiID() const { return m_id; } + void SetApiID(std::string const & id); - void SetStyle(string const & style); - string const & GetStyle() const { return m_style; } + void SetStyle(std::string const & style); + std::string const & GetStyle() const { return m_style; } private: - string m_name; - string m_id; - string m_style; + std::string m_name; + std::string m_id; + std::string m_style; }; diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 4a24bbccc3..e78a4b1bfb 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -200,7 +200,7 @@ ParsedMapApi::ParsingResult ParsedMapApi::Parse(Uri const & uri) auto * mark = editSession.CreateUserMark(glPoint); mark->SetName(p.m_name); mark->SetApiID(p.m_id); - mark->SetStyle(style::GetSupportedStyle(p.m_style, p.m_name, "")); + mark->SetStyle(style::GetSupportedStyle(p.m_style)); } return ParsingResult::Map; diff --git a/map/user_mark.cpp b/map/user_mark.cpp index 3e3037a962..bed1e11490 100644 --- a/map/user_mark.cpp +++ b/map/user_mark.cpp @@ -67,7 +67,7 @@ DebugMarkPoint::DebugMarkPoint(const m2::PointD & ptOrg) drape_ptr DebugMarkPoint::GetSymbolNames() const { auto symbol = make_unique_dp(); - symbol->insert(std::make_pair(1 /* zoomLevel */, "api-result")); + symbol->insert(std::make_pair(1 /* zoomLevel */, "non-found-search-result")); return symbol; }