From 81f70e02b0cec38b6d8117b40fc3c9feb8a19cb4 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Fri, 8 May 2020 08:51:57 +0300 Subject: [PATCH] [guides on map] guides layer is disabled after 8 hours in background --- map/framework.cpp | 14 +++++++++++--- map/framework.hpp | 1 + map/guides_manager.cpp | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 79eea87eb4..b41323651d 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -155,7 +155,8 @@ char const kShowDebugInfo[] = "DebugInfo"; char const kICUDataFile[] = "icudt57l.dat"; #endif -double const kLargeFontsScaleFactor = 1.6; +auto constexpr kLargeFontsScaleFactor = 1.6; +auto constexpr kGuidesEnabledInBackgroundMaxHours = 8; size_t constexpr kMaxTrafficCacheSizeBytes = 64 /* Mb */ * 1024 * 1024; // TODO! @@ -1499,8 +1500,15 @@ void Framework::EnterForeground() m_startForegroundTime = base::Timer::LocalTime(); if (m_drapeEngine != nullptr && m_startBackgroundTime != 0.0) { - auto const timeInBackground = m_startForegroundTime - m_startBackgroundTime; - m_drapeEngine->SetTimeInBackground(timeInBackground); + auto const secondsInBackground = m_startForegroundTime - m_startBackgroundTime; + m_drapeEngine->SetTimeInBackground(secondsInBackground); + + if (m_guidesManager.IsEnabled() && + secondsInBackground / 60 / 60 > kGuidesEnabledInBackgroundMaxHours) + { + m_guidesManager.SetEnabled(false); + SaveGuidesEnabled(false); + } } m_trafficManager.OnEnterForeground(); diff --git a/map/framework.hpp b/map/framework.hpp index 68e98d8bc8..adb2e5a274 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -215,6 +215,7 @@ protected: drape_ptr m_drapeEngine; + // Time in seconds. double m_startForegroundTime = 0.0; double m_startBackgroundTime = 0.0; diff --git a/map/guides_manager.cpp b/map/guides_manager.cpp index c922150f03..7307a85b2f 100644 --- a/map/guides_manager.cpp +++ b/map/guides_manager.cpp @@ -26,6 +26,8 @@ GuidesManager::GuidesState GuidesManager::GetState() const void GuidesManager::SetStateListener(GuidesStateChangedFn const & onStateChanged) { m_onStateChanged = onStateChanged; + if (m_onStateChanged != nullptr) + m_onStateChanged(m_state); } void GuidesManager::UpdateViewport(ScreenBase const & screen)