File indexing completed on 2024-05-05 05:54:31
0001 /* 0002 SPDX-FileCopyrightText: 2015 Elvis Angelaccio <elvis.angelaccio@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "session.h" 0008 0009 #include <QJsonArray> 0010 #include <QJsonObject> 0011 0012 Session::Session(int time, const QDateTime& date) : 0013 m_time {time}, 0014 m_date {date} 0015 {} 0016 0017 void Session::setName(const QString& name) 0018 { 0019 m_name = name; 0020 } 0021 0022 void Session::setNote(const QString& note) 0023 { 0024 m_note = note; 0025 } 0026 0027 void Session::setTime(int time) 0028 { 0029 m_time = time; 0030 } 0031 0032 void Session::setDate(const QDateTime& date) 0033 { 0034 m_date = date; 0035 } 0036 0037 void Session::setIsOutdated(bool isOutdated) 0038 { 0039 m_isOutdated = isOutdated; 0040 } 0041 0042 QString Session::name() const 0043 { 0044 return m_name; 0045 } 0046 0047 QString Session::note() const 0048 { 0049 return m_note; 0050 } 0051 0052 int Session::time() const 0053 { 0054 return m_time; 0055 } 0056 0057 QDateTime Session::date() const 0058 { 0059 return m_date; 0060 } 0061 0062 bool Session::isOutdated() const 0063 { 0064 return m_isOutdated; 0065 } 0066 0067 QVector<Lap> Session::laps() const 0068 { 0069 return m_laps; 0070 } 0071 0072 bool Session::isEmpty() const 0073 { 0074 return m_time == 0; 0075 } 0076 0077 void Session::addLap(const Lap& lap) 0078 { 0079 m_laps.append(lap); 0080 } 0081 0082 void Session::clear() 0083 { 0084 m_time = 0; 0085 m_laps.clear(); 0086 } 0087 0088 void Session::write(QJsonObject& json) const 0089 { 0090 json[QStringLiteral("name")] = m_name; 0091 json[QStringLiteral("note")] = m_note; 0092 json[QStringLiteral("time")] = m_time; 0093 json[QStringLiteral("date")] = m_date.toString(Qt::ISODate); 0094 0095 auto laps = QJsonArray {}; 0096 0097 for (const auto& lap : m_laps) { 0098 auto object = QJsonObject {}; 0099 lap.write(object); 0100 laps.append(object); 0101 } 0102 0103 json[QStringLiteral("laps")] = laps; 0104 } 0105 0106 Session Session::fromJson(const QJsonObject& json) 0107 { 0108 auto session = Session {}; 0109 0110 session.m_name = json[QStringLiteral("name")].toString(); 0111 session.m_note = json[QStringLiteral("note")].toString(); 0112 session.m_time = json[QStringLiteral("time")].toInt(); 0113 session.m_date = QDateTime::fromString(json[QStringLiteral("date")].toString(), Qt::ISODate); 0114 0115 const auto laps = json[QStringLiteral("laps")].toArray(); 0116 for (const auto& lap : laps) { 0117 session.addLap(Lap::fromJson(lap.toObject())); 0118 } 0119 0120 return session; 0121 } 0122 0123 bool Session::operator==(const Session& right) const 0124 { 0125 return m_date == right.m_date; 0126 } 0127 0128 bool Session::operator!=(const Session& right) const 0129 { 0130 return !(*this == right); 0131 } 0132