From fab109012e9b368ac52e34a2bc1cbfa3f9447412 Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Fri, 28 Apr 2017 17:17:18 +0300 Subject: [PATCH] Added special search marks for local ads and tinkoff objects --- indexer/ftypes_matcher.cpp | 12 ++++++++++++ indexer/ftypes_matcher.hpp | 7 +++++++ map/framework.cpp | 18 +++++++++++++----- map/user_mark.hpp | 2 ++ search/intermediate_result.cpp | 2 ++ search/result.hpp | 1 + 6 files changed, 37 insertions(+), 5 deletions(-) diff --git a/indexer/ftypes_matcher.cpp b/indexer/ftypes_matcher.cpp index 30718a76ae..aedb052684 100644 --- a/indexer/ftypes_matcher.cpp +++ b/indexer/ftypes_matcher.cpp @@ -362,6 +362,18 @@ IsBookingChecker const & IsBookingChecker::Instance() return inst; } +IsTinkoffChecker::IsTinkoffChecker() +{ + Classificator const & c = classif(); + m_types.push_back(c.GetTypeByPath({"sponsored", "tinkoff"})); +} + +IsTinkoffChecker const & IsTinkoffChecker::Instance() +{ + static IsTinkoffChecker const inst; + return inst; +} + IsHotelChecker::IsHotelChecker() { Classificator const & c = classif(); diff --git a/indexer/ftypes_matcher.hpp b/indexer/ftypes_matcher.hpp index 2c42cd1f22..2e4e3c9454 100644 --- a/indexer/ftypes_matcher.hpp +++ b/indexer/ftypes_matcher.hpp @@ -152,6 +152,13 @@ public: static IsBookingChecker const & Instance(); }; +class IsTinkoffChecker : public BaseChecker +{ + IsTinkoffChecker(); +public: + static IsTinkoffChecker const & Instance(); +}; + class IsHotelChecker : public BaseChecker { public: diff --git a/map/framework.cpp b/map/framework.cpp index fbb7455a62..ab204a2687 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -146,7 +146,9 @@ size_t constexpr kMaxTrafficCacheSizeBytes = 64 /* Mb */ * 1024 * 1024; vector kSearchMarks = { "search-result", - "search-booking" + "search-booking", + "search-tinkoff", + "search-adv", }; // TODO! @@ -1550,10 +1552,12 @@ bool Framework::Search(search::SearchParams const & params) CancelQuery(intent.m_handle); { - m2::PointD const defaultMarkSize = GetSearchMarkSize(SearchMarkType::DefaultSearchMark); - m2::PointD const bookingMarkSize = GetSearchMarkSize(SearchMarkType::BookingSearchMark); - double const eps = - max(max(defaultMarkSize.x, defaultMarkSize.y), max(bookingMarkSize.x, bookingMarkSize.y)); + double eps = 0.0; + for (size_t i = 0; i < SearchMarkType::SearchMarkTypesCount; i++) + { + m2::PointD const markSize = GetSearchMarkSize(static_cast(i)); + eps = max(eps, max(markSize.x, markSize.y)); + } intent.m_params.m_minDistanceOnMapBetweenResults = eps; } @@ -1747,6 +1751,10 @@ void Framework::FillSearchResultsMarks(search::Results::ConstIter begin, if (r.m_metadata.m_isSponsoredHotel) mark->SetCustomSymbol("search-booking"); + else if (r.m_metadata.m_isSponsoredBank) + mark->SetCustomSymbol("search-tinkoff"); + else if (m_localAdsManager.Contains(r.GetFeatureID())) + mark->SetCustomSymbol("search-adv"); } } diff --git a/map/user_mark.hpp b/map/user_mark.hpp index 2af93c802c..d205fa7689 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -54,6 +54,8 @@ enum SearchMarkType { DefaultSearchMark = 0, BookingSearchMark, + TinkoffSearchMark, + LocalAdsSearchMark, SearchMarkTypesCount }; diff --git a/search/intermediate_result.cpp b/search/intermediate_result.cpp index a8a474e325..f0c37fef80 100644 --- a/search/intermediate_result.cpp +++ b/search/intermediate_result.cpp @@ -51,6 +51,8 @@ void ProcessMetadata(FeatureType const & ft, Result::Metadata & meta) else meta.m_stars = 0; + meta.m_isSponsoredBank = ftypes::IsTinkoffChecker::Instance()(ft); + bool const isSponsoredHotel = ftypes::IsBookingChecker::Instance()(ft); meta.m_isSponsoredHotel = isSponsoredHotel; meta.m_isHotel = ftypes::IsHotelChecker::Instance()(ft); diff --git a/search/result.hpp b/search/result.hpp index b583b5032c..3634108d8b 100644 --- a/search/result.hpp +++ b/search/result.hpp @@ -37,6 +37,7 @@ public: string m_hotelRating; int m_stars = 0; bool m_isSponsoredHotel = false; + bool m_isSponsoredBank = false; bool m_isHotel = false; osm::YesNoUnknown m_isOpenNow = osm::Unknown; // Valid for any result.