File indexing completed on 2024-05-05 05:54:31

0001 /*
0002     SPDX-FileCopyrightText: 2014 Elvis Angelaccio <elvis.angelaccio@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "lap.h"
0008 
0009 #include <QJsonObject>
0010 
0011 Lap::Lap(const QTime& lap) :
0012     m_time {lap}
0013 {}
0014 
0015 QTime Lap::time() const
0016 {
0017     return m_time;
0018 }
0019 
0020 QTime Lap::timeTo(const Lap& lap) const
0021 {
0022     if (lap.time() < m_time)
0023         return {0, 0};
0024 
0025     const auto zero = QTime {0, 0};
0026     return zero.addMSecs(m_time.msecsTo(lap.time()));
0027 }
0028 
0029 void Lap::setRelativeTime(const QString& rel)
0030 {
0031     m_relativeTime = rel;
0032 }
0033 
0034 QString Lap::relativeTime() const
0035 {
0036     return m_relativeTime;
0037 }
0038 
0039 void Lap::setAbsoluteTime(const QString& abs)
0040 {
0041     m_absoluteTime = abs;
0042 }
0043 
0044 QString Lap::absoluteTime() const
0045 {
0046     return m_absoluteTime;
0047 }
0048 
0049 void Lap::setNote(const QString& note)
0050 {
0051     m_note = note;
0052 }
0053 
0054 QString Lap::note() const
0055 {
0056     return m_note;
0057 }
0058 
0059 int Lap::raw() const
0060 {
0061     const auto zero = QTime {0, 0};
0062     return zero.msecsTo(m_time);
0063 }
0064 
0065 void Lap::write(QJsonObject& json) const
0066 {
0067     json[QStringLiteral("time")] = raw();
0068     json[QStringLiteral("reltime")] = m_relativeTime;
0069     json[QStringLiteral("abstime")] = m_absoluteTime;
0070     json[QStringLiteral("note")] = m_note;
0071 }
0072 
0073 Lap Lap::fromJson(const QJsonObject& json)
0074 {
0075     auto lap = fromRawData(json[QStringLiteral("time")].toInt());
0076     lap.m_relativeTime = json[QStringLiteral("reltime")].toString();
0077     lap.m_absoluteTime = json[QStringLiteral("abstime")].toString();
0078     lap.m_note = json[QStringLiteral("note")].toString();
0079 
0080     return lap;
0081 }
0082 
0083 Lap Lap::fromRawData(int rawData)
0084 {
0085     if (rawData < 0) {
0086         return Lap {};
0087     }
0088 
0089     const auto zero = QTime {0, 0};
0090     return Lap {zero.addMSecs(rawData)};
0091 }