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:
authorArsentiy Milchakov <milcars@mapswithme.com>2019-04-19 22:33:49 +0300
committerTatiana Yan <tatiana.kondakova@gmail.com>2019-04-22 18:47:33 +0300
commitddc65679bc06c72e4946a476360541cd87db51e3 (patch)
tree977245abbd6b911087913528d1cc98d5f838d410 /map
parent01c771fe7f945a53581a7badb0a6b840e98f572a (diff)
[booking][search] store viewport search params into SearchApi instead of forwarding search params into callbacks.
Diffstat (limited to 'map')
-rw-r--r--map/everywhere_search_callback.cpp3
-rw-r--r--map/everywhere_search_callback.hpp3
-rw-r--r--map/framework.cpp5
-rw-r--r--map/map_integration_tests/interactive_search_test.cpp13
-rw-r--r--map/search_api.cpp15
-rw-r--r--map/search_api.hpp6
-rw-r--r--map/viewport_search_callback.cpp14
-rw-r--r--map/viewport_search_callback.hpp17
-rw-r--r--map/viewport_search_params.hpp4
9 files changed, 49 insertions, 31 deletions
diff --git a/map/everywhere_search_callback.cpp b/map/everywhere_search_callback.cpp
index c0d8b80f73..fa524c8a85 100644
--- a/map/everywhere_search_callback.cpp
+++ b/map/everywhere_search_callback.cpp
@@ -15,8 +15,7 @@ EverywhereSearchCallback::EverywhereSearchCallback(
{
}
-void EverywhereSearchCallback::operator()(Results const & results,
- SearchParamsBase const & /* params */)
+void EverywhereSearchCallback::operator()(Results const & results)
{
auto const prevSize = m_productInfo.size();
ASSERT_LESS_OR_EQUAL(prevSize, results.GetCount(), ());
diff --git a/map/everywhere_search_callback.hpp b/map/everywhere_search_callback.hpp
index 794047ceb3..743aaf7e34 100644
--- a/map/everywhere_search_callback.hpp
+++ b/map/everywhere_search_callback.hpp
@@ -5,7 +5,6 @@
#include "map/search_product_info.hpp"
#include "search/result.hpp"
-#include "search/search_params.hpp"
#include <functional>
#include <vector>
@@ -30,7 +29,7 @@ public:
booking::filter::Tasks const & bookingFilterTasks,
EverywhereSearchParams::OnResults onResults);
- void operator()(Results const & results, SearchParamsBase const &);
+ void operator()(Results const & results);
private:
Delegate & m_hotelsDelegate;
diff --git a/map/framework.cpp b/map/framework.cpp
index de7b2268c5..7cdcf744c4 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -319,7 +319,6 @@ void Framework::OnViewportChanged(ScreenBase const & screen)
return;
m_currentModelView = screen;
- auto const zoomLevel = static_cast<uint8_t>(df::GetZoomLevel(screen.GetScale()));
GetSearchAPI().OnViewportChanged(GetCurrentViewport());
@@ -2982,10 +2981,10 @@ bool Framework::ParseEditorDebugCommand(search::SearchParams const & params)
results.AddResultNoChecks(search::Result(fid, feature::GetCenter(*ft), name, edit.second,
types.GetBestType(), smd));
}
- params.m_onResults(results, params);
+ params.m_onResults(results);
results.SetEndMarker(false /* isCancelled */);
- params.m_onResults(results, params);
+ params.m_onResults(results);
return true;
}
else if (params.m_query == "?eclear")
diff --git a/map/map_integration_tests/interactive_search_test.cpp b/map/map_integration_tests/interactive_search_test.cpp
index ba3552a743..5c3c6f26ff 100644
--- a/map/map_integration_tests/interactive_search_test.cpp
+++ b/map/map_integration_tests/interactive_search_test.cpp
@@ -59,8 +59,8 @@ public:
{
}
- void FilterAllHotelsInViewport(m2::RectD const & viewport,
- booking::filter::Tasks const & filterTasks) override
+ virtual void FilterAllHotelsInViewport(m2::RectD const & viewport,
+ booking::filter::Tasks const & filterTasks) override
{
}
@@ -76,10 +76,11 @@ public:
: TestDelegate(stats)
, TestSearchRequest(engine, query, "en" /* locale */, Mode::Viewport, viewport)
{
- SetCustomOnResults(ViewportSearchCallback(
- static_cast<ViewportSearchCallback::Delegate &>(*this), {} /* bookingFilterTasks */,
- bind(&InteractiveSearchRequest::OnResults, this, placeholders::_1,
- search::SearchParamsBase{})));
+ SetCustomOnResults(
+ ViewportSearchCallback(viewport,
+ static_cast<ViewportSearchCallback::Delegate &>(*this),
+ {} /* bookingFilterTasks */,
+ bind(&InteractiveSearchRequest::OnResults, this, placeholders::_1)));
}
};
diff --git a/map/search_api.cpp b/map/search_api.cpp
index c6f7fd2e1c..42ca752b70 100644
--- a/map/search_api.cpp
+++ b/map/search_api.cpp
@@ -3,7 +3,6 @@
#include "map/bookmarks_search_params.hpp"
#include "map/discovery/discovery_search_params.hpp"
#include "map/everywhere_search_params.hpp"
-#include "map/viewport_search_params.hpp"
#include "partners_api/booking_api.hpp"
@@ -93,7 +92,7 @@ public:
explicit BookmarksSearchCallback(OnResults const & onResults) : m_onResults(onResults) {}
- void operator()(Results const & results, SearchParamsBase const & /* params */)
+ void operator()(Results const & results)
{
if (results.IsEndMarker())
{
@@ -217,7 +216,8 @@ bool SearchAPI::SearchInViewport(ViewportSearchParams const & params)
};
p.m_onResults = ViewportSearchCallback(
- static_cast<ViewportSearchCallback::Delegate &>(*this),
+ m_viewport,
+ static_cast<ViewportSearchCallback::Delegate &>(*this),
params.m_bookingFilterTasks,
[this, params](Results const & results) {
if (results.IsEndMarker() && params.m_onCompleted)
@@ -226,6 +226,7 @@ bool SearchAPI::SearchInViewport(ViewportSearchParams const & params)
m_delegate.OnBookingFilterParamsUpdate(params.m_bookingFilterTasks);
+ m_viewportParams = params;
return Search(p, false /* forceSearch */);
}
@@ -284,6 +285,14 @@ void SearchAPI::PokeSearchInViewport(bool forceSearch)
auto params = m_searchIntents[static_cast<size_t>(Mode::Viewport)].m_params;
SetViewportIfPossible(params);
params.m_position = m_delegate.GetCurrentPosition();
+ params.m_onResults = ViewportSearchCallback(
+ m_viewport,
+ static_cast<ViewportSearchCallback::Delegate &>(*this),
+ m_viewportParams.m_bookingFilterTasks,
+ [this](Results const & results) {
+ if (results.IsEndMarker() && m_viewportParams.m_onCompleted)
+ RunUITask([p = m_viewportParams, results] { p.m_onCompleted(results); });
+ });
Search(params, forceSearch);
}
diff --git a/map/search_api.hpp b/map/search_api.hpp
index 3e29df3356..4108c9b573 100644
--- a/map/search_api.hpp
+++ b/map/search_api.hpp
@@ -5,6 +5,7 @@
#include "map/everywhere_search_callback.hpp"
#include "map/search_product_info.hpp"
#include "map/viewport_search_callback.hpp"
+#include "map/viewport_search_params.hpp"
#include "search/downloader_search_callback.hpp"
#include "search/engine.hpp"
@@ -33,7 +34,6 @@ namespace search
{
struct BookmarksSearchParams;
struct EverywhereSearchParams;
-struct ViewportSearchParams;
struct DiscoverySearchParams;
}
@@ -179,4 +179,8 @@ private:
m2::RectD m_viewport;
bool m_isViewportInitialized = false;
+
+ // Viewport search callback should be changed every time when SearchAPI::PokeSearchInViewport
+ // is called and we need viewport search params to construct it.
+ search::ViewportSearchParams m_viewportParams;
};
diff --git a/map/viewport_search_callback.cpp b/map/viewport_search_callback.cpp
index 971c26e531..40f89c0866 100644
--- a/map/viewport_search_callback.cpp
+++ b/map/viewport_search_callback.cpp
@@ -1,6 +1,7 @@
#include "map/viewport_search_callback.hpp"
#include "search/result.hpp"
+#include "search/utils.hpp"
#include "base/assert.hpp"
@@ -31,10 +32,11 @@ booking::filter::Types FillBookingFilterTypes(search::Results const & results,
namespace search
{
-ViewportSearchCallback::ViewportSearchCallback(Delegate & delegate,
+ViewportSearchCallback::ViewportSearchCallback(m2::RectD const & viewport, Delegate & delegate,
booking::filter::Tasks const & bookingFilterTasks,
- ViewportSearchParams::OnResults const & onResults)
- : m_delegate(delegate)
+ OnResults const & onResults)
+ : m_viewport(viewport)
+ , m_delegate(delegate)
, m_onResults(onResults)
, m_firstCall(true)
, m_lastResultsSize(0)
@@ -42,7 +44,7 @@ ViewportSearchCallback::ViewportSearchCallback(Delegate & delegate,
{
}
-void ViewportSearchCallback::operator()(Results const & results, SearchParamsBase const & params)
+void ViewportSearchCallback::operator()(Results const & results)
{
ASSERT_LESS_OR_EQUAL(m_lastResultsSize, results.GetCount(), ());
@@ -94,8 +96,8 @@ void ViewportSearchCallback::operator()(Results const & results, SearchParamsBas
if (results.IsEndedNormal() && results.GetType() == Results::Type::Hotels &&
!m_bookingFilterTasks.IsEmpty())
{
- if (params.m_viewport.IsValid())
- m_delegate.FilterAllHotelsInViewport(params.m_viewport, m_bookingFilterTasks);
+ if (m_viewport.IsValid())
+ m_delegate.FilterAllHotelsInViewport(m_viewport, m_bookingFilterTasks);
m_delegate.FilterResultsForHotelsQuery(m_bookingFilterTasks, results, true /* inViewport */);
}
diff --git a/map/viewport_search_callback.hpp b/map/viewport_search_callback.hpp
index 41c7a7942a..78e508c01a 100644
--- a/map/viewport_search_callback.hpp
+++ b/map/viewport_search_callback.hpp
@@ -1,7 +1,6 @@
#pragma once
#include "map/booking_filter_params.hpp"
-#include "map/viewport_search_params.hpp"
#include "search/hotels_classifier.hpp"
#include "search/result.hpp"
@@ -9,8 +8,9 @@
#include "geometry/rect2d.hpp"
-#include <cstdint>
#include <functional>
+#include <string>
+#include <vector>
namespace search
{
@@ -38,14 +38,19 @@ public:
booking::filter::Tasks const & filterTasks) = 0;
};
- ViewportSearchCallback(Delegate & delegate, booking::filter::Tasks const & bookingFilterTasks,
- ViewportSearchParams::OnResults const & onResults);
+ using OnResults = SearchParams::OnResults;
- void operator()(Results const & results, SearchParamsBase const & params);
+ ViewportSearchCallback(m2::RectD const & viewport, Delegate & delegate,
+ booking::filter::Tasks const & bookingFilterTasks,
+ OnResults const & onResults);
+
+ void operator()(Results const & results);
private:
+ m2::RectD m_viewport;
+
Delegate & m_delegate;
- ViewportSearchParams::OnResults m_onResults;
+ OnResults m_onResults;
bool m_firstCall;
size_t m_lastResultsSize;
diff --git a/map/viewport_search_params.hpp b/map/viewport_search_params.hpp
index b87bf706b3..c257c0de65 100644
--- a/map/viewport_search_params.hpp
+++ b/map/viewport_search_params.hpp
@@ -15,7 +15,7 @@ class Results;
struct ViewportSearchParams
{
using OnStarted = std::function<void()>;
- using OnResults = std::function<void(Results const & results)>;
+ using OnCompleted = std::function<void(Results const & results)>;
std::string m_query;
std::string m_inputLocale;
@@ -23,6 +23,6 @@ struct ViewportSearchParams
booking::filter::Tasks m_bookingFilterTasks;
OnStarted m_onStarted;
- OnResults m_onCompleted;
+ OnCompleted m_onCompleted;
};
} // namespace search