[guides on map] Close gallery on map moving.

This commit is contained in:
Daria Volvenkova 2020-05-18 16:33:34 +03:00 committed by Arsentiy Milchakov
parent ba86a3f0d8
commit fb7c4fdaf4
3 changed files with 31 additions and 2 deletions

View file

@ -382,6 +382,11 @@ Framework::Framework(FrameworkParams const & params)
bind(&Framework::GetMwmsByRect, this, _1, false /* rough */))
, m_isolinesManager(m_featuresFetcher.GetDataSource(),
bind(&Framework::GetMwmsByRect, this, _1, false /* rough */))
, m_guidesManager([this]()
{
if (m_currentPlacePageInfo && m_currentPlacePageInfo->IsGuide())
DeactivateMapSelection(true /* notifyUI */);
})
, m_routingManager(
RoutingManager::Callbacks(
[this]() -> DataSource & { return m_featuresFetcher.GetDataSource(); },

View file

@ -24,6 +24,12 @@ auto constexpr kRequestAttemptsCount = 3;
auto constexpr kScaleEps = 0.1115;
} // namespace
GuidesManager::GuidesManager(CloseGalleryFn && closeGalleryFn)
: m_closeGallery(std::move(closeGalleryFn))
{
CHECK(m_closeGallery != nullptr, ());
}
GuidesManager::GuidesState GuidesManager::GetState() const
{
return m_state;
@ -71,6 +77,8 @@ void GuidesManager::UpdateViewport(ScreenBase const & screen)
}
}
m_closeGallery();
m_screen = screen;
m_zoom = zoom;
@ -143,8 +151,15 @@ void GuidesManager::RequestGuides()
UpdateGuidesMarks();
if (m_onGalleryChanged)
m_onGalleryChanged(true /* reload */);
if (m_activeGuide.empty())
{
m_closeGallery();
}
else
{
if (m_onGalleryChanged)
m_onGalleryChanged(true /* reload */);
}
},
[this, requestNumber]() mutable {
if (m_state == GuidesState::Disabled || m_state == GuidesState::FatalNetworkError)
@ -173,6 +188,7 @@ void GuidesManager::Clear()
m_errorRequestsCount = 0;
UpdateGuidesMarks();
m_closeGallery();
}
GuidesManager::GuidesGallery GuidesManager::GetGallery() const
@ -295,6 +311,9 @@ void GuidesManager::OnClusterSelected(GuidesClusterMark const & mark, ScreenBase
void GuidesManager::OnGuideSelected(GuideMark const & mark)
{
if (mark.GetGuideId() == m_activeGuide)
return;
auto es = m_bmManager->GetEditSession();
es.ClearGroup(UserMark::Type::GUIDE_SELECTION);
es.CreateUserMark<GuideSelectionMark>(mark.GetPivot());

View file

@ -77,6 +77,9 @@ public:
std::vector<Item> m_items;
};
using CloseGalleryFn = std::function<void()>;
explicit GuidesManager(CloseGalleryFn && closeGalleryFn);
GuidesState GetState() const;
using GuidesStateChangedFn = std::function<void(GuidesState state)>;
@ -117,6 +120,8 @@ private:
bool IsRequestParamsInitialized() const;
CloseGalleryFn m_closeGallery;
GuidesState m_state = GuidesState::Disabled;
GuidesStateChangedFn m_onStateChanged;
GuidesGalleryChangedFn m_onGalleryChanged;