File indexing completed on 2024-05-12 04:42:45
0001 /* 0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "stopoverutil_p.h" 0008 #include "timeutil_p.h" 0009 0010 #include <KPublicTransport/Stopover> 0011 #include <KPublicTransport/StopoverRequest> 0012 0013 #include <QDateTime> 0014 #include <QTimeZone> 0015 0016 using namespace KPublicTransport; 0017 0018 static QDateTime clipSeconds(QDateTime dt) 0019 { 0020 dt.setTime({dt.time().hour(), dt.time().minute()}); 0021 return dt; 0022 } 0023 0024 bool StopoverUtil::timeLessThan(const StopoverRequest &req, const Stopover &lhs, const Stopover &rhs) 0025 { 0026 if (req.mode() == StopoverRequest::QueryDeparture) { 0027 return clipSeconds(lhs.scheduledDepartureTime()) < clipSeconds(rhs.scheduledDepartureTime()); 0028 } else { 0029 return clipSeconds(lhs.scheduledArrivalTime()) < clipSeconds(rhs.scheduledArrivalTime()); 0030 } 0031 } 0032 0033 bool StopoverUtil::timeEqual(const StopoverRequest &req, const Stopover &lhs, const Stopover &rhs) 0034 { 0035 if (req.mode() == StopoverRequest::QueryDeparture) { 0036 return clipSeconds(lhs.scheduledDepartureTime()) == clipSeconds(rhs.scheduledDepartureTime()); 0037 } else { 0038 return clipSeconds(lhs.scheduledArrivalTime()) == clipSeconds(rhs.scheduledArrivalTime()); 0039 } 0040 } 0041 0042 void StopoverUtil::applyTimeZone(Stopover &dep, const QTimeZone &tz) 0043 { 0044 dep.setScheduledDepartureTime(TimeUtil::applyTimeZone(dep.scheduledDepartureTime(), tz)); 0045 dep.setExpectedDepartureTime(TimeUtil::applyTimeZone(dep.expectedDepartureTime(), tz)); 0046 dep.setScheduledArrivalTime(TimeUtil::applyTimeZone(dep.scheduledArrivalTime(), tz)); 0047 dep.setExpectedArrivalTime(TimeUtil::applyTimeZone(dep.expectedArrivalTime(), tz)); 0048 }