diff --git a/map/guides_manager.cpp b/map/guides_manager.cpp index b4c96d36ff..cba2e4ecc6 100644 --- a/map/guides_manager.cpp +++ b/map/guides_manager.cpp @@ -50,7 +50,7 @@ void GuidesManager::UpdateViewport(ScreenBase const & screen) if (screen.GlobalRect().GetLocalRect().IsEmptyInterior()) return; - if (!m_screen.GlobalRect().GetLocalRect().IsEmptyInterior()) + if (IsRequestParamsInitialized()) { auto const scaleStronglyChanged = fabs(m_screen.GetScale() - screen.GetScale()) / m_screen.GetScale() > kScaleEps; @@ -74,7 +74,7 @@ void GuidesManager::UpdateViewport(ScreenBase const & screen) m_screen = screen; m_zoom = zoom; - RequestGuides(m_screen.GlobalRect(), m_zoom); + RequestGuides(); } void GuidesManager::Invalidate() @@ -88,7 +88,7 @@ void GuidesManager::Reconnect() return; ChangeState(GuidesState::Enabled); - RequestGuides(m_screen.GlobalRect(), m_zoom); + RequestGuides(); } void GuidesManager::SetEnabled(bool enabled) @@ -104,7 +104,7 @@ void GuidesManager::SetEnabled(bool enabled) if (!enabled) return; - RequestGuides(m_screen.GlobalRect(), m_zoom); + RequestGuides(); } bool GuidesManager::IsEnabled() const @@ -121,14 +121,14 @@ void GuidesManager::ChangeState(GuidesState newState) m_onStateChanged(newState); } -void GuidesManager::RequestGuides(m2::AnyRectD const & rect, int zoom) +void GuidesManager::RequestGuides() { - if (rect.GetLocalRect().IsEmptyInterior()) + if (!IsRequestParamsInitialized()) return; auto const requestNumber = ++m_requestCounter; m_api.GetGuidesOnMap( - rect, zoom, + m_screen.GlobalRect(), m_zoom, [this](guides_on_map::GuidesOnMap const & guides) { if (m_state == GuidesState::Disabled) return; @@ -146,7 +146,7 @@ void GuidesManager::RequestGuides(m2::AnyRectD const & rect, int zoom) if (m_onGalleryChanged) m_onGalleryChanged(true /* reload */); }, - [this, requestNumber, zoom]() mutable { + [this, requestNumber]() mutable { if (m_state == GuidesState::Disabled || m_state == GuidesState::FatalNetworkError) return; @@ -162,7 +162,7 @@ void GuidesManager::RequestGuides(m2::AnyRectD const & rect, int zoom) // Re-request only when no additional requests enqueued. if (requestNumber == m_requestCounter) - RequestGuides(m_screen.GlobalRect(), zoom); + RequestGuides(); }); } @@ -320,3 +320,22 @@ void GuidesManager::UpdateActiveGuide() } m_activeGuide.clear(); } + +bool GuidesManager::IsRequestParamsInitialized() const +{ + return m_screen.GlobalRect().GetLocalRect().IsEmptyInterior() || m_zoom != 0; +} + +std::string DebugPrint(GuidesManager::GuidesState state) +{ + switch (state) + { + case GuidesManager::GuidesState::Disabled: return "Disabled"; + case GuidesManager::GuidesState::Enabled: return "Enabled"; + case GuidesManager::GuidesState::HasData: return "HasData"; + case GuidesManager::GuidesState::NoData: return "NoData"; + case GuidesManager::GuidesState::NetworkError: return "NetworkError"; + case GuidesManager::GuidesState::FatalNetworkError: return "FatalNetworkError"; + } + UNREACHABLE(); +} diff --git a/map/guides_manager.hpp b/map/guides_manager.hpp index 200ab2b4c0..ac0d75e250 100644 --- a/map/guides_manager.hpp +++ b/map/guides_manager.hpp @@ -108,13 +108,15 @@ public: private: void ChangeState(GuidesState newState); - void RequestGuides(m2::AnyRectD const & rect, int zoom); + void RequestGuides(); void Clear(); bool IsGuideDownloaded(std::string const & guideId) const; void UpdateGuidesMarks(); void UpdateActiveGuide(); + bool IsRequestParamsInitialized() const; + GuidesState m_state = GuidesState::Disabled; GuidesStateChangedFn m_onStateChanged; GuidesGalleryChangedFn m_onGalleryChanged;