From 4071ef5adf815c174510e486b1e66296e0f0b961 Mon Sep 17 00:00:00 2001 From: David Martinez <47610359+dvdmrtnz@users.noreply.github.com> Date: Fri, 10 Jun 2022 17:53:52 +0200 Subject: [PATCH] [search] Get the minutes until open/closed for the search results Signed-off-by: David Martinez <47610359+dvdmrtnz@users.noreply.github.com> --- search/intermediate_result.cpp | 6 +++++- search/result.hpp | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/search/intermediate_result.cpp b/search/intermediate_result.cpp index 35ee098be8..dda446aca8 100644 --- a/search/intermediate_result.cpp +++ b/search/intermediate_result.cpp @@ -248,8 +248,12 @@ void FillDetails(FeatureType & ft, Result::Details & details) /// @todo We should check closed/open time for specific feature's timezone. time_t const now = time(nullptr); if (oh.IsValid() && !oh.IsUnknown(now)) + { details.m_isOpenNow = oh.IsOpen(now) ? osm::Yes : osm::No; - // In else case value us osm::Unknown, it's set in preview's constructor. + // In else case value is osm::Unknown, it's set in preview's constructor. + details.m_minutesUntilOpen = (oh.GetNextTimeOpen(now) - now) / 60; + details.m_minutesUntilClosed = (oh.GetNextTimeClosed(now) - now) / 60; + } } if (strings::to_uint(ft.GetMetadata(feature::Metadata::FMD_STARS), details.m_stars)) diff --git a/search/result.hpp b/search/result.hpp index 29b6b344fb..ac58e84e01 100644 --- a/search/result.hpp +++ b/search/result.hpp @@ -65,6 +65,10 @@ public: // Valid for any result. osm::YesNoUnknown m_isOpenNow = osm::Unknown; + uint16_t m_minutesUntilOpen = 0; + + uint16_t m_minutesUntilClosed = 0; + bool m_isInitialized = false; }; @@ -98,6 +102,8 @@ public: bool IsHotel() const { return m_details.m_isHotel; } osm::YesNoUnknown IsOpenNow() const { return m_details.m_isOpenNow; } + uint16_t GetMinutesUntilOpen() const { return m_details.m_minutesUntilOpen; } + uint16_t GetMinutesUntilClosed() const { return m_details.m_minutesUntilClosed; } int GetStarsCount() const { return m_details.m_stars; } bool IsSuggest() const;