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