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 }