diff --git a/map/guides_manager.cpp b/map/guides_manager.cpp index 7425bd43eb..5d4f36dfd6 100644 --- a/map/guides_manager.cpp +++ b/map/guides_manager.cpp @@ -20,6 +20,25 @@ void GuidesManager::Invalidate() // TODO: Implement. } +void GuidesManager::SetEnabled(bool enabled) +{ + ChangeState(enabled ? GuidesState::Enabled : GuidesState::Disabled); +} + +bool GuidesManager::IsEnabled() const +{ + return m_state != GuidesState::Disabled; +} + +void GuidesManager::ChangeState(GuidesState newState) +{ + if (m_state == newState) + return; + m_state = newState; + if (m_onStateChangedFn != nullptr) + m_onStateChangedFn(newState); +} + GuidesManager::GuidesGallery GuidesManager::GetGallery() const { // TODO: Implement. diff --git a/map/guides_manager.hpp b/map/guides_manager.hpp index cdbae2eef1..a0098ec143 100644 --- a/map/guides_manager.hpp +++ b/map/guides_manager.hpp @@ -28,6 +28,9 @@ public: void UpdateViewport(ScreenBase const & screen); void Invalidate(); + void SetEnabled(bool enabled); + bool IsEnabled() const; + struct GuidesGallery { struct Item @@ -60,6 +63,7 @@ public: std::string m_title; std::string m_subTitle; Type m_type = Type::City; + bool m_downloaded = false; boost::optional m_cityParams; boost::optional m_outdoorsParams; }; @@ -75,6 +79,8 @@ public: void SetGalleryListener(GuidesGalleryChangedFn const & onGalleryChangedFn); private: + void ChangeState(GuidesState newState); + GuidesState m_state = GuidesState::Disabled; GuidesStateChangedFn m_onStateChangedFn; GuidesGalleryChangedFn m_onGalleryChangedFn;