File indexing completed on 2024-05-12 04:42:43
0001 /* 0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "journeyutil_p.h" 0008 #include "stopoverutil_p.h" 0009 #include "timeutil_p.h" 0010 0011 #include <KPublicTransport/Journey> 0012 #include <KPublicTransport/Stopover> 0013 0014 #include <QDateTime> 0015 #include <QTimeZone> 0016 0017 using namespace KPublicTransport; 0018 0019 QDateTime JourneyUtil::firstTransportDeparture(const Journey &jny) 0020 { 0021 for (const auto §ion : jny.sections()) { 0022 if (section.mode() == JourneySection::PublicTransport) { 0023 return section.scheduledDepartureTime(); 0024 } 0025 } 0026 0027 return jny.scheduledDepartureTime(); 0028 } 0029 0030 bool JourneyUtil::firstTransportDepartureLessThan(const Journey &lhs, const Journey &rhs) 0031 { 0032 return firstTransportDeparture(lhs) < firstTransportDeparture(rhs); 0033 } 0034 0035 bool JourneyUtil::firstTransportDepartureEqual(const Journey &lhs, const Journey &rhs) 0036 { 0037 return firstTransportDeparture(lhs) == firstTransportDeparture(rhs); 0038 } 0039 0040 void JourneyUtil::applyTimeZone(Journey &jny, const QTimeZone &tz) 0041 { 0042 auto sections = std::move(jny.takeSections()); 0043 for (auto &sec : sections) { 0044 sec.setScheduledDepartureTime(TimeUtil::applyTimeZone(sec.scheduledDepartureTime(), tz)); 0045 sec.setExpectedDepartureTime(TimeUtil::applyTimeZone(sec.expectedDepartureTime(), tz)); 0046 sec.setScheduledArrivalTime(TimeUtil::applyTimeZone(sec.scheduledArrivalTime(), tz)); 0047 sec.setExpectedArrivalTime(TimeUtil::applyTimeZone(sec.expectedArrivalTime(), tz)); 0048 0049 auto stops = sec.takeIntermediateStops(); 0050 for (auto &stop : stops) { 0051 StopoverUtil::applyTimeZone(stop, tz); 0052 } 0053 sec.setIntermediateStops(std::move(stops)); 0054 } 0055 jny.setSections(std::move(sections)); 0056 }