From 718ba4908fdf8ba367d97a48fa674e403f79b938 Mon Sep 17 00:00:00 2001 From: Sergey Magidovich Date: Sat, 26 Dec 2015 12:27:59 +0300 Subject: [PATCH] Rename WorkingDays to OpeningDays. Implement TimeTableSet to OpeningHours convesion. --- editor/editor_tests/opening_hours_ui_test.cpp | 22 +- editor/editor_tests/ui2oh_test.cpp | 217 +++++++++++++++++- editor/opening_hours_ui.cpp | 12 +- editor/opening_hours_ui.hpp | 11 +- editor/ui2oh.cpp | 131 +++++++++-- .../OpeningHours/MWMOpeningHoursSection.mm | 10 +- 6 files changed, 350 insertions(+), 53 deletions(-) diff --git a/editor/editor_tests/opening_hours_ui_test.cpp b/editor/editor_tests/opening_hours_ui_test.cpp index f2966175f7..700c339feb 100644 --- a/editor/editor_tests/opening_hours_ui_test.cpp +++ b/editor/editor_tests/opening_hours_ui_test.cpp @@ -23,7 +23,7 @@ UNIT_TEST(TestTimeTable) TEST(tt.RemoveWorkingDay(osmoh::Weekday::Friday), ()); TEST(!tt.RemoveWorkingDay(osmoh::Weekday::Saturday), ()); - TEST_EQUAL(tt.GetWorkingDays(), (set{osmoh::Weekday::Saturday}), ()); + TEST_EQUAL(tt.GetOpeningDays(), (set{osmoh::Weekday::Saturday}), ()); } } @@ -167,7 +167,7 @@ UNIT_TEST(TestAppendTimeTable) TEST(tt.Commit(), ()); TEST(tts.Append(tts.GetComplementTimeTable()), ()); - TEST_EQUAL(tts.Back().GetWorkingDays(), (set{osmoh::Weekday::Sunday, + TEST_EQUAL(tts.Back().GetOpeningDays(), (set{osmoh::Weekday::Sunday, osmoh::Weekday::Saturday}), ()); } @@ -179,7 +179,7 @@ UNIT_TEST(TestAppendTimeTable) } TEST(tts.Append(tts.GetComplementTimeTable()), ()); - TEST_EQUAL(tts.Back().GetWorkingDays(), (set{osmoh::Weekday::Monday, + TEST_EQUAL(tts.Back().GetOpeningDays(), (set{osmoh::Weekday::Monday, osmoh::Weekday::Tuesday}), ()); TEST(!tts.GetComplementTimeTable().IsValid(), ()); @@ -202,8 +202,8 @@ UNIT_TEST(TestAppendTimeTable) TEST(tts.Append(tt), ()); TEST_EQUAL(tts.Size(), 2, ()); - TEST_EQUAL(tts.Front().GetWorkingDays().size(), 4, ()); - TEST_EQUAL(tts.Back().GetWorkingDays().size(), 3, ()); + TEST_EQUAL(tts.Front().GetOpeningDays().size(), 4, ()); + TEST_EQUAL(tts.Back().GetOpeningDays().size(), 3, ()); TEST(!tts.GetComplementTimeTable().IsValid(), ()); } @@ -215,16 +215,16 @@ UNIT_TEST(TestAppendTimeTable) TEST(tts.Append(tt), ()); TEST_EQUAL(tts.Size(), 2, ()); - TEST_EQUAL(tts.Front().GetWorkingDays().size(), 6, ()); - TEST_EQUAL(tts.Back().GetWorkingDays().size(), 1, ()); + TEST_EQUAL(tts.Front().GetOpeningDays().size(), 6, ()); + TEST_EQUAL(tts.Back().GetOpeningDays().size(), 1, ()); TEST(!tts.GetComplementTimeTable().IsValid(), ()); tt = tts.Front(); tt.AddWorkingDay(osmoh::Weekday::Friday); TEST(!tts.Append(tt), ()); - TEST_EQUAL(tts.Front().GetWorkingDays().size(), 6, ()); - TEST_EQUAL(tts.Back().GetWorkingDays().size(), 1, ()); + TEST_EQUAL(tts.Front().GetOpeningDays().size(), 6, ()); + TEST_EQUAL(tts.Back().GetOpeningDays().size(), 1, ()); } { TimeTableSet tts; @@ -236,8 +236,8 @@ UNIT_TEST(TestAppendTimeTable) } TEST_EQUAL(tts.Size(), 2, ()); - TEST_EQUAL(tts.Front().GetWorkingDays().size(), 6, ()); - TEST_EQUAL(tts.Back().GetWorkingDays().size(), 1, ()); + TEST_EQUAL(tts.Front().GetOpeningDays().size(), 6, ()); + TEST_EQUAL(tts.Back().GetOpeningDays().size(), 1, ()); auto tt = tts.Front(); tt.AddWorkingDay(osmoh::Weekday::Friday); diff --git a/editor/editor_tests/ui2oh_test.cpp b/editor/editor_tests/ui2oh_test.cpp index 4c38baab8e..2fd4ec0e65 100644 --- a/editor/editor_tests/ui2oh_test.cpp +++ b/editor/editor_tests/ui2oh_test.cpp @@ -6,7 +6,17 @@ using namespace osmoh; using namespace editor; using namespace editor::ui; -UNIT_TEST(ConvertOpeningHours) +namespace +{ +string ToString(OpeningHours const & oh) +{ + stringstream sstr; + sstr << oh.GetRule(); + return sstr.str(); +} +} // namespace + +UNIT_TEST(OpeningHours2TimeTableSt) { { OpeningHours oh("Mo-Fr 08:00-22:00"); @@ -19,7 +29,7 @@ UNIT_TEST(ConvertOpeningHours) auto const tt = tts.Front(); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 5, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 5, ()); TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ()); TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ()); } @@ -34,7 +44,7 @@ UNIT_TEST(ConvertOpeningHours) auto const tt = tts.Front(); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 5, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 5, ()); TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ()); TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ()); @@ -53,7 +63,7 @@ UNIT_TEST(ConvertOpeningHours) auto const tt = tts.Front(); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 5, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 5, ()); TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ()); TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ()); @@ -77,13 +87,13 @@ UNIT_TEST(ConvertOpeningHours) { auto const tt = tts.Get(0); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 5, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 5, ()); } { auto const tt = tts.Get(1); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 2, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 2, ()); } } { @@ -121,26 +131,213 @@ UNIT_TEST(ConvertOpeningHours) auto const tt = tts.Front(); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 7, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 7, ()); TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 11, ()); TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 24, ()); } { + OpeningHours oh("Mo-Fr 08:00-10:00; Su, Sa 13:00-22:00"); + TEST(oh.IsValid(), ()); + TimeTableSet tts; - TEST(ConvertOpeningHours("Mo-Fr 08:00-10:00\n Su, Sa 13:00-22:00", tts), ()); + TEST(ConvertOpeningHours(oh, tts), ()); TEST_EQUAL(tts.Size(), 2, ()); { auto const tt = tts.Get(0); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 5, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 5, ()); } { auto const tt = tts.Get(1); TEST(!tt.IsTwentyFourHours(), ()); - TEST_EQUAL(tt.GetWorkingDays().size(), 2, ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 2, ()); + } + } + { + OpeningHours oh("Mo-Fr 08:00-13:00,14:00-20:00; Sa 09:00-13:00,14:00-18:00; Su off"); + TEST(oh.IsValid(), ()); + + TimeTableSet tts; + + TEST(ConvertOpeningHours(oh, tts), ()); + TEST_EQUAL(tts.Size(), 2, ()); + + { + auto const tt = tts.Get(0); + TEST(!tt.IsTwentyFourHours(), ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 5, ()); + } + + { + auto const tt = tts.Get(1); + TEST(!tt.IsTwentyFourHours(), ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 1, ()); } } } + +UNIT_TEST(TimeTableSt2OpeningHours) +{ + { + TimeTableSet tts; + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday, + osmoh::Weekday::Friday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 22_h}), ()); + TEST(tt.Commit(), ()); + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Fr 08:00-22:00", ()); + } + { + TimeTableSet tts; + + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday, + osmoh::Weekday::Friday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 22_h}), ()); + TEST(tt.AddExcludeTime({12_h, 13_h}), ()); + TEST(tt.Commit(), ()); + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Fr 08:00-12:00, 13:00-22:00", ()); + } + { + TimeTableSet tts; + + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday, + osmoh::Weekday::Friday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 22_h}), ()); + TEST(tt.AddExcludeTime({10_h, 11_h}), ()); + TEST(tt.AddExcludeTime({12_h + 30_min, 13_h}), ()); + TEST(tt.Commit(), ()); + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Fr 08:00-10:00, 11:00-12:30, 13:00-22:00", ()); + } + { + TimeTableSet tts; + + { + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday}), ()); + + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 10_h}), ()); + TEST(tt.Commit(), ()); + } + { + TimeTable tt; + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Friday, + osmoh::Weekday::Saturday, + osmoh::Weekday::Sunday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({13_h, 22_h}), ()); + TEST(tts.Append(tt), ()); + } + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Th 08:00-10:00; Fr-Su 13:00-22:00", ()); + } + { + TimeTableSet tts; + + { + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Friday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 10_h}), ()); + TEST(tt.Commit(), ()); + } + { + TimeTable tt; + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Saturday, + osmoh::Weekday::Sunday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({13_h, 22_h}), ()); + TEST(tts.Append(tt), ()); + } + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo, We, Fr 08:00-10:00; Sa-Su 13:00-22:00", ()); + } + { + TimeTableSet tts; + + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Sunday, + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday, + osmoh::Weekday::Friday, + osmoh::Weekday::Saturday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({11_h, 24_h}), ()); + TEST(tt.Commit(), ()); + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Su 11:00-24:00", ()); + } + { + TimeTableSet tts; + + { + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday}), ()); + + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 20_h}), ()); + TEST(tt.AddExcludeTime({13_h, 14_h}), ()); + TEST(tt.Commit(), ()); + } + { + TimeTable tt; + TEST(tt.SetOpeningDays({osmoh::Weekday::Saturday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({9_h, 18_h}), ()); + TEST(tt.AddExcludeTime({13_h, 14_h}), ()); + TEST(tts.Append(tt), ()); + } + + TEST_EQUAL(ToString(ConvertOpeningHours(tts)), + "Mo, We-Th 08:00-13:00, 14:00-20:00; " + "Sa 09:00-13:00, 14:00-18:00", ()); + } +} diff --git a/editor/opening_hours_ui.cpp b/editor/opening_hours_ui.cpp index 0d85f57d77..014dc3df84 100644 --- a/editor/opening_hours_ui.cpp +++ b/editor/opening_hours_ui.cpp @@ -146,7 +146,7 @@ TimeTable TimeTable::GetPredefinedTimeTable() return tt; } -bool TimeTable::SetWorkingDays(TOpeningDays const & days) +bool TimeTable::SetOpeningDays(TOpeningDays const & days) { if (days.empty()) return false; @@ -296,7 +296,7 @@ TOpeningDays TimeTableSet::GetUnhandledDays() const }; for (auto const tt : *this) - for (auto const day : tt.GetWorkingDays()) + for (auto const day : tt.GetOpeningDays()) days.erase(day); return days; @@ -309,7 +309,7 @@ TimeTable TimeTableSet::GetComplementTimeTable() const // it has no effect. tt.SetOpeningTime(tt.GetPredefinedOpeningTime()); tt.SetTwentyFourHours(true); - tt.SetWorkingDays(GetUnhandledDays()); + tt.SetOpeningDays(GetUnhandledDays()); return tt; } @@ -364,11 +364,11 @@ bool TimeTableSet::UpdateByIndex(TimeTableSet & ttSet, size_t const index) // Remove all days of updated timetable from all other timetables. TOpeningDays days; - set_difference(std::begin(ttSet[i].GetWorkingDays()), std::end(ttSet[i].GetWorkingDays()), - std::begin(updated.GetWorkingDays()), std::end(updated.GetWorkingDays()), + set_difference(std::begin(ttSet[i].GetOpeningDays()), std::end(ttSet[i].GetOpeningDays()), + std::begin(updated.GetOpeningDays()), std::end(updated.GetOpeningDays()), inserter(days, std::end(days))); - if (!ttSet[i].SetWorkingDays(days)) + if (!ttSet[i].SetOpeningDays(days)) return false; } diff --git a/editor/opening_hours_ui.hpp b/editor/opening_hours_ui.hpp index 2dd3543b0f..f0bbc39816 100644 --- a/editor/opening_hours_ui.hpp +++ b/editor/opening_hours_ui.hpp @@ -20,8 +20,8 @@ public: bool IsTwentyFourHours() const { return m_isTwentyFourHours; } void SetTwentyFourHours(bool const on) { m_isTwentyFourHours = on; } - TOpeningDays const & GetWorkingDays() const { return m_weekdays; } - bool SetWorkingDays(TOpeningDays const & days); + TOpeningDays const & GetOpeningDays() const { return m_weekdays; } + bool SetOpeningDays(TOpeningDays const & days); void AddWorkingDay(osmoh::Weekday const wd); bool RemoveWorkingDay(osmoh::Weekday const wd); @@ -71,7 +71,8 @@ using TTimeTableProxy = TimeTableProxyBase; class TimeTableSet : vector { public: - using vector::vector; + using TBase = vector; + using TBase::TBase; TimeTableSet(); @@ -91,9 +92,11 @@ public: bool Replace(TimeTable const & tt, size_t const index); + TBase::const_iterator begin() const { return TBase::begin(); } + TBase::const_iterator end() const { return TBase::end(); } + private: static bool UpdateByIndex(TimeTableSet & ttSet, size_t const index); - }; } // namespace ui } // namespace editor diff --git a/editor/ui2oh.cpp b/editor/ui2oh.cpp index a77bfce3fc..87ea976694 100644 --- a/editor/ui2oh.cpp +++ b/editor/ui2oh.cpp @@ -10,25 +10,25 @@ namespace { void SetUpWeekdays(osmoh::Weekdays const & wds, editor::ui::TimeTable & tt) { - set workingDays; + set openingDays; for (auto const & wd : wds.GetWeekdayRanges()) { if (wd.HasSunday()) - workingDays.insert(osmoh::Weekday::Sunday); + openingDays.insert(osmoh::Weekday::Sunday); if (wd.HasMonday()) - workingDays.insert(osmoh::Weekday::Monday); + openingDays.insert(osmoh::Weekday::Monday); if (wd.HasTuesday()) - workingDays.insert(osmoh::Weekday::Tuesday); + openingDays.insert(osmoh::Weekday::Tuesday); if (wd.HasWednesday()) - workingDays.insert(osmoh::Weekday::Wednesday); + openingDays.insert(osmoh::Weekday::Wednesday); if (wd.HasThursday()) - workingDays.insert(osmoh::Weekday::Thursday); + openingDays.insert(osmoh::Weekday::Thursday); if (wd.HasFriday()) - workingDays.insert(osmoh::Weekday::Friday); + openingDays.insert(osmoh::Weekday::Friday); if (wd.HasSaturday()) - workingDays.insert(osmoh::Weekday::Saturday); + openingDays.insert(osmoh::Weekday::Saturday); } - tt.SetWorkingDays(workingDays); + tt.SetOpeningDays(openingDays); } void SetUpTimeTable(osmoh::TTimespans spans, editor::ui::TimeTable & tt) @@ -51,13 +51,108 @@ void SetUpTimeTable(osmoh::TTimespans spans, editor::ui::TimeTable & tt) for (auto i = 0; i + 1 < spans.size(); ++i) tt.AddExcludeTime({spans[i].GetEnd(), spans[i + 1].GetStart()}); } + +int32_t WeekdayNumber(osmoh::Weekday const wd) { return static_cast(wd); } + +constexpr uint32_t kDaysInWeek = 7; +int32_t NextWeekdayNumber(osmoh::Weekday const wd) +{ + auto dayNumber = WeekdayNumber(wd); + return (dayNumber + kDaysInWeek) % kDaysInWeek + 1; +} + +vector RemoveInversion(editor::ui::TOpeningDays const & days) +{ + vector result(begin(days), end(days)); + if (NextWeekdayNumber(result.back()) != WeekdayNumber(result.front())) + return result; + + auto inversion = adjacent_find(begin(result), end(result), + [](osmoh::Weekday const a, osmoh::Weekday const b) + { + return NextWeekdayNumber(a) != WeekdayNumber(b) || + a == osmoh::Weekday::Sunday; + }); + + if (inversion != end(result) && ++inversion != end(result)) + rotate(begin(result), inversion, end(result)); + + return result; +} + +using TWeekdays = vector; + +vector SplitIntoIntervals(editor::ui::TOpeningDays const & days) +{ + vector result; + auto const & noInversionDays = RemoveInversion(days); + + auto previous = *begin(noInversionDays); + result.push_back({previous}); + + for (auto it = next(begin(noInversionDays)); it != end(noInversionDays); ++it) + { + if (NextWeekdayNumber(previous) != WeekdayNumber(*it)) + result.push_back({}); + result.back().push_back(*it); + previous = *it; + } + + return result; +} + +osmoh::Weekdays MakeWeekdays(editor::ui::TimeTable const & tt) +{ + osmoh::Weekdays wds; + + for (auto const & daysInterval : SplitIntoIntervals(tt.GetOpeningDays())) + { + osmoh::WeekdayRange wdr; + wdr.SetStart(*begin(daysInterval)); + if (daysInterval.size() > 1) + wdr.SetEnd(*(prev(end(daysInterval)))); + + wds.AddWeekdayRange(wdr); + } + + return wds; +} + +osmoh::TTimespans MakeTimespans(editor::ui::TimeTable const & tt) +{ + + if (tt.IsTwentyFourHours()) + return {}; + + auto const & excludeTime = tt.GetExcludeTime(); + if (excludeTime.empty()) + return {tt.GetOpeningTime()}; + + osmoh::TTimespans spans{{tt.GetOpeningTime().GetStart(), excludeTime[0].GetStart()}}; + + for (auto i = 0; i + 1 < excludeTime.size(); ++i) + spans.emplace_back(excludeTime[i].GetEnd(), excludeTime[i + 1].GetStart()); + + spans.emplace_back(excludeTime.back().GetEnd(), tt.GetOpeningTime().GetEnd()); + + return spans; +} } // namespace namespace editor { -osmoh::OpeningHours ConvertOpeningHours(ui::TimeTableSet const & tt) +osmoh::OpeningHours ConvertOpeningHours(ui::TimeTableSet const & tts) { - return string(); // TODO(mgsergio): Implement me. + osmoh::TRuleSequences rule; + for (auto const & tt : tts) + { + osmoh::RuleSequence rulePart; + rulePart.SetWeekdays(MakeWeekdays(tt)); + rulePart.SetTimes(MakeTimespans(tt)); + rule.push_back(rulePart); + } + + return rule; } bool ConvertOpeningHours(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts) @@ -77,6 +172,14 @@ bool ConvertOpeningHours(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts) { ui::TimeTable tt; + // TODO(mgsergio): We don't handle cases with speciffic time off. + // I.e. Mo-Fr 08-20; Fr 18:00-17:00 off. + // Can be implemented later. + if (rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Closed || + rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Unknown || + rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Comment) + continue; + if (rulePart.HasWeekdays()) SetUpWeekdays(rulePart.GetWeekdays(), tt); @@ -98,10 +201,4 @@ bool ConvertOpeningHours(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts) return true; } - -bool ConvertOpeningHours(string oh, ui::TimeTableSet & tts) -{ - replace(begin(oh), end(oh), '\n', ';'); - return ConvertOpeningHours(osmoh::OpeningHours(oh), tts); -} } // namespace editor diff --git a/iphone/Maps/Classes/Editor/OpeningHours/MWMOpeningHoursSection.mm b/iphone/Maps/Classes/Editor/OpeningHours/MWMOpeningHoursSection.mm index 015350314e..19528947d4 100644 --- a/iphone/Maps/Classes/Editor/OpeningHours/MWMOpeningHoursSection.mm +++ b/iphone/Maps/Classes/Editor/OpeningHours/MWMOpeningHoursSection.mm @@ -230,9 +230,9 @@ using namespace osmoh; - (void)addSelectedDay:(Weekday)day { TTimeTableProxy timeTable = [self getTimeTableProxy]; - TOpeningDays openingDays(timeTable.GetWorkingDays()); + TOpeningDays openingDays(timeTable.GetOpeningDays()); openingDays.insert(day); - timeTable.SetWorkingDays(openingDays); + timeTable.SetOpeningDays(openingDays); timeTable.Commit(); [self refresh:YES]; } @@ -240,9 +240,9 @@ using namespace osmoh; - (void)removeSelectedDay:(Weekday)day { TTimeTableProxy timeTable = [self getTimeTableProxy]; - TOpeningDays openingDays(timeTable.GetWorkingDays()); + TOpeningDays openingDays(timeTable.GetOpeningDays()); openingDays.erase(day); - timeTable.SetWorkingDays(openingDays); + timeTable.SetOpeningDays(openingDays); timeTable.Commit(); [self refresh:YES]; } @@ -250,7 +250,7 @@ using namespace osmoh; - (BOOL)containsSelectedDay:(Weekday)day { TTimeTableProxy timeTable = [self getTimeTableProxy]; - TOpeningDays const & openingDays = timeTable.GetWorkingDays(); + TOpeningDays const & openingDays = timeTable.GetOpeningDays(); return openingDays.find(day) != openingDays.end(); }