File indexing completed on 2024-05-12 05:22:30

0001 /*
0002  * SPDX-FileCopyrightText: 2021 Daniel Vrátil <dvratil@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only
0005  * SPDX-License-Identifier: LGPL-3.0-only
0006  * SPDX-License-Identifier: LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "residence.h"
0010 
0011 #include "fieldmetadata.h"
0012 #include "peopleservice.h"
0013 
0014 #include <QJsonArray>
0015 #include <QJsonObject>
0016 #include <QJsonValue>
0017 #include <QSharedData>
0018 
0019 #include <algorithm>
0020 
0021 namespace KGAPI2::People
0022 {
0023 class Residence::Private : public QSharedData
0024 {
0025 public:
0026     explicit Private() = default;
0027     Private(const Private &) = default;
0028     Private(Private &&) noexcept = delete;
0029     Private &operator=(const Private &) = delete;
0030     Private &operator=(Private &&) noexcept = delete;
0031     ~Private() = default;
0032 
0033     bool operator==(const Private &other) const
0034     {
0035         return value == other.value && metadata == other.metadata && current == other.current;
0036     }
0037 
0038     bool operator!=(const Private &other) const
0039     {
0040         return !(*this == other);
0041     }
0042 
0043     QString value{};
0044     FieldMetadata metadata{};
0045     bool current{};
0046 };
0047 
0048 Residence::Residence()
0049     : d(new Private)
0050 {
0051 }
0052 
0053 Residence::Residence(const Residence &) = default;
0054 Residence::Residence(Residence &&) noexcept = default;
0055 Residence &Residence::operator=(const Residence &) = default;
0056 Residence &Residence::operator=(Residence &&) noexcept = default;
0057 Residence::~Residence() = default;
0058 
0059 bool Residence::operator==(const Residence &other) const
0060 {
0061     return *d == *other.d;
0062 }
0063 
0064 bool Residence::operator!=(const Residence &other) const
0065 {
0066     return !(*this == other);
0067 }
0068 
0069 QString Residence::value() const
0070 {
0071     return d->value;
0072 }
0073 
0074 void Residence::setValue(const QString &value)
0075 {
0076     d->value = value;
0077 }
0078 FieldMetadata Residence::metadata() const
0079 {
0080     return d->metadata;
0081 }
0082 
0083 void Residence::setMetadata(const FieldMetadata &value)
0084 {
0085     d->metadata = value;
0086 }
0087 bool Residence::current() const
0088 {
0089     return d->current;
0090 }
0091 
0092 void Residence::setCurrent(bool value)
0093 {
0094     d->current = value;
0095 }
0096 
0097 Residence Residence::fromJSON(const QJsonObject &obj)
0098 {
0099     Q_UNUSED(obj);
0100     return Residence();
0101 }
0102 
0103 QJsonValue Residence::toJSON() const
0104 {
0105     QJsonObject obj;
0106 
0107     PeopleUtils::addValueToJsonObjectIfValid(obj, "value", d->value);
0108     // Skip, field metadata is only useful for receiving -> PeopleUtils::addValueToJsonObjectIfValid(obj, "metadata", d->metadata.toJSON());
0109     PeopleUtils::addValueToJsonObjectIfValid(obj, "current", d->current);
0110     return obj;
0111 }
0112 
0113 } // namespace KGAPI2::People