From 1d9c07ab83a66aadd89a990477615df01a382eb1 Mon Sep 17 00:00:00 2001 From: vng Date: Thu, 26 Jan 2012 13:30:04 +0300 Subject: [PATCH] [search] Add flag to final search results. Close #510. --- search/intermediate_result.cpp | 14 +++++++------- search/intermediate_result.hpp | 8 ++++++-- search/result.cpp | 5 +++-- search/result.hpp | 5 +++-- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/search/intermediate_result.cpp b/search/intermediate_result.cpp index 55faa731f2..5244fd0317 100644 --- a/search/intermediate_result.cpp +++ b/search/intermediate_result.cpp @@ -119,6 +119,9 @@ bool IntermediateResult::LessViewportDistance(IntermediateResult const & r1, Int Result IntermediateResult::GenerateFinalResult(storage::CountryInfoGetter const * pInfo) const { + storage::CountryInfo info; + m_region.GetRegion(pInfo, info); + switch (m_resultType) { case RESULT_FEATURE: @@ -126,10 +129,10 @@ Result IntermediateResult::GenerateFinalResult(storage::CountryInfoGetter const #ifdef DEBUG + ' ' + strings::to_string(static_cast(m_searchRank)) #endif - , m_region.GetRegion(pInfo), m_type, m_rect, m_distance, m_direction); + , info.m_name, info.m_flag, m_type, m_rect, m_distance, m_direction); case RESULT_LATLON: - return Result(m_str, m_region.GetRegion(pInfo), 0, m_rect, m_distance, m_direction); + return Result(m_str, info.m_name, info.m_flag, 0, m_rect, m_distance, m_direction); default: ASSERT_EQUAL ( m_resultType, RESULT_CATEGORY, () ); @@ -259,16 +262,13 @@ string IntermediateResult::DebugPrint() const return res; } -string IntermediateResult::RegionInfo::GetRegion(storage::CountryInfoGetter const * pInfo) const +void IntermediateResult::RegionInfo::GetRegion( + storage::CountryInfoGetter const * pInfo, storage::CountryInfo & info) const { - storage::CountryInfo info; - if (!m_file.empty()) pInfo->GetRegionInfo(m_file, info); else if (m_valid) pInfo->GetRegionInfo(m_point, info); - - return info.m_name; } } // namespace search::impl diff --git a/search/intermediate_result.hpp b/search/intermediate_result.hpp index 4048ada56d..123d1f5943 100644 --- a/search/intermediate_result.hpp +++ b/search/intermediate_result.hpp @@ -6,7 +6,11 @@ class FeatureType; -namespace storage { class CountryInfoGetter; } +namespace storage +{ + class CountryInfoGetter; + struct CountryInfo; +} namespace search { @@ -99,7 +103,7 @@ private: m_valid = true; } - string GetRegion(storage::CountryInfoGetter const * pInfo) const; + void GetRegion(storage::CountryInfoGetter const * pInfo, storage::CountryInfo & info) const; } m_region; m2::RectD m_rect; diff --git a/search/result.cpp b/search/result.cpp index 07c8957d10..99110f7394 100644 --- a/search/result.cpp +++ b/search/result.cpp @@ -6,10 +6,11 @@ namespace search { -Result::Result(string const & str, string const & region, +Result::Result(string const & str, string const & region, string const & flag, uint32_t featureType, m2::RectD const & featureRect, double distanceFromCenter, double directionFromCenter) - : m_str(str), m_region(region), m_featureRect(featureRect), m_featureType(featureType), + : m_str(str), m_region(region), m_flag(flag), m_featureRect(featureRect), + m_featureType(featureType), m_distanceFromCenter(distanceFromCenter), m_directionFromCenter(directionFromCenter) { } diff --git a/search/result.hpp b/search/result.hpp index fd8e7a0741..bcd8d3149b 100644 --- a/search/result.hpp +++ b/search/result.hpp @@ -16,7 +16,7 @@ public: RESULT_SUGGESTION }; - Result(string const & str, string const & region, + Result(string const & str, string const & region, string const & flag, uint32_t featureType, m2::RectD const & featureRect, double distanceFromCenter, double directionFromCenter); Result(string const & str, string const & suggestionStr); @@ -24,6 +24,7 @@ public: // String that is displayed in the GUI. char const * GetString() const { return m_str.c_str(); } char const * GetRegionString() const { return m_region.c_str(); } + char const * GetRegionFlag() const { return m_flag.c_str(); } // Type of the result. ResultType GetResultType() const; @@ -48,7 +49,7 @@ public: char const * GetSuggestionString() const; private: - string m_str, m_region; + string m_str, m_region, m_flag; m2::RectD m_featureRect; uint32_t m_featureType; double m_distanceFromCenter;